From 5c83b3debdaa336c207b19965aead892a43992f9 Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Mon, 4 Apr 2016 16:31:40 +0300 Subject: [PATCH] More tests. --- routing/route.cpp | 6 +++--- routing/routing_tests/route_tests.cpp | 31 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/routing/route.cpp b/routing/route.cpp index b1a8ceb130..ad1ad6015c 100644 --- a/routing/route.cpp +++ b/routing/route.cpp @@ -169,7 +169,7 @@ void Route::GetStreetNameAfterIdx(uint32_t idx, string & name) const for (;it != m_streets.cend(); ++it) if (!it->second.empty()) { - if (m_poly.GetDistanceM(polyIter, m_poly.GetIterToIndex(it->first)) < kSteetNameLinkMeters) + if (m_poly.GetDistanceM(polyIter, m_poly.GetIterToIndex(max(it->first, static_cast(polyIter.m_ind)))) < kSteetNameLinkMeters) name = it->second; return; } @@ -187,14 +187,14 @@ Route::TStreets::const_iterator Route::GetCurrentStreetNameIterAfter(FollowedPol TStreets::const_iterator prevIter = curIter; curIter++; - while (curIter->first<=iter.m_ind) + while (curIter->first < iter.m_ind) { ++prevIter; ++curIter; if (curIter==m_streets.cend()) return curIter; } - return prevIter; + return curIter->first == iter.m_ind ? curIter : prevIter; } bool Route::GetCurrentTurn(double & distanceToTurnMeters, turns::TurnItem & turn) const diff --git a/routing/routing_tests/route_tests.cpp b/routing/routing_tests/route_tests.cpp index fd65001cbe..aa512729dd 100644 --- a/routing/routing_tests/route_tests.cpp +++ b/routing/routing_tests/route_tests.cpp @@ -18,6 +18,7 @@ static vector const kTestGeometry({{0, 0}, {0,1}, {1,1}, {1,2}, {1,3 static vector const kTestTurns({turns::TurnItem(1, turns::TurnDirection::TurnLeft), turns::TurnItem(2, turns::TurnDirection::TurnRight), turns::TurnItem(4, turns::TurnDirection::ReachedYourDestination)}); +static Route::TStreets const kTestNames({{0,"Street1"}, {1, "Street2"}, {4, "Street3"}}); location::GpsInfo GetGps(double x, double y) { @@ -157,3 +158,33 @@ UNIT_TEST(NextTurnsTest) TEST_EQUAL(turnsDist.size(), 1, ()); } } + +UNIT_TEST(RouteNameTest) +{ + Route route("TestRouter"); + + route.SetGeometry(kTestGeometry.begin(), kTestGeometry.end()); + vector turns(kTestTurns); + route.SetTurnInstructions(turns); + Route::TStreets names(kTestNames); + route.SetStreetNames(names); + + string name; + route.GetCurrentStreetName(name); + TEST_EQUAL(name, "Street1", ()); + + route.GetStreetNameAfterIdx(0, name); + TEST_EQUAL(name, "Street1", ()); + + route.GetStreetNameAfterIdx(1, name); + TEST_EQUAL(name, "Street2", ()); + + route.GetStreetNameAfterIdx(2, name); + TEST_EQUAL(name, "Street2", ()); + + route.GetStreetNameAfterIdx(3, name); + TEST_EQUAL(name, "Street2", ()); + + route.GetStreetNameAfterIdx(4, name); + TEST_EQUAL(name, "Street3", ()); +}