mirror of https://codeberg.org/topola/topola.git
tests: test routed connections and number of ratlines in 0603 breakout
This commit is contained in:
parent
e86ce9836a
commit
338adc32a3
|
|
@ -0,0 +1,54 @@
|
|||
use petgraph::{
|
||||
unionfind::UnionFind,
|
||||
visit::{EdgeRef, IntoEdgeReferences, NodeIndexable},
|
||||
};
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
use topola::{
|
||||
autorouter::Autorouter, dsn::design::DsnDesign, graph::GetNodeIndex,
|
||||
router::EmptyRouterObserver, triangulation::GetVertexIndex,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn test() {
|
||||
let design = DsnDesign::load_from_file("tests/data/0603_breakout/0603_breakout.dsn").unwrap();
|
||||
let layout_arc_mutex = Arc::new(Mutex::new(design.make_layout()));
|
||||
|
||||
let mut autorouter = Autorouter::new(layout_arc_mutex.clone()).unwrap();
|
||||
autorouter.autoroute(0, &mut EmptyRouterObserver);
|
||||
|
||||
let layout = layout_arc_mutex.lock().unwrap();
|
||||
let mut unionfind = UnionFind::new(layout.drawing().geometry().graph().node_bound());
|
||||
|
||||
for edge in layout.drawing().geometry().graph().edge_references() {
|
||||
unionfind.union(edge.source(), edge.target());
|
||||
}
|
||||
|
||||
assert_eq!(
|
||||
autorouter
|
||||
.ratsnest()
|
||||
.graph()
|
||||
.edge_indices()
|
||||
.collect::<Vec<_>>()
|
||||
.len(),
|
||||
2
|
||||
);
|
||||
|
||||
for ratline in autorouter.ratsnest().graph().edge_references() {
|
||||
let from_index = autorouter
|
||||
.ratsnest()
|
||||
.graph()
|
||||
.node_weight(ratline.source())
|
||||
.unwrap()
|
||||
.vertex_index()
|
||||
.node_index();
|
||||
let to_index = autorouter
|
||||
.ratsnest()
|
||||
.graph()
|
||||
.node_weight(ratline.target())
|
||||
.unwrap()
|
||||
.vertex_index()
|
||||
.node_index();
|
||||
assert!(unionfind.equiv(from_index, to_index));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue