diff --git a/routing/routing_integration_tests/bicycle_turn_test.cpp b/routing/routing_integration_tests/bicycle_turn_test.cpp index 448a55d887..aeddcd3ace 100644 --- a/routing/routing_integration_tests/bicycle_turn_test.cpp +++ b/routing/routing_integration_tests/bicycle_turn_test.cpp @@ -54,3 +54,16 @@ UNIT_TEST(RussiaMoscowSalameiNerisPossibleTurnCorrectionBicycleWayTurnTest) integration::GetNthTurn(route, 0).TestValid().TestDirection(TurnDirection::TurnSlightRight); } + +UNIT_TEST(RussiaMoscowSevTushinoParkBicycleOnePointTurnTest) +{ + m2::PointD const point = MercatorBounds::FromLatLon(55.8719, 37.4464); + TRouteResult const routeResult = integration::CalculateRoute( + integration::GetBicycleComponents(), point, {0.0, 0.0}, point); + + Route const & route = *routeResult.first; + IRouter::ResultCode const result = routeResult.second; + TEST_EQUAL(result, IRouter::NoError, ()); + TEST_EQUAL(route.GetTurns().size(), 0, ()); + integration::TestRouteLength(route, 0.0); +} diff --git a/routing/routing_integration_tests/pedestrian_route_test.cpp b/routing/routing_integration_tests/pedestrian_route_test.cpp index 87b0515f40..6107515e01 100644 --- a/routing/routing_integration_tests/pedestrian_route_test.cpp +++ b/routing/routing_integration_tests/pedestrian_route_test.cpp @@ -515,3 +515,16 @@ UNIT_TEST(MoscowChistiePrudiSelectPointsInConnectedGraph) MercatorBounds::FromLatLon(55.76613, 37.63769), {0., 0.}, MercatorBounds::FromLatLon(55.76593, 37.63893), 134.02); } + +UNIT_TEST(RussiaMoscowSevTushinoParkPedestrianOnePointTurnTest) +{ + m2::PointD const point = MercatorBounds::FromLatLon(55.8719, 37.4464); + TRouteResult const routeResult = integration::CalculateRoute( + integration::GetPedestrianComponents(), point, {0.0, 0.0}, point); + + Route const & route = *routeResult.first; + IRouter::ResultCode const result = routeResult.second; + TEST_EQUAL(result, IRouter::NoError, ()); + integration::TestTurnCount(route, 0); + integration::TestRouteLength(route, 0.0); +} diff --git a/routing/routing_integration_tests/routing_test_tools.cpp b/routing/routing_integration_tests/routing_test_tools.cpp index ccfb61ab02..24e880516c 100644 --- a/routing/routing_integration_tests/routing_test_tools.cpp +++ b/routing/routing_integration_tests/routing_test_tools.cpp @@ -36,6 +36,8 @@ using TRouterFactory = namespace { + double kErrorMeters = 1.0; + double kErrorSeconds = 1.0; void ChangeMaxNumberOfOpenFiles(size_t n) { struct rlimit rlp; @@ -242,7 +244,9 @@ namespace integration void TestRouteLength(Route const & route, double expectedRouteMeters, double relativeError) { - double const delta = expectedRouteMeters * relativeError; + double delta = expectedRouteMeters * relativeError; + if (delta < kErrorMeters) + delta = kErrorMeters; double const routeMeters = route.GetTotalDistanceMeters(); TEST(my::AlmostEqualAbs(routeMeters, expectedRouteMeters, delta), ("Route length test failed. Expected:", expectedRouteMeters, "have:", routeMeters, "delta:", delta)); @@ -250,7 +254,9 @@ namespace integration void TestRouteTime(Route const & route, double expectedRouteSeconds, double relativeError) { - double const delta = expectedRouteSeconds * relativeError; + double delta = expectedRouteSeconds * relativeError; + if (delta < kErrorSeconds) + delta = kErrorSeconds; double const routeSeconds = route.GetTotalTimeSec(); TEST(my::AlmostEqualAbs(routeSeconds, expectedRouteSeconds, delta), ("Route time test failed. Expected:", expectedRouteSeconds, "have:", routeSeconds, "delta:", delta));