@@ -6,6 +6,7 @@ namespace StronglyConnectedComponentsTest
66{
77 UnitTestHelper unitTestHelper;
88
9+ // Test case: Testing with a simple graph.
910 TEST (StronglyConnectedComponentsTesting, SimpleGraphTest)
1011 {
1112 StronglyConnectedComponentsGraph graph;
@@ -25,8 +26,77 @@ namespace StronglyConnectedComponentsTest
2526 graph.PushDirectedEdge (7 , 8 );
2627 graph.PushDirectedEdge (8 , 6 );
2728
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) );
3132 }
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+ }
32102}
0 commit comments