Skip to content

Commit b757b61

Browse files
authored
test/graphs/prim: writing a test case to verify the correctness of the algorithm (TheAlgorithms#2454)
1 parent c3e96d2 commit b757b61

File tree

2 files changed

+48
-1
lines changed

2 files changed

+48
-1
lines changed

Diff for: graphs/minimum_spanning_tree_prims.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def deleteMinimum(heap, positions):
104104
return TreeEdges
105105

106106

107-
if __name__ == "__main__":
107+
if __name__ == "__main__": # pragma: no cover
108108
# < --------- Prims Algorithm --------- >
109109
n = int(input("Enter number of vertices: ").strip())
110110
e = int(input("Enter number of edges: ").strip())

Diff for: graphs/tests/test_min_spanning_tree_prim.py

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
from collections import defaultdict
2+
3+
4+
from graphs.minimum_spanning_tree_prims import PrimsAlgorithm as mst
5+
6+
7+
def test_prim_successful_result():
8+
num_nodes, num_edges = 9, 14 # noqa: F841
9+
edges = [
10+
[0, 1, 4],
11+
[0, 7, 8],
12+
[1, 2, 8],
13+
[7, 8, 7],
14+
[7, 6, 1],
15+
[2, 8, 2],
16+
[8, 6, 6],
17+
[2, 3, 7],
18+
[2, 5, 4],
19+
[6, 5, 2],
20+
[3, 5, 14],
21+
[3, 4, 9],
22+
[5, 4, 10],
23+
[1, 7, 11],
24+
]
25+
26+
adjancency = defaultdict(list)
27+
for node1, node2, cost in edges:
28+
adjancency[node1].append([node2, cost])
29+
adjancency[node2].append([node1, cost])
30+
31+
result = mst(adjancency)
32+
33+
expected = [
34+
[7, 6, 1],
35+
[2, 8, 2],
36+
[6, 5, 2],
37+
[0, 1, 4],
38+
[2, 5, 4],
39+
[2, 3, 7],
40+
[0, 7, 8],
41+
[3, 4, 9],
42+
]
43+
44+
for answer in expected:
45+
edge = tuple(answer[:2])
46+
reverse = tuple(edge[::-1])
47+
assert edge in result or reverse in result

0 commit comments

Comments
 (0)