[routing] Fix tests for new algorithms and data

This commit is contained in:
Denis Koronchik 2014-07-13 23:49:16 +02:00 committed by Alex Zolotarev
parent a50246e174
commit 448e23b603
6 changed files with 32 additions and 31 deletions

Binary file not shown.

Binary file not shown.

View file

@ -87,6 +87,7 @@ UNIT_TEST(Dijkstra_Router_City_Simple)
TestDijkstraRouterMWM(finalPos, startPos, expected2, 4);
}
UNIT_TEST(Dijkstra_Router_City_ReallyFunnyLoop)
{
// Uncomment to see debug log.
@ -95,22 +96,20 @@ UNIT_TEST(Dijkstra_Router_City_ReallyFunnyLoop)
RoadPos finalPos[] = { RoadPos(1, true, 0) };
RoadPos startPos[] = { RoadPos(1, true, 1) };
RoadPos expected1[] = { RoadPos(1, true, 1),
RoadPos(8, true, 0),
RoadPos(8, true, 1),
RoadPos(8, true, 2),
RoadPos(5, false, 0),
RoadPos(8, true, 3), // algorithm skips 8,2 segment
RoadPos(4, false, 0),
RoadPos(0, false, 1),
RoadPos(0, false, 0),
RoadPos(1, true, 0) };
TestDijkstraRouterMock(finalPos, startPos, expected1);
RoadPos expected2[] = { RoadPos(1, true, 1),
RoadPos(8, true, 1),
RoadPos(8, true, 2),
RoadPos(8, true, 3),
RoadPos(8, true, 4),
RoadPos(2, true, 0),
RoadPos(2, true, 1),
RoadPos(0, false, 0),
RoadPos(1, true, 0) };
TestDijkstraRouterMWM(finalPos, startPos, expected2, 9);
}

View file

