From 135a8b2b1545094a14f9d7327fb540d1ba29df6a Mon Sep 17 00:00:00 2001 From: Lev Dragunov Date: Tue, 17 Nov 2015 19:07:10 +0300 Subject: [PATCH] UTurn integration test. --- .../osrm_turn_test.cpp | 22 ++++++++++++++++--- routing/turns_generator.cpp | 6 ++++- routing/turns_generator.hpp | 1 - 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/routing/routing_integration_tests/osrm_turn_test.cpp b/routing/routing_integration_tests/osrm_turn_test.cpp index 0c2b746ea5..b504e78ee6 100644 --- a/routing/routing_integration_tests/osrm_turn_test.cpp +++ b/routing/routing_integration_tests/osrm_turn_test.cpp @@ -23,7 +23,7 @@ UNIT_TEST(RussiaMoscowLenigradskiy39UturnTurnTest) integration::GetNthTurn(route, 0) .TestValid() - .TestOneOfDirections({TurnDirection::TurnSlightLeft, TurnDirection::TurnLeft}); + .TestDirection(TurnDirection::UTurnLeft); integration::GetNthTurn(route, 1) .TestValid() .TestDirection(TurnDirection::TurnRight); @@ -138,6 +138,22 @@ UNIT_TEST(RussiaMoscowTTKKashirskoeShosseOutTurnTest) {TurnDirection::TurnSlightRight, TurnDirection::TurnRight}); } +UNIT_TEST(RussiaMoscowSchelkovskoeShosseUTurnTest) +{ + TRouteResult const routeResult = integration::CalculateRoute( + integration::GetOsrmComponents(), + MercatorBounds::FromLatLon(55.80967, 37.78037), {0., 0.}, + MercatorBounds::FromLatLon(55.80955, 37.78056)); + + Route const & route = *routeResult.first; + IRouter::ResultCode const result = routeResult.second; + + TEST_EQUAL(result, IRouter::NoError, ()); + integration::TestTurnCount(route, 1); + // Checking a turn in case going from a not-link to a link + integration::GetNthTurn(route, 0).TestValid().TestDirection(TurnDirection::UTurnLeft); +} + UNIT_TEST(RussiaMoscowPankratevskiPerBolshaySuharedskazPloschadTurnTest) { TRouteResult const routeResult = integration::CalculateRoute( @@ -345,8 +361,8 @@ UNIT_TEST(RussiaMoscowLeningradskiyPrptToTheCenterUTurnTest) IRouter::ResultCode const result = routeResult.second; TEST_EQUAL(result, IRouter::NoError, ()); - integration::TestTurnCount(route, 2); - integration::GetNthTurn(route, 0).TestValid().TestDirection(TurnDirection::TurnLeft); + integration::TestTurnCount(route, 1); + integration::GetNthTurn(route, 0).TestValid().TestDirection(TurnDirection::UTurnLeft); } // Test case: checking that no unnecessary turn on a serpentine road. diff --git a/routing/turns_generator.cpp b/routing/turns_generator.cpp index 786c83b0f1..3c7bc3ba10 100644 --- a/routing/turns_generator.cpp +++ b/routing/turns_generator.cpp @@ -890,7 +890,7 @@ void GetTurnDirection(Index const & index, RoutingMapping & mapping, TurnInfo & size_t CheckUTurnOnRoute(vector const & segments, size_t currentSegment, TurnItem & turn) { - size_t constexpr kUTurnLookAhead = 5; + size_t constexpr kUTurnLookAhead = 3; double const kUTurnHeadingSensitivity = math::pi / 10.0; ASSERT_GREATER(segments.size(), 1, ()); @@ -930,6 +930,10 @@ size_t CheckUTurnOnRoute(vector const & segments, size_t curr turn.m_turn = TurnDirection::UTurnRight; return ++i; } + else + { + return 0; + } } } diff --git a/routing/turns_generator.hpp b/routing/turns_generator.hpp index 6c5f7fcec6..d328b79238 100644 --- a/routing/turns_generator.hpp +++ b/routing/turns_generator.hpp @@ -148,6 +148,5 @@ void GetTurnDirection(Index const & index, RoutingMapping & mapping, turns::Turn * Returns 0 otherwise. */ size_t CheckUTurnOnRoute(vector const & segments, size_t currentSegment, TurnItem & turn); - } // namespace routing } // namespace turns