From eea1da604ff87994e5a8511b627153128b85bc27 Mon Sep 17 00:00:00 2001 From: Mikolaj Wielgus Date: Thu, 6 Jun 2024 14:49:50 +0200 Subject: [PATCH] tests: keep single-layer and multilayer test data in separate dirs --- tests/0603_breakout.rs | 78 ------------ tests/common/mod.rs | 114 +++++++++++++++++ ...ht_female_tht_female-2024-05-11_150104.zip | Bin 12775 -> 0 bytes tests/four_3rd_order_smd_lc_filters.rs | 32 ----- .../prerouted_lm317_breakout/fp-info-cache | 0 .../prerouted_lm317_breakout.dsn | 0 .../prerouted_lm317_breakout.kicad_pcb | 0 .../prerouted_lm317_breakout.kicad_prl | 0 .../prerouted_lm317_breakout.kicad_pro | 0 .../prerouted_lm317_breakout.kicad_sch | 0 .../unrouted_lm317_breakout.dsn | 0 tests/single_layer.rs | 119 ++++++++++++++++++ .../data/0603_breakout/0603_breakout.dsn | 0 .../0603_breakout/0603_breakout.kicad_pcb | 0 .../0603_breakout/0603_breakout.kicad_prl | 0 .../0603_breakout/0603_breakout.kicad_pro | 0 .../0603_breakout/0603_breakout.kicad_sch | 0 .../data/0603_breakout/autoroute_all.cmd | 0 .../data/0603_breakout/fp-info-cache | 0 .../~0603_breakout.kicad_pcb.lck} | 0 .../de9_tht_female_to_tht_female.dsn | 0 .../de9_tht_female_to_tht_female.kicad_pcb | 0 .../de9_tht_female_to_tht_female.kicad_prl | 0 .../de9_tht_female_to_tht_female.kicad_pro | 0 .../de9_tht_female_to_tht_female.kicad_sch | 0 .../fp-info-cache | 0 ...de9_tht_female_to_tht_female.kicad_pcb.lck | 1 + .../autoroute_signals.cmd | 0 .../four_3rd_order_smd_lc_filters.dsn | 0 .../four_3rd_order_smd_lc_filters.kicad_pcb | 0 .../four_3rd_order_smd_lc_filters.kicad_prl | 0 .../four_3rd_order_smd_lc_filters.kicad_pro | 0 .../four_3rd_order_smd_lc_filters.kicad_sch | 0 .../fp-info-cache | 0 .../data/test/fp-info-cache | 0 tests/{ => single_layer}/data/test/test.dsn | 0 .../data/test/test.kicad_pcb | 0 .../data/test/test.kicad_prl | 0 .../data/test/test.kicad_pro | 0 .../autoroute_all.cmd | 0 .../tht_diode_bridge_rectifier}/fp-info-cache | 0 .../tht_diode_bridge_rectifier.dsn} | 2 +- .../tht_diode_bridge_rectifier.kicad_pcb} | 12 +- .../tht_diode_bridge_rectifier.kicad_prl} | 2 +- .../tht_diode_bridge_rectifier.kicad_pro} | 4 +- .../tht_diode_bridge_rectifier.kicad_sch} | 12 +- ...single_layer_tht_diode_bridge_rectifier.rs | 37 ------ 47 files changed, 250 insertions(+), 163 deletions(-) delete mode 100644 tests/0603_breakout.rs create mode 100644 tests/common/mod.rs delete mode 100644 tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female-backups/de9_tht_female_tht_female-2024-05-11_150104.zip delete mode 100644 tests/four_3rd_order_smd_lc_filters.rs rename tests/{data => multilayer}/prerouted_lm317_breakout/fp-info-cache (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/prerouted_lm317_breakout.dsn (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pcb (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_prl (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pro (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_sch (100%) rename tests/{data => multilayer}/prerouted_lm317_breakout/unrouted_lm317_breakout.dsn (100%) create mode 100644 tests/single_layer.rs rename tests/{ => single_layer}/data/0603_breakout/0603_breakout.dsn (100%) rename tests/{ => single_layer}/data/0603_breakout/0603_breakout.kicad_pcb (100%) rename tests/{ => single_layer}/data/0603_breakout/0603_breakout.kicad_prl (100%) rename tests/{ => single_layer}/data/0603_breakout/0603_breakout.kicad_pro (100%) rename tests/{ => single_layer}/data/0603_breakout/0603_breakout.kicad_sch (100%) rename tests/{ => single_layer}/data/0603_breakout/autoroute_all.cmd (100%) rename tests/{ => single_layer}/data/0603_breakout/fp-info-cache (100%) rename tests/{data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck => single_layer/data/0603_breakout/~0603_breakout.kicad_pcb.lck} (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.dsn (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pcb (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_prl (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pro (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_sch (100%) rename tests/{ => single_layer}/data/de9_tht_female_to_tht_female/fp-info-cache (100%) create mode 100644 tests/single_layer/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pcb (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_prl (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pro (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_sch (100%) rename tests/{ => single_layer}/data/four_3rd_order_smd_lc_filters/fp-info-cache (100%) rename tests/{ => single_layer}/data/test/fp-info-cache (100%) rename tests/{ => single_layer}/data/test/test.dsn (100%) rename tests/{ => single_layer}/data/test/test.kicad_pcb (100%) rename tests/{ => single_layer}/data/test/test.kicad_prl (100%) rename tests/{ => single_layer}/data/test/test.kicad_pro (100%) rename tests/{data/single_layer_tht_diode_bridge_rectifier => single_layer/data/tht_diode_bridge_rectifier}/autoroute_all.cmd (100%) rename tests/{data/single_layer_tht_diode_bridge_rectifier => single_layer/data/tht_diode_bridge_rectifier}/fp-info-cache (100%) rename tests/{data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn => single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn} (97%) rename tests/{data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pcb => single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pcb} (99%) rename tests/{data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_prl => single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_prl} (94%) rename tests/{data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pro => single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pro} (98%) rename tests/{data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_sch => single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_sch} (98%) delete mode 100644 tests/single_layer_tht_diode_bridge_rectifier.rs diff --git a/tests/0603_breakout.rs b/tests/0603_breakout.rs deleted file mode 100644 index bd91581..0000000 --- a/tests/0603_breakout.rs +++ /dev/null @@ -1,78 +0,0 @@ -use petgraph::{ - unionfind::UnionFind, - visit::{EdgeRef, IntoEdgeReferences, NodeIndexable}, -}; -use std::{ - fs::File, - sync::{Arc, Mutex}, -}; - -use topola::{ - autorouter::{invoker::Invoker, Autorouter}, - dsn::design::DsnDesign, - graph::GetNodeIndex, - router::EmptyRouterObserver, - triangulation::GetTrianvertexIndex, -}; - -#[test] -fn test() { - let design = DsnDesign::load_from_file("tests/data/0603_breakout/0603_breakout.dsn").unwrap(); - let mut invoker = Invoker::new(Autorouter::new(design.make_board()).unwrap()); - let file = File::open("tests/data/0603_breakout/autoroute_all.cmd").unwrap(); - invoker.replay(serde_json::from_reader(file).unwrap()); - - let mut unionfind = UnionFind::new( - invoker - .autorouter() - .board() - .layout() - .drawing() - .geometry() - .graph() - .node_bound(), - ); - - for edge in invoker - .autorouter() - .board() - .layout() - .drawing() - .geometry() - .graph() - .edge_references() - { - unionfind.union(edge.source(), edge.target()); - } - - assert_eq!( - invoker - .autorouter() - .ratsnest() - .graph() - .edge_indices() - .collect::>() - .len(), - 2 - ); - - for ratline in invoker.autorouter().ratsnest().graph().edge_references() { - let from_index = invoker - .autorouter() - .ratsnest() - .graph() - .node_weight(ratline.source()) - .unwrap() - .trianvertex_index() - .node_index(); - let to_index = invoker - .autorouter() - .ratsnest() - .graph() - .node_weight(ratline.target()) - .unwrap() - .trianvertex_index() - .node_index(); - assert_eq!(unionfind.find(from_index), unionfind.find(to_index)); - } -} diff --git a/tests/common/mod.rs b/tests/common/mod.rs new file mode 100644 index 0000000..91812f0 --- /dev/null +++ b/tests/common/mod.rs @@ -0,0 +1,114 @@ +use petgraph::{unionfind::UnionFind, visit::NodeIndexable}; +use topola::{ + autorouter::{board::Board, Autorouter}, + drawing::{ + graph::{GetLayer, GetMaybeNet}, + rules::RulesTrait, + }, + graph::GetNodeIndex, +}; + +pub fn assert_single_layer_groundless_autoroute( + autorouter: &mut Autorouter, + layername: &str, +) { + for ratline in autorouter.ratsnest().graph().edge_indices() { + // Accessing endpoints may create new dots because apex construction is lazy, so we access + // tem all before starting unionfind, as it requires a constant index bound. + let _ = autorouter.ratline_endpoints(ratline); + } + + let mut unionfind = UnionFind::new( + autorouter + .board() + .layout() + .drawing() + .geometry() + .graph() + .node_bound(), + ); + + for primitive in autorouter.board().layout().drawing().primitive_nodes() { + for joined in autorouter + .board() + .layout() + .drawing() + .geometry() + .joineds(primitive) + { + unionfind.union(primitive.node_index(), joined.node_index()); + } + } + + for ratline in autorouter.ratsnest().graph().edge_indices() { + let (source_dot, target_dot) = autorouter.ratline_endpoints(ratline); + + let source_layer = autorouter + .board() + .layout() + .drawing() + .primitive(source_dot) + .layer(); + let target_layer = autorouter + .board() + .layout() + .drawing() + .primitive(target_dot) + .layer(); + + if let (Some(source_layername), Some(target_layername)) = ( + autorouter.board().layername(source_layer), + autorouter.board().layername(target_layer), + ) { + dbg!(source_layername, target_layername); + assert_eq!(source_layername, target_layername); + + if source_layername != layername { + continue; + } + } else { + assert!(false); + } + + let source_net = autorouter + .board() + .layout() + .drawing() + .primitive(source_dot) + .maybe_net(); + let target_net = autorouter + .board() + .layout() + .drawing() + .primitive(target_dot) + .maybe_net(); + dbg!(source_net, target_net); + assert_eq!(source_net, target_net); + + let net = source_net.unwrap(); + + if let Some(netname) = autorouter.board().netname(net) { + // We don't route ground. + if netname != "GND" { + dbg!(source_dot, target_dot); + assert_eq!( + unionfind.find(source_dot.node_index()), + unionfind.find(target_dot.node_index()) + ); + } + } + } +} + +pub fn assert_band_length( + board: &Board, + source: &str, + target: &str, + length: f64, + epsilon: f64, +) { + let band = board.band_between_pins(source, target).unwrap(); + let band_length = board.layout().band_length(band); + dbg!(band_length); + assert!((band_length - length).abs() < epsilon); +} diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female-backups/de9_tht_female_tht_female-2024-05-11_150104.zip b/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female-backups/de9_tht_female_tht_female-2024-05-11_150104.zip deleted file mode 100644 index 6cbe20b94fe584276c9ee302a973b77863115a55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12775 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 + .len(), + 2 + ); + + for ratline in invoker.autorouter().ratsnest().graph().edge_references() { + let from_index = invoker + .autorouter() + .ratsnest() + .graph() + .node_weight(ratline.source()) + .unwrap() + .trianvertex_index() + .node_index(); + let to_index = invoker + .autorouter() + .ratsnest() + .graph() + .node_weight(ratline.target()) + .unwrap() + .trianvertex_index() + .node_index(); + assert_eq!(unionfind.find(from_index), unionfind.find(to_index)); + } +} + +#[test] +fn test_tht_diode_bridge_rectifier() { + let design = DsnDesign::load_from_file( + "tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn", + ); + let board = design.unwrap().make_board(); + + let mut invoker = Invoker::new(Autorouter::new(board).unwrap()); + let file = + File::open("tests/single_layer/data/tht_diode_bridge_rectifier/autoroute_all.cmd").unwrap(); + invoker.replay(serde_json::from_reader(file).unwrap()); + + let (mut autorouter, ..) = invoker.destruct(); + + common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu"); + common::assert_band_length(autorouter.board(), "J2-2", "D4-2", 15511.0, 0.5); +} + +#[test] +fn test_four_3rd_order_smd_lc_filters() { + let design = DsnDesign::load_from_file( + "tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn", + ); + let board = design.unwrap().make_board(); + + let mut invoker = Invoker::new(Autorouter::new(board).unwrap()); + let file = + File::open("tests/single_layer/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd") + .unwrap(); + invoker.replay(serde_json::from_reader(file).unwrap()); + + let (mut autorouter, ..) = invoker.destruct(); + + common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu"); +} diff --git a/tests/data/0603_breakout/0603_breakout.dsn b/tests/single_layer/data/0603_breakout/0603_breakout.dsn similarity index 100% rename from tests/data/0603_breakout/0603_breakout.dsn rename to tests/single_layer/data/0603_breakout/0603_breakout.dsn diff --git a/tests/data/0603_breakout/0603_breakout.kicad_pcb b/tests/single_layer/data/0603_breakout/0603_breakout.kicad_pcb similarity index 100% rename from tests/data/0603_breakout/0603_breakout.kicad_pcb rename to tests/single_layer/data/0603_breakout/0603_breakout.kicad_pcb diff --git a/tests/data/0603_breakout/0603_breakout.kicad_prl b/tests/single_layer/data/0603_breakout/0603_breakout.kicad_prl similarity index 100% rename from tests/data/0603_breakout/0603_breakout.kicad_prl rename to tests/single_layer/data/0603_breakout/0603_breakout.kicad_prl diff --git a/tests/data/0603_breakout/0603_breakout.kicad_pro b/tests/single_layer/data/0603_breakout/0603_breakout.kicad_pro similarity index 100% rename from tests/data/0603_breakout/0603_breakout.kicad_pro rename to tests/single_layer/data/0603_breakout/0603_breakout.kicad_pro diff --git a/tests/data/0603_breakout/0603_breakout.kicad_sch b/tests/single_layer/data/0603_breakout/0603_breakout.kicad_sch similarity index 100% rename from tests/data/0603_breakout/0603_breakout.kicad_sch rename to tests/single_layer/data/0603_breakout/0603_breakout.kicad_sch diff --git a/tests/data/0603_breakout/autoroute_all.cmd b/tests/single_layer/data/0603_breakout/autoroute_all.cmd similarity index 100% rename from tests/data/0603_breakout/autoroute_all.cmd rename to tests/single_layer/data/0603_breakout/autoroute_all.cmd diff --git a/tests/data/0603_breakout/fp-info-cache b/tests/single_layer/data/0603_breakout/fp-info-cache similarity index 100% rename from tests/data/0603_breakout/fp-info-cache rename to tests/single_layer/data/0603_breakout/fp-info-cache diff --git a/tests/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck b/tests/single_layer/data/0603_breakout/~0603_breakout.kicad_pcb.lck similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck rename to tests/single_layer/data/0603_breakout/~0603_breakout.kicad_pcb.lck diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.dsn b/tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.dsn similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.dsn rename to tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.dsn diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pcb b/tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pcb similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pcb rename to tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pcb diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_prl b/tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_prl similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_prl rename to tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_prl diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pro b/tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pro similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pro rename to tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_pro diff --git a/tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_sch b/tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_sch similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_sch rename to tests/single_layer/data/de9_tht_female_to_tht_female/de9_tht_female_to_tht_female.kicad_sch diff --git a/tests/data/de9_tht_female_to_tht_female/fp-info-cache b/tests/single_layer/data/de9_tht_female_to_tht_female/fp-info-cache similarity index 100% rename from tests/data/de9_tht_female_to_tht_female/fp-info-cache rename to tests/single_layer/data/de9_tht_female_to_tht_female/fp-info-cache diff --git a/tests/single_layer/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck b/tests/single_layer/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck new file mode 100644 index 0000000..5cac09d --- /dev/null +++ b/tests/single_layer/data/de9_tht_female_to_tht_female/~de9_tht_female_to_tht_female.kicad_pcb.lck @@ -0,0 +1 @@ +{"hostname":"luckmann","username":"mikolaj"} \ No newline at end of file diff --git a/tests/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd b/tests/single_layer/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/autoroute_signals.cmd diff --git a/tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn b/tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.dsn diff --git a/tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pcb b/tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pcb similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pcb rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pcb diff --git a/tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_prl b/tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_prl similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_prl rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_prl diff --git a/tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pro b/tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pro similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pro rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_pro diff --git a/tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_sch b/tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_sch similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_sch rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/four_3rd_order_smd_lc_filters.kicad_sch diff --git a/tests/data/four_3rd_order_smd_lc_filters/fp-info-cache b/tests/single_layer/data/four_3rd_order_smd_lc_filters/fp-info-cache similarity index 100% rename from tests/data/four_3rd_order_smd_lc_filters/fp-info-cache rename to tests/single_layer/data/four_3rd_order_smd_lc_filters/fp-info-cache diff --git a/tests/data/test/fp-info-cache b/tests/single_layer/data/test/fp-info-cache similarity index 100% rename from tests/data/test/fp-info-cache rename to tests/single_layer/data/test/fp-info-cache diff --git a/tests/data/test/test.dsn b/tests/single_layer/data/test/test.dsn similarity index 100% rename from tests/data/test/test.dsn rename to tests/single_layer/data/test/test.dsn diff --git a/tests/data/test/test.kicad_pcb b/tests/single_layer/data/test/test.kicad_pcb similarity index 100% rename from tests/data/test/test.kicad_pcb rename to tests/single_layer/data/test/test.kicad_pcb diff --git a/tests/data/test/test.kicad_prl b/tests/single_layer/data/test/test.kicad_prl similarity index 100% rename from tests/data/test/test.kicad_prl rename to tests/single_layer/data/test/test.kicad_prl diff --git a/tests/data/test/test.kicad_pro b/tests/single_layer/data/test/test.kicad_pro similarity index 100% rename from tests/data/test/test.kicad_pro rename to tests/single_layer/data/test/test.kicad_pro diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/autoroute_all.cmd b/tests/single_layer/data/tht_diode_bridge_rectifier/autoroute_all.cmd similarity index 100% rename from tests/data/single_layer_tht_diode_bridge_rectifier/autoroute_all.cmd rename to tests/single_layer/data/tht_diode_bridge_rectifier/autoroute_all.cmd diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/fp-info-cache b/tests/single_layer/data/tht_diode_bridge_rectifier/fp-info-cache similarity index 100% rename from tests/data/single_layer_tht_diode_bridge_rectifier/fp-info-cache rename to tests/single_layer/data/tht_diode_bridge_rectifier/fp-info-cache diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn similarity index 97% rename from tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn rename to tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn index 305f909..40557ff 100644 --- a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn +++ b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn @@ -1,4 +1,4 @@ -(pcb /home/mikolaj/proj/topola/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn +(pcb /home/mikolaj/proj/topola/tests/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.dsn (parser (string_quote ") (space_in_quoted_tokens on) diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pcb b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pcb similarity index 99% rename from tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pcb rename to tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pcb index 836e591..8446129 100644 --- a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pcb +++ b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pcb @@ -177,7 +177,7 @@ (property ki_fp_filters "D*Bridge* D*Rectifier*") (path "/43ab64df-926a-4e01-8a98-67d2c800c849") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start 9 1.92) @@ -559,7 +559,7 @@ (property ki_fp_filters "D*Bridge* D*Rectifier*") (path "/aae449ee-03c9-4537-996f-100e098107e1") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start 1.16 -1.92) @@ -915,7 +915,7 @@ (property ki_fp_filters "TerminalBlock*:*") (path "/33bb9157-e6b0-4858-a7ac-9a21f6b6b928") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start 7.62 -3.81) @@ -1169,7 +1169,7 @@ (property ki_fp_filters "TerminalBlock*:*") (path "/ae531f5f-c43e-4c22-8182-faed35881b46") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start -2.54 3.81) @@ -1449,7 +1449,7 @@ (property ki_fp_filters "D*Bridge* D*Rectifier*") (path "/12bc0990-5e61-4c01-a094-e653d3a60893") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start 1.16 -1.92) @@ -1831,7 +1831,7 @@ (property ki_fp_filters "D*Bridge* D*Rectifier*") (path "/1f9b7479-94b6-46d1-90eb-c315c0b77b34") (sheetname "Root") - (sheetfile "single_layer_tht_diode_bridge_rectifier.kicad_sch") + (sheetfile "tht_diode_bridge_rectifier.kicad_sch") (attr through_hole) (fp_line (start 9 1.92) diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_prl b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_prl similarity index 94% rename from tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_prl rename to tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_prl index 04fcf60..83861b3 100644 --- a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_prl +++ b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_prl @@ -74,7 +74,7 @@ "ssh_key": "" }, "meta": { - "filename": "single_layer_tht_diode_bridge_rectifier.kicad_prl", + "filename": "tht_diode_bridge_rectifier.kicad_prl", "version": 3 }, "project": { diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pro b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pro similarity index 98% rename from tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pro rename to tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pro index 3f0dc67..54db84e 100644 --- a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_pro +++ b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_pro @@ -430,7 +430,7 @@ "pinned_symbol_libs": [] }, "meta": { - "filename": "single_layer_tht_diode_bridge_rectifier.kicad_pro", + "filename": "tht_diode_bridge_rectifier.kicad_pro", "version": 1 }, "net_settings": { @@ -467,7 +467,7 @@ "netlist": "", "plot": "", "pos_files": "", - "specctra_dsn": "single_layer_tht_diode_bridge_rectifier.dsn", + "specctra_dsn": "tht_diode_bridge_rectifier.dsn", "step": "", "svg": "", "vrml": "" diff --git a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_sch b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_sch similarity index 98% rename from tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_sch rename to tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_sch index f2bf35b..bf0659b 100644 --- a/tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.kicad_sch +++ b/tests/single_layer/data/tht_diode_bridge_rectifier/tht_diode_bridge_rectifier.kicad_sch @@ -622,7 +622,7 @@ (uuid "eb13c935-c65a-4af4-91d0-e1c7f144534f") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "D4") (unit 1) @@ -708,7 +708,7 @@ (uuid "55798640-e0b9-4318-88ae-05a588dcc8de") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "D2") (unit 1) @@ -775,7 +775,7 @@ (uuid "76873a01-09a0-41b5-a565-c34fa72949b4") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "J2") (unit 1) @@ -863,7 +863,7 @@ (uuid "b88d0fbd-eb5d-4478-bc85-190a180d8763") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "D3") (unit 1) @@ -950,7 +950,7 @@ (uuid "0215e937-8c55-4ec8-aadd-547f2b1cb992") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "D1") (unit 1) @@ -1019,7 +1019,7 @@ (uuid "3fa85bee-cae3-47ab-a12d-2dccf43e2d48") ) (instances - (project "single_layer_tht_diode_bridge_rectifier" + (project "tht_diode_bridge_rectifier" (path "/71099ece-09c5-443c-9dd7-b57178821ade" (reference "J1") (unit 1) diff --git a/tests/single_layer_tht_diode_bridge_rectifier.rs b/tests/single_layer_tht_diode_bridge_rectifier.rs deleted file mode 100644 index bfc14ba..0000000 --- a/tests/single_layer_tht_diode_bridge_rectifier.rs +++ /dev/null @@ -1,37 +0,0 @@ -use std::fs::File; - -use petgraph::{ - unionfind::UnionFind, - visit::{EdgeRef, IntoEdgeReferences, NodeIndexable}, -}; -use topola::{ - autorouter::{invoker::Invoker, Autorouter}, - drawing::{ - graph::{GetLayer, GetMaybeNet}, - primitive::GetInnerOuter, - }, - dsn::design::DsnDesign, - graph::GetNodeIndex, - layout::NodeIndex, - triangulation::GetTrianvertexIndex, -}; - -mod common; - -#[test] -fn test() { - let design = DsnDesign::load_from_file( - "tests/data/single_layer_tht_diode_bridge_rectifier/single_layer_tht_diode_bridge_rectifier.dsn", - ); - let board = design.unwrap().make_board(); - - let mut invoker = Invoker::new(Autorouter::new(board).unwrap()); - let file = - File::open("tests/data/single_layer_tht_diode_bridge_rectifier/autoroute_all.cmd").unwrap(); - invoker.replay(serde_json::from_reader(file).unwrap()); - - let (mut autorouter, ..) = invoker.destruct(); - - common::assert_single_layer_groundless_autoroute(&mut autorouter, "F.Cu"); - common::assert_band_length(autorouter.board(), "J2-2", "D4-2", 15511.0, 0.5); -}