@@ -6,6 +6,7 @@ namespace StronglyConnectedComponentsTest
6
6
{
7
7
UnitTestHelper unitTestHelper;
8
8
9
+ // Test case: Testing with a simple graph.
9
10
TEST (StronglyConnectedComponentsTesting, SimpleGraphTest)
10
11
{
11
12
StronglyConnectedComponentsGraph graph;
@@ -25,8 +26,77 @@ namespace StronglyConnectedComponentsTest
25
26
graph.PushDirectedEdge (7 , 8 );
26
27
graph.PushDirectedEdge (8 , 6 );
27
28
28
- string actualResult = unitTestHelper. VerifyVectorResult ( graph.FindAllStronglyConnectedComponents () );
29
- string expectedResult = " [6 8 7][1 5][2 3][4] " ;
30
- EXPECT_EQ (actualResult, expectedResult);
29
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
30
+ vector<vector< int >> expectedResult = { { 6 , 8 , 7 },{ 1 , 5 },{ 2 , 3 },{ 4 } } ;
31
+ EXPECT_EQ (unitTestHelper. SortVectorOfVectors ( actualResult), unitTestHelper. SortVectorOfVectors ( expectedResult) );
31
32
}
33
+
34
+ // Test case: Single Node.
35
+ TEST (StronglyConnectedComponentsTesting, SingleNodeTest)
36
+ {
37
+ StronglyConnectedComponentsGraph graph;
38
+ graph.PushSingleNode (1 );
39
+
40
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
41
+ vector<vector<int >> expectedResult = { {1 } };
42
+ EXPECT_EQ (unitTestHelper.SortVectorOfVectors (actualResult), unitTestHelper.SortVectorOfVectors (expectedResult));
43
+ }
44
+
45
+ // Test case: Disconnected Graph.
46
+ TEST (StronglyConnectedComponentsTesting, DisconnectedGraphTest)
47
+ {
48
+ StronglyConnectedComponentsGraph graph;
49
+ graph.PushSingleNode (1 );
50
+ graph.PushSingleNode (2 );
51
+ graph.PushSingleNode (3 );
52
+
53
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
54
+ vector<vector<int >> expectedResult = { {1 },{3 },{2 } };
55
+ EXPECT_EQ (unitTestHelper.SortVectorOfVectors (actualResult), unitTestHelper.SortVectorOfVectors (expectedResult));
56
+ }
57
+
58
+ // Test case: Chain of Nodes.
59
+ TEST (StronglyConnectedComponentsTesting, ChainOfNodesTest)
60
+ {
61
+ StronglyConnectedComponentsGraph graph;
62
+ graph.PushDirectedEdge (1 , 2 );
63
+ graph.PushDirectedEdge (2 , 3 );
64
+ graph.PushDirectedEdge (3 , 4 );
65
+
66
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
67
+ vector<vector<int >> expectedResult = { {2 },{1 },{3 },{4 } };
68
+ EXPECT_EQ (unitTestHelper.SortVectorOfVectors (actualResult), unitTestHelper.SortVectorOfVectors (expectedResult));
69
+ }
70
+
71
+ // Test case: Bidirectional Edge.
72
+ TEST (StronglyConnectedComponentsTesting, BidirectionalEdgeTest)
73
+ {
74
+ StronglyConnectedComponentsGraph graph;
75
+ graph.PushDirectedEdge (1 , 2 );
76
+ graph.PushDirectedEdge (2 , 1 );
77
+
78
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
79
+ vector<vector<int >> expectedResult = { {2 , 1 } };
80
+ EXPECT_EQ (unitTestHelper.SortVectorOfVectors (actualResult), unitTestHelper.SortVectorOfVectors (expectedResult));
81
+ }
82
+
83
+ // Test case: Complex Graph.
84
+ TEST (StronglyConnectedComponentsTesting, ComplexGraphTest)
85
+ {
86
+ StronglyConnectedComponentsGraph graph;
87
+
88
+ // Graph structure with multiple SCCs and isolated nodes.
89
+ graph.PushDirectedEdge (1 , 2 );
90
+ graph.PushDirectedEdge (2 , 3 );
91
+ graph.PushDirectedEdge (3 , 1 ); // Cycle: 1 -> 2 -> 3 -> 1
92
+ graph.PushDirectedEdge (4 , 5 );
93
+ graph.PushDirectedEdge (5 , 6 );
94
+ graph.PushDirectedEdge (6 , 4 ); // Cycle: 4 -> 5 -> 6 -> 4
95
+ graph.PushDirectedEdge (7 , 8 ); // Single direction: 7 -> 8
96
+ graph.PushSingleNode (9 ); // Isolated node.
97
+
98
+ auto actualResult = graph.FindAllStronglyConnectedComponents ();
99
+ vector<vector<int >> expectedResult = { {4 , 6 , 5 },{7 }, { 2 , 3 , 1 },{8 }, {9 } };
100
+ EXPECT_EQ (unitTestHelper.SortVectorOfVectors (actualResult), unitTestHelper.SortVectorOfVectors (expectedResult));
101
+ }
32
102
}
0 commit comments