Refactor tests: use MakeTestGraph in model-specific tests, deconstruct vertex arrays where useful, adjust local variable names

This commit is contained in:
2026-09-04 09:28:00 +02:00
parent 016d127bd1
commit 4c6a8a43e4
11 changed files with 153 additions and 195 deletions
+26 -49
View File
@@ -135,25 +135,12 @@ where
G::Vertex: Debug,
{
const K: usize = 3;
let (graph, vertices, _) = G::multiple_edges::<K>();
let (graph, [v0, v1], _) = G::multiple_edges::<K>();
assert_eq!(graph.vertex_count(), 2, "unexpected vertex count");
assert_eq!(graph.edge_count(), K, "unexpected edge count");
assert_eq!(
graph.degree(vertices[0]),
K,
"unexpected degree of vertex {:?}",
vertices[0]
);
assert_eq!(
graph.degree(vertices[1]),
K,
"unexpected degree of vertex {:?}",
vertices[1]
);
assert!(
graph.are_adjacent(vertices[0], vertices[1]),
"should be adjacent"
);
assert_eq!(graph.degree(v0), K, "unexpected degree of vertex {v0:?}");
assert_eq!(graph.degree(v1), K, "unexpected degree of vertex {v1:?}",);
assert!(graph.are_adjacent(v0, v1), "should be adjacent");
}
pub fn are_adjacent_vertex_self<G: MakeTestGraph>() {
@@ -165,15 +152,9 @@ pub fn are_adjacent_vertex_self<G: MakeTestGraph>() {
}
pub fn are_adjacent_single_edge<G: MakeTestGraph>() {
let (graph, vertices, _) = G::single_edge();
assert!(
graph.are_adjacent(vertices[0], vertices[1]),
"should be adjacent"
);
assert!(
graph.are_adjacent(vertices[1], vertices[0]),
"should be adjacent"
);
let (graph, [v0, v1], _) = G::single_edge();
assert!(graph.are_adjacent(v0, v1), "should be adjacent");
assert!(graph.are_adjacent(v1, v0), "should be adjacent");
}
pub fn are_adjacent<G: MakeTestGraph>()
@@ -341,11 +322,11 @@ where
G::Vertex: Debug,
G::Edge: Debug,
{
let (graph, vertices, e) = G::single_edge();
let (u, v) = graph.incident_vertices(e);
let (graph, [v0, v1], e) = G::single_edge();
let (u0, u1) = graph.incident_vertices(e);
assert!(
(u == vertices[0] && v == vertices[1]) || (u == vertices[1] && v == vertices[0]),
"unexpected incident vertices {u:?} and {v:?} for edge {e:?}"
(u0 == v0 && u1 == v1) || (u0 == v1 && u1 == v0),
"unexpected incident vertices {u0:?} and {u1:?} for edge {e:?}"
);
}
@@ -367,20 +348,16 @@ where
G::Vertex: Debug,
G::Edge: Debug,
{
let (graph, vertices, edges) = G::multiple_edges::<2>();
let (graph, [v0, v1], edges) = G::multiple_edges::<2>();
assert_ne!(edges[0], edges[1], "edges should be distinct");
let (u, v) = graph.incident_vertices(edges[0]);
assert!(
(u == vertices[0] && v == vertices[1]) || (u == vertices[1] && v == vertices[0]),
"unexpected incident vertices {u:?} and {v:?} for first multi-edge {:?}",
edges[0]
);
let (u, v) = graph.incident_vertices(edges[1]);
assert!(
(u == vertices[0] && v == vertices[1]) || (u == vertices[1] && v == vertices[0]),
"unexpected incident vertices {u:?} and {v:?} for second multi-edge {:?}",
edges[1]
);
for i in 0..2 {
let (u0, u1) = graph.incident_vertices(edges[i]);
assert!(
(u0 == v0 && u1 == v1) || (u0 == v1 && u1 == v0),
"unexpected incident vertices {u0:?} and {u1:?} for multi-edge {:?} (index {i})",
edges[i]
);
}
}
pub fn incident_vertices<G: MakeTestGraph>()
@@ -389,11 +366,11 @@ where
G::Edge: Debug,
{
let (graph, _, edges, _) = G::standard();
for &(e, v1, v2) in edges.iter() {
let (u1, u2) = graph.incident_vertices(e);
for &(e, v0, v1) in edges.iter() {
let (u0, u1) = graph.incident_vertices(e);
assert!(
(u1 == v1 && u2 == v2) || (u1 == v2 && u2 == v1),
"unexpected incident vertices {u1:?} and {u2:?} for edge {e:?}"
(u0 == v0 && u1 == v1) || (u0 == v1 && u1 == v0),
"unexpected incident vertices {u0:?} and {u1:?} for edge {e:?}"
);
}
}
@@ -741,8 +718,8 @@ where
}
pub fn incidence_cursor_copy<G: MakeTestGraph>() {
let (graph, vertices, _) = G::two_edge_path();
let mut c1 = graph.incidence_cursor(vertices[1]);
let (graph, [_, v, _], _) = G::two_edge_path();
let mut c1 = graph.incidence_cursor(v);
assert!(c1.next(&graph).is_some(), "expected first incidence");
let mut c2 = c1;
assert!(