Extracted some assert code for GraphTopology::incidences into new fn
This commit is contained in:
@@ -960,33 +960,12 @@ macro_rules! graph_topology_deletion_tests {
|
||||
let (mut graph, vertices, _, incidences) = make_test_graph();
|
||||
graph.delete_vertex(vertices[2]);
|
||||
for i in [0, 1, 3, 4, 5, 6, 7, 8, 9] {
|
||||
let mut remaining: Vec<_> = incidences[i]
|
||||
let remaining = incidences[i]
|
||||
.iter()
|
||||
.filter(|(v, _)| *v != vertices[2])
|
||||
.cloned()
|
||||
.collect();
|
||||
assert_eq!(
|
||||
graph.incidences(vertices[i]).count(),
|
||||
remaining.len(),
|
||||
"unexpected incidence count for vertex {:?} after delete",
|
||||
vertices[i]
|
||||
);
|
||||
for incidence in graph.incidences(vertices[i]) {
|
||||
let pos = remaining
|
||||
.iter()
|
||||
.position(|(v, e)| *v == incidence.0 && *e == incidence.1)
|
||||
.expect(&format!(
|
||||
"unexpected incidence {incidence:?} of vertex {:?} after delete",
|
||||
vertices[i]
|
||||
));
|
||||
remaining.swap_remove(pos);
|
||||
}
|
||||
assert!(
|
||||
remaining.is_empty(),
|
||||
"expected incidences {:?} of vertex {:?} not matched after delete",
|
||||
remaining,
|
||||
vertices[i]
|
||||
);
|
||||
assert_vertex_incidences(&graph, vertices[i], remaining);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -996,34 +975,45 @@ macro_rules! graph_topology_deletion_tests {
|
||||
// Deletes the edge from vertices[1] to vertices[2].
|
||||
graph.delete_edge(edges[2]);
|
||||
for i in 0..10 {
|
||||
let mut remaining: Vec<_> = incidences[i]
|
||||
let remaining = incidences[i]
|
||||
.iter()
|
||||
.filter(|(_, e)| *e != edges[2])
|
||||
.cloned()
|
||||
.collect();
|
||||
assert_vertex_incidences(&graph, vertices[i], remaining);
|
||||
}
|
||||
}
|
||||
|
||||
fn assert_vertex_incidences(
|
||||
graph: &$T,
|
||||
v: <$T as $crate::traits::GraphTopology>::Vertex,
|
||||
mut expected: Vec<(
|
||||
<$T as $crate::traits::GraphTopology>::Vertex,
|
||||
<$T as $crate::traits::GraphTopology>::Edge,
|
||||
)>,
|
||||
) {
|
||||
assert_eq!(
|
||||
graph.incidences(vertices[i]).count(),
|
||||
remaining.len(),
|
||||
graph.incidences(v).count(),
|
||||
expected.len(),
|
||||
"unexpected incidence count for vertex {:?} after delete",
|
||||
vertices[i]
|
||||
v
|
||||
);
|
||||
for incidence in graph.incidences(vertices[i]) {
|
||||
let pos = remaining
|
||||
for incidence in graph.incidences(v) {
|
||||
let pos = expected
|
||||
.iter()
|
||||
.position(|(v, e)| *v == incidence.0 && *e == incidence.1)
|
||||
.position(|(u, e)| *u == incidence.0 && *e == incidence.1)
|
||||
.expect(&format!(
|
||||
"unexpected incidence {incidence:?} of vertex {:?} after delete",
|
||||
vertices[i]
|
||||
v
|
||||
));
|
||||
remaining.swap_remove(pos);
|
||||
expected.swap_remove(pos);
|
||||
}
|
||||
assert!(
|
||||
remaining.is_empty(),
|
||||
expected.is_empty(),
|
||||
"expected incidences {:?} of vertex {:?} not matched after delete",
|
||||
remaining,
|
||||
vertices[i]
|
||||
expected,
|
||||
v
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user