From 5ad480b379802195b3dc0e9d07633556063502cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Sat, 25 Oct 2025 01:15:16 +0200 Subject: [PATCH] Add tests for Dijkstra's algorithm on trivial graphs --- tests/dijkstra.rs | 60 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 4 deletions(-) diff --git a/tests/dijkstra.rs b/tests/dijkstra.rs index b540223..ba953e9 100644 --- a/tests/dijkstra.rs +++ b/tests/dijkstra.rs @@ -2,6 +2,58 @@ use grapherity::algorithms; use grapherity::models::Graph; use grapherity::models::Vertex; +#[test] +fn dijkstra_single_vertex() { + let mut graph = Graph::new(); + let v1 = graph.add_vertex(); + let (distances, predecessors) = algorithms::dijkstra(&graph, v1); + assert_eq!( + distances.len(), + 1, + "distances count must equal vertex count" + ); + assert_eq!( + predecessors.len(), + 1, + "predecessors count must equal vertex count" + ); + assert_eq!( + distances[0], + Some(0), + "unexpected distance of source vertex" + ); + assert_eq!( + predecessors[0], None, + "unexpected predecessor of source vertex", + ); +} + +#[test] +fn dijkstra_disconnected() { + let mut graph = Graph::new(); + let v1 = graph.add_vertex(); + graph.add_vertex(); + let (distances, predecessors) = algorithms::dijkstra(&graph, v1); + assert_eq!( + distances.len(), + 2, + "distances count must equal vertex count" + ); + assert_eq!( + predecessors.len(), + 2, + "predecessors count must equal vertex count" + ); + assert_eq!( + distances[1], None, + "unexpected distance of disconnected vertex" + ); + assert_eq!( + predecessors[0], None, + "unexpected predecessor of disconnected vertex", + ); +} + #[test] fn dijkstra() { let (graph, vertices) = make_test_graph(); @@ -33,22 +85,22 @@ fn dijkstra() { assert_eq!( distances.len(), graph.vertex_count(), - "distances count from Dijkstra's algorithm must equal vertex count" + "distances count must equal vertex count" ); assert_eq!( predecessors.len(), graph.vertex_count(), - "predecessors count from Dijkstra's algorithm must equal vertex count" + "predecessors count must equal vertex count" ); for i in 0..graph.vertex_count() { assert_eq!( distances[i], expected_distances_from_v0[i], - "unexpected distance from {:?} to {:?} from Dijkstra's algorithm", + "unexpected distance from {:?} to {:?}", vertices[0], vertices[i] ); assert!( expected_predecessors_from_v0[i].contains(&predecessors[i]), - "unexpected predecessor {:?} of {:?} from Dijkstra's algorithm", + "unexpected predecessor {:?} of {:?}", predecessors[i], vertices[i] );