@ -105,10 +105,10 @@ void FeatureRoadGraphTester::Name2FeatureID(vector<routing::RoadPos> & vec)
vec[i].GetPointId());
}
void FeatureRoadGraphTester::GetPossibleTurns(RoadPos const & pos, IRoadGraph::TurnsVectorT & vec)
void FeatureRoadGraphTester::GetPossibleTurns(RoadPos const & pos, IRoadGraph::TurnsVectorT & vec, bool noOptimize/* = true*/)
{
m_graph->GetPossibleTurns(RoadPos(m_mapping.GetId(strings::to_string(pos.GetFeatureId())),
pos.IsForward(), pos.GetPointId()), vec);
pos.IsForward(), pos.GetPointId()), vec, noOptimize);
FeatureID2Name(vec);
}
@ -128,6 +128,7 @@ void FeatureRoadGraphTester::ReconstructPath(routing::RoadPos (&arr)[N], vector<
using namespace routing_test;
UNIT_TEST(FRG_TurnsTest_MWM1)
{
FeatureRoadGraphTester tester("route_test1.mwm");
@ -135,20 +136,21 @@ UNIT_TEST(FRG_TurnsTest_MWM1)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(0, true, 1), vec);
TEST_EQUAL(vec.size(), 0, ());
TEST_EQUAL(vec.size(), 1, ());
TEST(TestResult(vec, RoadPos(0, true, 0), -1), ());
}
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(0, false, 1), vec);
TEST_EQUAL(vec.size(), 7, ());
TEST(TestResult(vec, RoadPos(0, false, 2), 5), ());
TEST(TestResult(vec, RoadPos(0, false, 3), 10), ());
TEST(TestResult(vec, RoadPos(1, true, 1), 5), ());
TEST(TestResult(vec, RoadPos(1, false, 2), 5), ());
TEST(TestResult(vec, RoadPos(2, true, 0), 10), ());
TEST(TestResult(vec, RoadPos(3, false, 0), 15), ());
TEST(TestResult(vec, RoadPos(3, true, 2), 15), ());
TEST(TestResult(vec, RoadPos(0, false, 2), -1), ());
TEST(TestResult(vec, RoadPos(0, false, 3), -1), ());
TEST(TestResult(vec, RoadPos(1, true, 1), -1), ());
TEST(TestResult(vec, RoadPos(1, false, 2), -1), ());
TEST(TestResult(vec, RoadPos(2, true, 0), -1), ());
TEST(TestResult(vec, RoadPos(3, false, 0), -1), ());
TEST(TestResult(vec, RoadPos(3, true, 2), -1), ());
}
{
@ -159,7 +161,7 @@ UNIT_TEST(FRG_TurnsTest_MWM1)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(1, false, 0), vec);
tester.GetPossibleTurns(RoadPos(1, false, 0), vec, false);
TEST_EQUAL(vec.size(), 3, ());
TEST(TestResult(vec, RoadPos(1, false, 2), 10), ());
TEST(TestResult(vec, RoadPos(0, true, 1), 10), ());
@ -173,7 +175,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(0, false, 0), vec);
tester.GetPossibleTurns(RoadPos(0, false, 0), vec, false);
TEST_EQUAL(vec.size(), 8, ());
TEST(TestResult(vec, RoadPos(0, false, 1), -1), ());
TEST(TestResult(vec, RoadPos(0, false, 2), -1), ());
@ -187,7 +189,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(8, true, 0), vec);
tester.GetPossibleTurns(RoadPos(8, true, 0), vec, false);
TEST_EQUAL(vec.size(), 2, ());
TEST(TestResult(vec, RoadPos(1, true, 1), -1), ());
TEST(TestResult(vec, RoadPos(8, true, 5), -1), ());
@ -195,7 +197,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(2, true, 1), vec);
tester.GetPossibleTurns(RoadPos(2, true, 1), vec, false);
TEST_EQUAL(vec.size(), 4, ());
TEST(TestResult(vec, RoadPos(3, true, 0), -1), ());
TEST(TestResult(vec, RoadPos(3, false, 1), -1), ());
@ -205,7 +207,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(3, false, 0), vec);
tester.GetPossibleTurns(RoadPos(3, false, 0), vec, false);
TEST_EQUAL(vec.size(), 5, ());
TEST(TestResult(vec, RoadPos(3, false, 1), -1), ());
TEST(TestResult(vec, RoadPos(3, false, 2), -1), ());
@ -229,7 +231,7 @@ UNIT_TEST(FRG_TurnsTest_MWM2)
{
IRoadGraph::TurnsVectorT vec;
tester.GetPossibleTurns(RoadPos(8, true, 3), vec);
tester.GetPossibleTurns(RoadPos(8, true, 3), vec, false);
TEST_EQUAL(vec.size(), 7, ());
TEST(TestResult(vec, RoadPos(8, true, 2), -1), ());
TEST(TestResult(vec, RoadPos(5, true, 0), -1), ());

View file

@ -39,7 +39,7 @@ public:
void FeatureID2Name(vector<routing::RoadPos> & vec);
void Name2FeatureID(vector<routing::RoadPos> & vec);
void GetPossibleTurns(routing::RoadPos const & pos, routing::IRoadGraph::TurnsVectorT & vec);
void GetPossibleTurns(routing::RoadPos const & pos, routing::IRoadGraph::TurnsVectorT & vec, bool noOptimize = true);
template <size_t N>
void ReconstructPath(routing::RoadPos (&arr)[N], vector<m2::PointD> & vec);

View file

@ -159,21 +159,21 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph)
RoadInfo ri1;
ri1.m_bothSides = false;
ri1.m_speedMS = 20;
ri1.m_speedMS = 40;
ri1.m_points.push_back(m2::PointD(0, 0));
ri1.m_points.push_back(m2::PointD(5, 10));
ri1.m_points.push_back(m2::PointD(5, 40));
RoadInfo ri2;
ri2.m_bothSides = false;
ri2.m_speedMS = 20;
ri2.m_speedMS = 40;
ri2.m_points.push_back(m2::PointD(12, 25));
ri2.m_points.push_back(m2::PointD(10, 10));
ri2.m_points.push_back(m2::PointD(10, 0));
RoadInfo ri3;
ri3.m_bothSides = true;
ri3.m_speedMS = 30;
ri3.m_speedMS = 40;
ri3.m_points.push_back(m2::PointD(5, 10));
ri3.m_points.push_back(m2::PointD(10, 10));
ri3.m_points.push_back(m2::PointD(70, 10));
@ -181,13 +181,13 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph)
RoadInfo ri4;
ri4.m_bothSides = true;
ri4.m_speedMS = 20;
ri4.m_speedMS = 40;
ri4.m_points.push_back(m2::PointD(25, 0));
ri4.m_points.push_back(m2::PointD(27, 25));
RoadInfo ri5;
ri5.m_bothSides = true;
ri5.m_speedMS = 30;
ri5.m_speedMS = 40;
ri5.m_points.push_back(m2::PointD(35, 0));
ri5.m_points.push_back(m2::PointD(37, 30));
ri5.m_points.push_back(m2::PointD(70, 30));
@ -195,20 +195,20 @@ void InitRoadGraphMockSourceWithTest2(RoadGraphMockSource & graph)
RoadInfo ri6;
ri6.m_bothSides = true;
ri6.m_speedMS = 20;
ri6.m_speedMS = 40;
ri6.m_points.push_back(m2::PointD(70, 0));
ri6.m_points.push_back(m2::PointD(70, 10));
ri6.m_points.push_back(m2::PointD(70, 30));
RoadInfo ri7;
ri7.m_bothSides = true;
ri7.m_speedMS = 20;
ri7.m_speedMS = 40;
ri7.m_points.push_back(m2::PointD(39, 55));
ri7.m_points.push_back(m2::PointD(80, 55));
RoadInfo ri8;
ri8.m_bothSides = false;
ri8.m_speedMS = 30;
ri8.m_speedMS = 40;
ri8.m_points.push_back(m2::PointD(5, 40));
ri8.m_points.push_back(m2::PointD(18, 55));
ri8.m_points.push_back(m2::PointD(39, 55));