mirror of https://codeberg.org/topola/topola.git
test: Make tests attempt re-autoroute after undoing all
This commit is contained in:
parent
d7129354a1
commit
f09aa053b6
|
|
@ -6,7 +6,7 @@ use std::fs::File;
|
|||
use std::io::BufReader;
|
||||
use topola::autorouter::invoker::Invoker;
|
||||
use topola::autorouter::Autorouter;
|
||||
use topola::layout::LayoutEdit;
|
||||
use topola::board::edit::BoardEdit;
|
||||
use topola::specctra::design::SpecctraDesign;
|
||||
|
||||
fn main() -> Result<(), std::io::Error> {
|
||||
|
|
@ -14,7 +14,7 @@ fn main() -> Result<(), std::io::Error> {
|
|||
let design_bufread = BufReader::new(design_file);
|
||||
|
||||
let design = SpecctraDesign::load(design_bufread).unwrap();
|
||||
let board = design.make_board(&mut LayoutEdit::new());
|
||||
let board = design.make_board(&mut BoardEdit::new());
|
||||
|
||||
let invoker = Invoker::new(Autorouter::new(board).unwrap());
|
||||
|
||||
|
|
|
|||
|
|
@ -7,15 +7,14 @@ use std::{fs::File, io::BufReader};
|
|||
use petgraph::{stable_graph::NodeIndex, unionfind::UnionFind, visit::NodeIndexable};
|
||||
use topola::{
|
||||
autorouter::{
|
||||
history::HistoryError,
|
||||
history::{History, HistoryError},
|
||||
invoker::{Invoker, InvokerError},
|
||||
Autorouter,
|
||||
},
|
||||
board::{AccessMesadata, Board},
|
||||
board::{edit::BoardEdit, AccessMesadata, Board},
|
||||
drawing::graph::GetMaybeNet,
|
||||
geometry::{shape::MeasureLength, GenericNode, GetLayer},
|
||||
graph::{GetPetgraphIndex, MakeRef},
|
||||
layout::LayoutEdit,
|
||||
router::{navmesh::Navmesh, RouterOptions},
|
||||
specctra::{design::SpecctraDesign, mesadata::SpecctraMesadata},
|
||||
};
|
||||
|
|
@ -24,7 +23,7 @@ pub fn load_design(filename: &str) -> Autorouter<SpecctraMesadata> {
|
|||
let design_file = File::open(filename).unwrap();
|
||||
let design_bufread = BufReader::new(design_file);
|
||||
let design = SpecctraDesign::load(design_bufread).unwrap();
|
||||
Autorouter::new(design.make_board(&mut LayoutEdit::new())).unwrap()
|
||||
Autorouter::new(design.make_board(&mut BoardEdit::new())).unwrap()
|
||||
}
|
||||
|
||||
pub fn create_invoker_and_assert(
|
||||
|
|
@ -46,7 +45,9 @@ pub fn create_invoker_and_assert(
|
|||
|
||||
pub fn replay_and_assert(invoker: &mut Invoker<SpecctraMesadata>, filename: &str) {
|
||||
let file = File::open(filename).unwrap();
|
||||
invoker.replay(serde_json::from_reader(file).unwrap());
|
||||
let history: History = serde_json::from_reader(file).unwrap();
|
||||
|
||||
invoker.replay(history);
|
||||
|
||||
let prev_node_count = invoker.autorouter().board().layout().drawing().node_count();
|
||||
|
||||
|
|
@ -68,6 +69,24 @@ pub fn replay_and_assert(invoker: &mut Invoker<SpecctraMesadata>, filename: &str
|
|||
invoker.autorouter().board().layout().drawing().node_count(),
|
||||
prev_node_count,
|
||||
);
|
||||
|
||||
// Another sanity test: undo all, and then replay again. This protects
|
||||
// against undo failing to remove something that does not cause the
|
||||
// subsequent redo to fail or something that the redo restores idempotently.
|
||||
|
||||
let file = File::open(filename).unwrap();
|
||||
let history: History = serde_json::from_reader(file).unwrap();
|
||||
|
||||
for _ in 0..history.done().len() {
|
||||
invoker.undo().unwrap();
|
||||
}
|
||||
|
||||
invoker.replay(history);
|
||||
|
||||
assert_eq!(
|
||||
invoker.autorouter().board().layout().drawing().node_count(),
|
||||
prev_node_count,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn assert_navnode_count(
|
||||
|
|
|
|||
Loading…
Reference in New Issue