@@ -13,22 +13,16 @@ using std::make_shared;
13
13
14
14
// helper function to compare strongly connected components (SCC) as computed
15
15
// by the algorithm with expected (correct) SCC
16
- void compareComponents (CXXGraph::Components <int >& comp1 ,
16
+ void compareComponents (CXXGraph::SCCResult <int > result ,
17
17
CXXGraph::Components<int >& comp2) {
18
- ASSERT_EQ (comp1. size () , comp2.size ());
18
+ ASSERT_EQ (result. noOfComponents , comp2.size ());
19
19
20
- for (size_t i = 0 ; i < comp1.size (); ++i) {
21
- std::sort (comp1[i].begin (), comp1[i].end ());
22
- std::sort (comp2[i].begin (), comp2[i].end ());
20
+ for (int i=0 ;i<comp2.size ();i++){
21
+ int curComp = result.sccMap [comp2[i][0 ].getId ()];
22
+ for (int j=1 ;j<comp2[i].size ();j++){
23
+ ASSERT_EQ (result.sccMap [comp2[i][j].getId ()], curComp);
24
+ }
23
25
}
24
-
25
- std::sort (comp1.begin (), comp1.end (),
26
- [](auto & c1, auto & c2) { return c1.front () < c2.front (); });
27
-
28
- std::sort (comp2.begin (), comp2.end (),
29
- [](auto & c1, auto & c2) { return c1.front () < c2.front (); });
30
-
31
- ASSERT_EQ (comp1, comp2);
32
26
}
33
27
34
28
// undirected graph
@@ -39,8 +33,8 @@ TEST(KosarajuTest, test_1) {
39
33
CXXGraph::T_EdgeSet<int > edgeSet;
40
34
edgeSet.insert (make_shared<CXXGraph::UndirectedEdge<int >>(edge));
41
35
CXXGraph::Graph<int > graph (edgeSet);
42
- auto res = graph.kosaraju ();
43
- ASSERT_EQ (res.stronglyConnectedComps . size () , 0 );
36
+ CXXGraph::SCCResult< int > res = graph.kosaraju ();
37
+ ASSERT_EQ (res.noOfComponents , 0 );
44
38
ASSERT_FALSE (res.success );
45
39
ASSERT_EQ (res.errorMessage , CXXGraph::ERR_UNDIR_GRAPH);
46
40
}
@@ -55,11 +49,11 @@ TEST(KosarajuTest, test_2) {
55
49
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge1));
56
50
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge2));
57
51
CXXGraph::Graph<int > graph (edgeSet);
58
- auto res = graph.kosaraju ();
52
+ CXXGraph::SCCResult< int > res = graph.kosaraju ();
59
53
ASSERT_TRUE (res.success );
60
54
ASSERT_EQ (res.errorMessage , " " );
61
- ASSERT_EQ (res.stronglyConnectedComps . size () , 1 );
62
- ASSERT_EQ (res.stronglyConnectedComps [0 ].size (), 2 );
55
+ ASSERT_EQ (res.noOfComponents , 1 );
56
+ // ASSERT_EQ(res.stronglyConnectedComps[0].size(), 2);
63
57
}
64
58
65
59
// 1 comp, 2 strongly connected comp
@@ -75,12 +69,12 @@ TEST(KosarajuTest, test_3) {
75
69
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge2));
76
70
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge3));
77
71
CXXGraph::Graph<int > graph (edgeSet);
78
- auto res = graph.kosaraju ();
72
+ CXXGraph::SCCResult< int > res = graph.kosaraju ();
79
73
ASSERT_TRUE (res.success );
80
74
ASSERT_EQ (res.errorMessage , " " );
81
75
82
76
CXXGraph::Components<int > expectedComponents = {{node1, node2}, {node3}};
83
- compareComponents (res. stronglyConnectedComps , expectedComponents);
77
+ compareComponents (res, expectedComponents);
84
78
}
85
79
86
80
// 2 components, 2 strongly connected comps
@@ -99,12 +93,12 @@ TEST(KosarajuTest, test_4) {
99
93
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge3));
100
94
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge4));
101
95
CXXGraph::Graph<int > graph (edgeSet);
102
- auto res = graph.kosaraju ();
96
+ CXXGraph::SCCResult< int > res = graph.kosaraju ();
103
97
ASSERT_TRUE (res.success );
104
98
ASSERT_EQ (res.errorMessage , " " );
105
99
CXXGraph::Components<int > expectedComponents = {{node1, node2},
106
100
{node3, node4}};
107
- compareComponents (res. stronglyConnectedComps , expectedComponents);
101
+ compareComponents (res, expectedComponents);
108
102
}
109
103
110
104
TEST (KosarajuTest, test_5) {
@@ -168,7 +162,7 @@ TEST(KosarajuTest, test_5) {
168
162
edgeSet.insert (make_shared<CXXGraph::DirectedEdge<int >>(edge21));
169
163
170
164
CXXGraph::Graph graph (edgeSet);
171
- auto res = graph.kosaraju ();
165
+ CXXGraph::SCCResult< int > res = graph.kosaraju ();
172
166
ASSERT_TRUE (res.success );
173
167
ASSERT_EQ (res.errorMessage , " " );
174
168
@@ -179,5 +173,5 @@ TEST(KosarajuTest, test_5) {
179
173
{node8, node9},
180
174
{node10, node11, node12, node13}};
181
175
182
- compareComponents (res. stronglyConnectedComps , expectedComponents);
176
+ compareComponents (res, expectedComponents);
183
177
}
0 commit comments