diff --git a/routing/routing_integration_tests/osrm_turn_test.cpp b/routing/routing_integration_tests/osrm_turn_test.cpp index a77d6e143b..0c2b746ea5 100644 --- a/routing/routing_integration_tests/osrm_turn_test.cpp +++ b/routing/routing_integration_tests/osrm_turn_test.cpp @@ -348,3 +348,18 @@ UNIT_TEST(RussiaMoscowLeningradskiyPrptToTheCenterUTurnTest) integration::TestTurnCount(route, 2); integration::GetNthTurn(route, 0).TestValid().TestDirection(TurnDirection::TurnLeft); } + +// Test case: checking that no unnecessary turn on a serpentine road. +// This test was written after reducing factors kMaxPointsCount and kMinDistMeters. +UNIT_TEST(SwitzerlandSamstagernBergstrasseTest) +{ + TRouteResult const routeResult = integration::CalculateRoute( + integration::GetOsrmComponents(), MercatorBounds::FromLatLon(47.19300, 8.67568), {0., 0.}, + MercatorBounds::FromLatLon(47.19162, 8.67590)); + + Route const & route = *routeResult.first; + IRouter::ResultCode const result = routeResult.second; + + TEST_EQUAL(result, IRouter::NoError, ()); + integration::TestTurnCount(route, 0); +} diff --git a/routing/turns_generator.cpp b/routing/turns_generator.cpp index 63721bc686..e2766dc17a 100644 --- a/routing/turns_generator.cpp +++ b/routing/turns_generator.cpp @@ -22,8 +22,8 @@ using namespace routing::turns; namespace { double const kFeaturesNearTurnMeters = 3.0; -size_t constexpr kMaxPointsCount = 7; -double constexpr kMinDistMeters = 300.; +size_t constexpr kMaxPointsCount = 5; +double constexpr kMinDistMeters = 200.; size_t constexpr kNotSoCloseMaxPointsCount = 3; double constexpr kNotSoCloseMinDistMeters = 30.;