Initial release #1
@@ -3,6 +3,7 @@ macro_rules! dijkstra_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn dijkstra_single_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let result = $crate::algorithms::dijkstra(&graph, v, |_| {
|
||||
@@ -23,6 +24,7 @@ macro_rules! dijkstra_tests {
|
||||
|
||||
#[test]
|
||||
fn dijkstra_zero_weight_loop() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices: [<$T as $crate::traits::GraphTopology>::Vertex; 3] =
|
||||
core::array::from_fn(|_| graph.add_vertex());
|
||||
@@ -68,6 +70,7 @@ macro_rules! dijkstra_tests {
|
||||
|
||||
#[test]
|
||||
fn dijkstra_unweighted_single_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let result = $crate::algorithms::dijkstra_unweighted(&graph, v);
|
||||
@@ -91,6 +94,7 @@ macro_rules! dijkstra_tests {
|
||||
|
||||
#[test]
|
||||
fn dijkstra_distances_unweighted_single_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let distances = $crate::algorithms::dijkstra_distances_unweighted(&graph, v);
|
||||
@@ -285,6 +289,7 @@ macro_rules! dijkstra_tests {
|
||||
|
||||
fn make_test_graph_dijkstra_disconnected()
|
||||
-> ($T, [<$T as $crate::traits::GraphTopology>::Vertex; 3]) {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices: [<$T as $crate::traits::GraphTopology>::Vertex; 3] =
|
||||
core::array::from_fn(|_| graph.add_vertex());
|
||||
@@ -306,6 +311,7 @@ macro_rules! dijkstra_tests {
|
||||
)>; 10],
|
||||
$crate::maps::EdgeMap<<$T as $crate::traits::GraphTopology>::Edge, u32>,
|
||||
) {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, edges, incidences) = make_test_graph();
|
||||
let mut weights = graph.edge_map(99_u32);
|
||||
for i in [1, 3, 7, 10, 12, 14, 15, 17] {
|
||||
|
||||
@@ -14,6 +14,7 @@ macro_rules! graph_topology_test_fixtures {
|
||||
<$T as $crate::traits::GraphTopology>::Edge,
|
||||
)>; 10],
|
||||
) {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices: [<$T as $crate::traits::GraphTopology>::Vertex; 10] =
|
||||
core::array::from_fn(|_| graph.add_vertex());
|
||||
@@ -94,6 +95,7 @@ macro_rules! graph_topology_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn add_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_ne!(graph.add_vertex(), v, "unexpected duplicate vertex");
|
||||
@@ -101,18 +103,21 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn vertex_count_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let graph = <$T>::new();
|
||||
assert_eq!(graph.vertex_count(), 0, "unexpected vertex count");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn vertex_count() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, _, _) = make_test_graph();
|
||||
assert_eq!(graph.vertex_count(), 10, "unexpected vertex count");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn add_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -122,18 +127,21 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn edge_count_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let graph = <$T>::new();
|
||||
assert_eq!(graph.edge_count(), 0, "unexpected edge count");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn edge_count() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, _, _) = make_test_graph();
|
||||
assert_eq!(graph.edge_count(), 18, "unexpected edge count");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn degree_zero() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_eq!(graph.degree(v), 0, "unexpected non-zero degree");
|
||||
@@ -141,6 +149,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn degree() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, _) = make_test_graph();
|
||||
let expected_degrees = [2, 5, 7, 2, 7, 2, 3, 3, 2, 3];
|
||||
for i in 0..graph.vertex_count() {
|
||||
@@ -155,6 +164,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn loop_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
graph.add_edge(v, v);
|
||||
@@ -169,6 +179,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn multiple_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let k = 3;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
@@ -185,6 +196,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn are_adjacent_vertex_self() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert!(
|
||||
@@ -195,6 +207,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn are_adjacent_single_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -207,6 +220,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn are_adjacent() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, _) = make_test_graph();
|
||||
assert!(
|
||||
graph.are_adjacent(vertices[0], vertices[1]),
|
||||
@@ -251,6 +265,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn vertices_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let graph = <$T>::new();
|
||||
assert_eq!(
|
||||
graph.vertices().count(),
|
||||
@@ -261,6 +276,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn vertices() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, _) = make_test_graph();
|
||||
assert_eq!(graph.vertices().count(), 10, "unexpected vertex count");
|
||||
|
||||
@@ -276,6 +292,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn adjacent_vertices_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_eq!(
|
||||
@@ -287,6 +304,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn adjacent_vertices() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, _) = make_test_graph();
|
||||
// Checks adjacency of vertex 4.
|
||||
assert_eq!(
|
||||
@@ -324,6 +342,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn adjacent_vertices_loop_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
graph.add_edge(v, v);
|
||||
@@ -343,6 +362,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn adjacent_vertices_multiple_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let k = 3;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices = [graph.add_vertex(), graph.add_vertex()];
|
||||
@@ -370,6 +390,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices_single_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -383,6 +404,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices_loop_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let e = graph.add_edge(v, v);
|
||||
@@ -395,6 +417,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices_multiple_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -415,6 +438,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, edges, _) = make_test_graph();
|
||||
for &(e, v1, v2) in edges.iter() {
|
||||
let (u1, u2) = graph.incident_vertices(e);
|
||||
@@ -427,6 +451,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn edges_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let graph = <$T>::new();
|
||||
assert_eq!(
|
||||
graph.edges().count(),
|
||||
@@ -437,6 +462,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, edges, _) = make_test_graph();
|
||||
assert_eq!(graph.edges().count(), 18, "unexpected edge count");
|
||||
|
||||
@@ -452,6 +478,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_eq!(
|
||||
@@ -463,6 +490,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, incidences) = make_test_graph();
|
||||
for i in 0..10 {
|
||||
assert_eq!(
|
||||
@@ -493,6 +521,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_loop_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let e = graph.add_edge(v, v);
|
||||
@@ -508,6 +537,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_multiple_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let k = 3;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices = [graph.add_vertex(), graph.add_vertex()];
|
||||
@@ -538,6 +568,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_empty() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_eq!(
|
||||
@@ -549,6 +580,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, vertices, _, incidences) = make_test_graph();
|
||||
for i in 0..10 {
|
||||
assert_eq!(
|
||||
@@ -579,6 +611,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_edge_consistency() {
|
||||
use $crate::traits::GraphTopology;
|
||||
// For each incidence (v, e) of u, the same edge e must appear in the incidences of v.
|
||||
// For loop edges (u == v), the edge must appear exactly twice in the incidences of u.
|
||||
let (graph, _, _, _) = make_test_graph();
|
||||
@@ -602,6 +635,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_loop_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let e = graph.add_edge(v, v);
|
||||
@@ -625,6 +659,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_multiple_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let k = 3;
|
||||
let mut graph = <$T>::new();
|
||||
let vertices = [graph.add_vertex(), graph.add_vertex()];
|
||||
@@ -664,6 +699,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices_incidences_consistency() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, _, _) = make_test_graph();
|
||||
for u in graph.vertices() {
|
||||
for (v, e) in graph.incidences(u) {
|
||||
@@ -678,6 +714,7 @@ macro_rules! graph_topology_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_incidences_consistency() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let (graph, _, _, _) = make_test_graph();
|
||||
for u in graph.vertices() {
|
||||
let mut expected: Vec<_> = graph.incidences(u).map(|(_, e)| e).collect();
|
||||
@@ -705,6 +742,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn delete_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v = graph.add_vertex();
|
||||
assert_eq!(
|
||||
@@ -727,6 +766,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_vertex_loop() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v = graph.add_vertex();
|
||||
graph.add_edge(v, v);
|
||||
@@ -757,6 +798,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_vertex_invalid_index() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v = graph.add_vertex();
|
||||
graph.delete_vertex(v);
|
||||
@@ -766,6 +809,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_vertex_connected() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, vertices, _, _) = make_test_graph();
|
||||
assert_eq!(
|
||||
graph.vertex_count(),
|
||||
@@ -814,6 +859,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -860,6 +907,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_edge_loop() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v = graph.add_vertex();
|
||||
let e = graph.add_edge(v, v);
|
||||
@@ -895,6 +944,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_edge_multiple() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -942,6 +993,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn delete_edge_invalid_index() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = Graph::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -953,6 +1006,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn vertices_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, vertices, _, _) = make_test_graph();
|
||||
graph.delete_vertex(vertices[2]);
|
||||
assert_eq!(
|
||||
@@ -983,6 +1038,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_vertices_after_delete_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, _, edges, _) = make_test_graph();
|
||||
let e = edges[2].0;
|
||||
graph.delete_edge(e);
|
||||
@@ -997,6 +1054,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn edges_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, vertices, edges, _) = make_test_graph();
|
||||
graph.delete_vertex(vertices[2]);
|
||||
assert_eq!(graph.edge_count(), 12, "unexpected edge count after delete");
|
||||
@@ -1023,6 +1082,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_after_delete_edge() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, vertices, edges, incidences) = make_test_graph();
|
||||
graph.delete_edge(edges[2].0);
|
||||
for i in 0..10 {
|
||||
@@ -1055,6 +1116,8 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn incident_edges_after_delete_vertex() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
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] {
|
||||
@@ -1087,6 +1150,7 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_after_delete_vertex() {
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
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] {
|
||||
@@ -1101,6 +1165,7 @@ macro_rules! graph_topology_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn incidences_after_delete_edge() {
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let (mut graph, vertices, edges, incidences) = make_test_graph();
|
||||
// Deletes the edge from vertices[1] to vertices[2].
|
||||
graph.delete_edge(edges[2].0);
|
||||
@@ -1122,6 +1187,7 @@ macro_rules! graph_topology_deletion_tests {
|
||||
<$T as $crate::traits::GraphTopology>::Edge,
|
||||
)>,
|
||||
) {
|
||||
use $crate::traits::GraphTopology;
|
||||
assert_eq!(
|
||||
graph.incidences(v).count(),
|
||||
expected.len(),
|
||||
|
||||
@@ -3,6 +3,7 @@ macro_rules! vertex_map_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn initial_values_are_default() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -13,6 +14,7 @@ macro_rules! vertex_map_tests {
|
||||
|
||||
#[test]
|
||||
fn write_and_read() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -24,6 +26,7 @@ macro_rules! vertex_map_tests {
|
||||
|
||||
#[test]
|
||||
fn lazy_growth_on_read() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
graph.add_vertex();
|
||||
let map = graph.vertex_map(99);
|
||||
@@ -33,6 +36,7 @@ macro_rules! vertex_map_tests {
|
||||
|
||||
#[test]
|
||||
fn lazy_growth_on_write() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let mut map = graph.vertex_map(0);
|
||||
@@ -44,6 +48,7 @@ macro_rules! vertex_map_tests {
|
||||
|
||||
#[test]
|
||||
fn sync_expands_to_new_vertices() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
graph.add_vertex();
|
||||
let mut map = graph.vertex_map(42);
|
||||
@@ -61,6 +66,7 @@ macro_rules! vertex_map_tests {
|
||||
|
||||
#[test]
|
||||
fn sync_does_not_overwrite_existing_values() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v = graph.add_vertex();
|
||||
let mut map = graph.vertex_map(0);
|
||||
@@ -77,6 +83,8 @@ macro_rules! vertex_map_deletion_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn surviving_vertex_readable_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -89,6 +97,8 @@ macro_rules! vertex_map_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn capacity_does_not_shrink_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -103,6 +113,8 @@ macro_rules! vertex_map_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn reused_slot_returns_old_value() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
graph.add_vertex();
|
||||
let v1 = graph.add_vertex();
|
||||
@@ -123,6 +135,7 @@ macro_rules! edge_map_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn initial_values_are_default() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -135,6 +148,7 @@ macro_rules! edge_map_tests {
|
||||
|
||||
#[test]
|
||||
fn write_and_read() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -148,6 +162,7 @@ macro_rules! edge_map_tests {
|
||||
|
||||
#[test]
|
||||
fn lazy_growth_on_read() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -159,6 +174,7 @@ macro_rules! edge_map_tests {
|
||||
|
||||
#[test]
|
||||
fn lazy_growth_on_write() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -172,6 +188,7 @@ macro_rules! edge_map_tests {
|
||||
|
||||
#[test]
|
||||
fn sync_expands_to_new_edges() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -191,6 +208,7 @@ macro_rules! edge_map_tests {
|
||||
|
||||
#[test]
|
||||
fn sync_does_not_overwrite_existing_values() {
|
||||
use $crate::traits::GraphTopology;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -209,6 +227,8 @@ macro_rules! edge_map_deletion_tests {
|
||||
($T:ty) => {
|
||||
#[test]
|
||||
fn surviving_edge_readable_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -223,6 +243,8 @@ macro_rules! edge_map_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn capacity_does_not_shrink_after_delete() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
@@ -239,6 +261,8 @@ macro_rules! edge_map_deletion_tests {
|
||||
|
||||
#[test]
|
||||
fn reused_slot_returns_old_value() {
|
||||
use $crate::traits::GraphTopology;
|
||||
use $crate::traits::GraphTopologyDeletion;
|
||||
let mut graph = <$T>::new();
|
||||
let v1 = graph.add_vertex();
|
||||
let v2 = graph.add_vertex();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
mod append_graph_tests {
|
||||
use grapherity::models::append_graph::AppendGraph;
|
||||
use grapherity::traits::GraphTopology;
|
||||
|
||||
grapherity::graph_topology_test_fixtures!(AppendGraph);
|
||||
grapherity::dijkstra_tests!(AppendGraph);
|
||||
@@ -8,7 +7,6 @@ mod append_graph_tests {
|
||||
|
||||
mod graph_tests {
|
||||
use grapherity::models::graph::Graph;
|
||||
use grapherity::traits::GraphTopology;
|
||||
|
||||
grapherity::graph_topology_test_fixtures!(Graph);
|
||||
grapherity::dijkstra_tests!(Graph);
|
||||
|
||||
@@ -1,20 +1,17 @@
|
||||
mod append_graph_vertex_map_tests {
|
||||
use grapherity::models::append_graph::AppendGraph;
|
||||
use grapherity::traits::GraphTopology;
|
||||
|
||||
grapherity::vertex_map_tests!(AppendGraph);
|
||||
}
|
||||
|
||||
mod append_graph_edge_map_tests {
|
||||
use grapherity::models::append_graph::AppendGraph;
|
||||
use grapherity::traits::GraphTopology;
|
||||
|
||||
grapherity::edge_map_tests!(AppendGraph);
|
||||
}
|
||||
|
||||
mod graph_vertex_map_tests {
|
||||
use grapherity::models::graph::Graph;
|
||||
use grapherity::traits::{GraphTopology, GraphTopologyDeletion};
|
||||
|
||||
grapherity::vertex_map_tests!(Graph);
|
||||
grapherity::vertex_map_deletion_tests!(Graph);
|
||||
@@ -22,7 +19,6 @@ mod graph_vertex_map_tests {
|
||||
|
||||
mod graph_edge_map_tests {
|
||||
use grapherity::models::graph::Graph;
|
||||
use grapherity::traits::{GraphTopology, GraphTopologyDeletion};
|
||||
|
||||
grapherity::edge_map_tests!(Graph);
|
||||
grapherity::edge_map_deletion_tests!(Graph);
|
||||
|
||||
Reference in New Issue
Block a user