Skip to content

Commit d68a35b

Browse files
committed
test: bellmanford more tests added
1 parent d13fe39 commit d68a35b

File tree

1 file changed

+98
-24
lines changed

1 file changed

+98
-24
lines changed

Tests/0003_Graph/0009_SingleSourceShortestPathBellmanFordTest.cc

Lines changed: 98 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,101 @@
44

55
namespace SingleSourceShortestPathBellmanFord
66
{
7-
UnitTestHelper unitTestHelper;
8-
9-
TEST(BellmanFordTest, SimpleTest)
10-
{
11-
Graph graph;
12-
13-
graph.PushDirectedEdge(0, 1, 6);
14-
graph.PushDirectedEdge(0, 3, 7);
15-
graph.PushDirectedEdge(1, 2, 5);
16-
graph.PushDirectedEdge(1, 3, 8);
17-
graph.PushDirectedEdge(1, 4, -4);
18-
graph.PushDirectedEdge(2, 1, -2);
19-
graph.PushDirectedEdge(3, 2, -3);
20-
graph.PushDirectedEdge(3, 4, 9);
21-
graph.PushDirectedEdge(3, 4, 9);
22-
graph.PushDirectedEdge(4, 2, 7);
23-
graph.PushDirectedEdge(4, 0, 2);
24-
25-
26-
string expectedResult = "0 3 2 1 4";
27-
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
28-
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(4)), expectedResult);
29-
}
30-
}
7+
UnitTestHelper unitTestHelper;
8+
9+
// Test for Simple Graph
10+
TEST(BellmanFordTest, SimpleTest)
11+
{
12+
Graph graph;
13+
14+
graph.PushDirectedEdge(0, 1, 6);
15+
graph.PushDirectedEdge(0, 3, 7);
16+
graph.PushDirectedEdge(1, 2, 5);
17+
graph.PushDirectedEdge(1, 3, 8);
18+
graph.PushDirectedEdge(1, 4, -4);
19+
graph.PushDirectedEdge(2, 1, -2);
20+
graph.PushDirectedEdge(3, 2, -3);
21+
graph.PushDirectedEdge(3, 4, 9);
22+
graph.PushDirectedEdge(3, 4, 9);
23+
graph.PushDirectedEdge(4, 2, 7);
24+
graph.PushDirectedEdge(4, 0, 2);
25+
26+
string expectedResult = "0 3 2 1 4";
27+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
28+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(4)), expectedResult);
29+
}
30+
31+
// Test for Single Node Graph
32+
TEST(BellmanFordTest, SingleNodeTest)
33+
{
34+
Graph graph;
35+
graph.PushDirectedEdge(0, 0, 0); // Self-loop
36+
37+
string expectedResult = "0";
38+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
39+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(0)), expectedResult);
40+
}
41+
42+
// Test for Negative Weight Cycle
43+
TEST(BellmanFordTest, NegativeWeightCycleTest)
44+
{
45+
Graph graph;
46+
graph.PushDirectedEdge(0, 1, 1);
47+
graph.PushDirectedEdge(1, 2, -1);
48+
graph.PushDirectedEdge(2, 0, -1); // Negative weight cycle
49+
50+
ASSERT_FALSE(graph.FindSingleSourceShortestPathBellmanFord(0));
51+
}
52+
53+
// Test for Multiple Shortest Paths
54+
TEST(BellmanFordTest, MultipleShortestPathsTest)
55+
{
56+
Graph graph;
57+
graph.PushDirectedEdge(0, 1, 5);
58+
graph.PushDirectedEdge(0, 2, 5);
59+
graph.PushDirectedEdge(1, 3, 1);
60+
graph.PushDirectedEdge(2, 3, 1);
61+
62+
string expectedResult = "0 1 3";
63+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
64+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(3)), expectedResult);
65+
}
66+
67+
// Test for All Negative Weights
68+
TEST(BellmanFordTest, AllNegativeWeightsTest)
69+
{
70+
Graph graph;
71+
graph.PushDirectedEdge(0, 1, -5);
72+
graph.PushDirectedEdge(1, 2, -3);
73+
graph.PushDirectedEdge(2, 3, -2);
74+
graph.PushDirectedEdge(3, 4, -1);
75+
76+
string expectedResult = "0 1 2 3 4";
77+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
78+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(4)), expectedResult);
79+
}
80+
81+
// Test for Large Graph
82+
TEST(BellmanFordTest, LargeGraphTest)
83+
{
84+
Graph graph;
85+
for (int i = 0; i < 100; ++i) {
86+
graph.PushDirectedEdge(i, i + 1, 1);
87+
}
88+
89+
string expectedResult = "0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20";
90+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
91+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(20)), expectedResult);
92+
}
93+
94+
// Test for Self-Loop Edge
95+
TEST(BellmanFordTest, SelfLoopTest)
96+
{
97+
Graph graph;
98+
graph.PushDirectedEdge(0, 0, 10); // Self-loop with weight 10
99+
100+
string expectedResult = "0";
101+
ASSERT_TRUE(graph.FindSingleSourceShortestPathBellmanFord(0));
102+
ASSERT_EQ(unitTestHelper.SerializeVectorToString(graph.GetShortestPathBellmanFord(0)), expectedResult);
103+
}
104+
}

0 commit comments

Comments
 (0)