Add trait imports to test functions, making macros self-contained
This commit is contained in:
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user