Skip to content

Commit 09bd22f

Browse files
committed
test: kruskal test added, test util updated
1 parent 6ab200a commit 09bd22f

File tree

4 files changed

+37
-10
lines changed

4 files changed

+37
-10
lines changed

Headers/0003_Graph/0007_MinimumSpanningTreeKruskalAlgorithm.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,5 @@ namespace MinimumSpanningTreeKruskalAlgorithm
4242
void PushUndirectedEdge(int valueU, int valueV, int weight);
4343
void FindMinimumSpanningTreeKruskalAlgorithm();
4444
vector<pair<pair<int, int>, int>> GetMinimumSpanningTree();
45-
vector<Edge*> GetSortedEdgeList();
4645
};
4746
}

SourceCodes/0003_Graph/0007_MinimumSpanningTreeKruskalAlgorithm.cc

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ namespace MinimumSpanningTreeKruskalAlgorithm
8888
this->MakeSet(iterator.second);
8989
}
9090

91-
sort(this->_edgeList.begin(), this->_edgeList.end(), [](Edge* edgeX, Edge* edgeY) {return edgeX->weight < edgeY->weight; });
91+
sort(this->_edgeList.begin(), this->_edgeList.end(), [](Edge* edgeX, Edge* edgeY) { return edgeX->weight < edgeY->weight; });
9292

9393
for (auto edge : this->_edgeList)
9494
{
@@ -104,9 +104,4 @@ namespace MinimumSpanningTreeKruskalAlgorithm
104104
{
105105
return this->_minimumSpanningTree;
106106
}
107-
108-
vector<Edge*> Graph::GetSortedEdgeList()
109-
{
110-
return this->_edgeList;
111-
}
112107
}

Tests/0000_CommonUtilities/UnitTestHelper.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,22 @@ class UnitTestHelper
136136
reverse(normalizedCycle2.begin() + 1, normalizedCycle2.end());
137137
return (normalizedCycle1 == normalizedCycle2);
138138
}
139+
140+
template<typename T>
141+
vector<pair<pair<T, T>, T>> SortVectorOfPair(vector<pair<pair<T, T>, T>> data)
142+
{
143+
for (auto& iterator : data)
144+
{
145+
if (iterator.first.first > iterator.first.second)
146+
{
147+
swap(iterator.first.first, iterator.first.second);
148+
}
149+
}
150+
151+
sort(data.begin(), data.end(), [](const pair<pair<T, T>, T>& pairA, const pair<pair<T, T>, T>& pairB)
152+
{
153+
return pairA.second < pairB.second;
154+
});
155+
return data;
156+
}
139157
};

Tests/0003_Graph/0007_MinimumSpanningTreeKruskalAlgorithmTest.cc

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
#include<gtest/gtest.h>
2-
#include<0003_Graph/0007_MinimumSpanningTreeKruskalAlgorithm.h>
2+
#include "../Headers/0003_Graph/0007_MinimumSpanningTreeKruskalAlgorithm.h"
3+
#include "../0000_CommonUtilities/UnitTestHelper.h"
34

45
namespace MinimumSpanningTreeKruskalAlgorithm
56
{
7+
UnitTestHelper unitTestHelper;
8+
69
TEST(MST, Kruskal)
710
{
811
Graph graph;
@@ -24,7 +27,19 @@ namespace MinimumSpanningTreeKruskalAlgorithm
2427

2528
graph.FindMinimumSpanningTreeKruskalAlgorithm();
2629

27-
auto res1 = graph.GetSortedEdgeList();
28-
auto res2 = graph.GetMinimumSpanningTree();
30+
vector<pair<pair<int,int>, int>> actualMST = graph.GetMinimumSpanningTree();
31+
vector<pair<pair<int, int>, int>> expectedMST =
32+
{
33+
{{7, 8}, 1},
34+
{{3, 9}, 2},
35+
{{6, 7}, 2},
36+
{{2, 1}, 4},
37+
{{3, 6}, 4},
38+
{{3, 4}, 7},
39+
{{8, 1}, 8},
40+
{{4, 5}, 9}
41+
};
42+
43+
ASSERT_EQ(unitTestHelper.SortVectorOfPair(actualMST), unitTestHelper.SortVectorOfPair(expectedMST));
2944
}
3045
}

0 commit comments

Comments
 (0)