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 6cbe20b..0000000 Binary files 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 and /dev/null differ diff --git a/tests/four_3rd_order_smd_lc_filters.rs b/tests/four_3rd_order_smd_lc_filters.rs deleted file mode 100644 index 99e4b46..0000000 --- a/tests/four_3rd_order_smd_lc_filters.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::fs::File; - -use petgraph::{ - unionfind::UnionFind, - visit::{EdgeRef, IntoEdgeReferences, NodeIndexable}, -}; -use topola::{ - autorouter::{invoker::Invoker, Autorouter}, - drawing::graph::GetMaybeNet, - dsn::design::DsnDesign, - graph::GetNodeIndex, - triangulation::GetTrianvertexIndex, -}; - -mod common; - -#[test] -fn test() { - let design = DsnDesign::load_from_file( - "tests/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/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/prerouted_lm317_breakout/fp-info-cache b/tests/multilayer/prerouted_lm317_breakout/fp-info-cache similarity index 100% rename from tests/data/prerouted_lm317_breakout/fp-info-cache rename to tests/multilayer/prerouted_lm317_breakout/fp-info-cache diff --git a/tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.dsn b/tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.dsn similarity index 100% rename from tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.dsn rename to tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.dsn diff --git a/tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pcb b/tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pcb similarity index 100% rename from tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pcb rename to tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pcb diff --git a/tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_prl b/tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_prl similarity index 100% rename from tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_prl rename to tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_prl diff --git a/tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pro b/tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pro similarity index 100% rename from tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pro rename to tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_pro diff --git a/tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_sch b/tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_sch similarity index 100% rename from tests/data/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_sch rename to tests/multilayer/prerouted_lm317_breakout/prerouted_lm317_breakout.kicad_sch diff --git a/tests/data/prerouted_lm317_breakout/unrouted_lm317_breakout.dsn b/tests/multilayer/prerouted_lm317_breakout/unrouted_lm317_breakout.dsn similarity index 100% rename from tests/data/prerouted_lm317_breakout/unrouted_lm317_breakout.dsn rename to tests/multilayer/prerouted_lm317_breakout/unrouted_lm317_breakout.dsn diff --git a/tests/single_layer.rs b/tests/single_layer.rs new file mode 100644 index 0000000..22deaf4 --- /dev/null +++ b/tests/single_layer.rs @@ -0,0 +1,119 @@ +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_0603_breakout() { + let design = + DsnDesign::load_from_file("tests/single_layer/data/0603_breakout/0603_breakout.dsn") + .unwrap(); + let mut invoker = Invoker::new(Autorouter::new(design.make_board()).unwrap()); + let file = File::open("tests/single_layer/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)); + } +} + +#[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); -}