Skip to content

Commit 5f95bc2

Browse files
committed
fix: cycle check in test util
1 parent 9335588 commit 5f95bc2

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

Tests/0000_CommonUtilities/UnitTestHelper.h

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,31 @@ class UnitTestHelper
109109
}
110110

111111
template<typename T>
112-
vector<T> NormalizeCycle(vector<T> data)
112+
bool NormalizeCyclesAnCompare(vector<T> data1, vector<T> data2)
113113
{
114-
if (data.empty())
114+
if (data1.size() != data2.size())
115115
{
116-
return {};
116+
return false;
117117
}
118-
auto minimumElementIterator = min_element(data.begin(), data.end());
119-
long long startIndex = distance(data.begin(), minimumElementIterator);
120-
vector<T> normalizedCycle;
121-
normalizedCycle.insert(normalizedCycle.end(), data.begin() + startIndex, data.end());
122-
normalizedCycle.insert(normalizedCycle.end(), data.begin(), data.begin() + startIndex);
123-
return normalizedCycle;
118+
119+
// Normalized rotation of cycle 1
120+
vector<T> normalizedCycle1(data1);
121+
auto minIterator1 = min_element(normalizedCycle1.begin(), normalizedCycle1.end());
122+
rotate(normalizedCycle1.begin(), minIterator1, normalizedCycle1.end());
123+
124+
// Normalized rotation of cycle 2
125+
vector<T> normalizedCycle2(data2);
126+
auto minIterator2 = min_element(normalizedCycle2.begin(), normalizedCycle2.end());
127+
rotate(normalizedCycle2.begin(), minIterator2, normalizedCycle2.end());
128+
129+
// Check clock wise
130+
if (normalizedCycle1 == normalizedCycle2)
131+
{
132+
return true;
133+
}
134+
135+
// Check counter clock wise
136+
reverse(normalizedCycle2.begin() + 1, normalizedCycle2.end());
137+
return (normalizedCycle1 == normalizedCycle2);
124138
}
125139
};

Tests/0003_Graph/0005_HamiltonianPathAndCycleTest.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ namespace HamiltonianPathAndCycleTest
2424
bool isHamiltonianPathPresent = graph.IsHamiltonianPathPresent();
2525

2626
vector<int> hamiltonianPathActualResult = graph.GetHamiltonianPath();
27-
vector<int> hamiltonianPathExpectedResult = { 2, 4, 3, 0, 1 };
27+
vector<int> hamiltonianPathExpectedResult = { 4, 3, 0, 1, 2 };
2828

2929
ASSERT_TRUE(isHamiltonianCyclePresent);
3030
ASSERT_TRUE(isHamiltonianPathPresent);
31-
EXPECT_EQ(unitTestHelper.NormalizeCycle(hamiltonianPathActualResult), unitTestHelper.NormalizeCycle(hamiltonianPathExpectedResult));
31+
ASSERT_TRUE(unitTestHelper.NormalizeCyclesAnCompare(hamiltonianPathActualResult, hamiltonianPathExpectedResult));
3232
}
3333
}

0 commit comments

Comments
 (0)