Refactor ElementMap, removing its copy-on-write feature

This commit is contained in:
2026-10-11 22:24:00 +02:00
parent 4e20c49486
commit 3d7dda6f7b
9 changed files with 281 additions and 113 deletions
+32 -12
View File
@@ -72,12 +72,22 @@ pub fn vertex_count<G: MakeTestGraph>() {
assert_eq!(graph.vertex_count(), 10, "unexpected vertex count");
}
pub fn vertex_map<G: MakeTestGraph>() {
let (graph, v) = G::single_vertex();
let mut map = graph.vertex_map(27);
assert_eq!(map[v], 27, "unexpected value from default map read");
map[v] = 9;
assert_eq!(map[v], 9, "unexpected value from map after write");
pub fn vertex_map<G: MakeTestGraph>()
where
G::Vertex: Debug,
{
let (graph, vertices, _, _) = G::standard();
let mut map = graph.vertex_map(88);
for (i, &v) in vertices.iter().enumerate() {
assert_eq!(
map[v], 88,
"unexpected value from default map read for vertex {v:?}"
);
map[v] = i;
}
for (i, &v) in vertices.iter().enumerate() {
assert_eq!(map[v], i, "unexpected value after write for vertex {v:?}");
}
}
pub fn edge_count_empty<G: MakeTestGraph>() {
@@ -90,12 +100,22 @@ pub fn edge_count<G: MakeTestGraph>() {
assert_eq!(graph.edge_count(), 18, "unexpected edge count");
}
pub fn edge_map<G: MakeTestGraph>() {
let (graph, _, e) = G::single_edge();
let mut map = graph.edge_map(28);
assert_eq!(map[e], 28, "unexpected value from default map read");
map[e] = 8;
assert_eq!(map[e], 8, "unexpected value from map after write");
pub fn edge_map<G: MakeTestGraph>()
where
G::Edge: Debug,
{
let (graph, _, edges, _) = G::standard();
let mut map = graph.edge_map(99);
for (i, &(e, _, _)) in edges.iter().enumerate() {
assert_eq!(
map[e], 99,
"unexpected value from default map read for edge {e:?}"
);
map[e] = i;
}
for (i, &(e, _, _)) in edges.iter().enumerate() {
assert_eq!(map[e], i, "unexpected value after write for edge {e:?}");
}
}
pub fn degree_zero<G: MakeTestGraph>() {