From 7f39c9fcb0d6f148ccd3c2ae12c3f38d2223f105 Mon Sep 17 00:00:00 2001 From: karenzshea Date: Fri, 10 Feb 2017 16:52:36 +0100 Subject: [PATCH] add unit test to check that speeds are equal to distance/duration --- unit_tests/library/route.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/unit_tests/library/route.cpp b/unit_tests/library/route.cpp index b6cc49adf..37ec5a1ae 100644 --- a/unit_tests/library/route.cpp +++ b/unit_tests/library/route.cpp @@ -387,4 +387,39 @@ BOOST_AUTO_TEST_CASE(test_route_user_disables_generating_hints) BOOST_CHECK_EQUAL(waypoint.get().values.count("hint"), 0); } +BOOST_AUTO_TEST_CASE(speed_annotation_matches_duration_and_distance) +{ + const auto args = get_args(); + auto osrm = getOSRM(args.at(0)); + + using namespace osrm; + + RouteParameters params{}; + params.annotations_type = RouteParameters::AnnotationsType::Duration | + RouteParameters::AnnotationsType::Distance | + RouteParameters::AnnotationsType::Speed; + params.coordinates.push_back(get_dummy_location()); + params.coordinates.push_back(get_dummy_location()); + + json::Object result; + const auto rc = osrm.Route(params, result); + BOOST_CHECK(rc == Status::Ok); + + const auto &routes = result.values["routes"].get().values; + const auto &legs = routes[0].get().values.at("legs").get().values; + const auto &annotation = + legs[0].get().values.at("annotation").get(); + const auto &speeds = annotation.values.at("speed").get().values; + const auto &durations = annotation.values.at("duration").get().values; + const auto &distances = annotation.values.at("distance").get().values; + int length = speeds.size(); + for (int i = 0; i < length; i++) + { + auto speed = speeds[i].get().value; + auto duration = durations[i].get().value; + auto distance = distances[i].get().value; + BOOST_CHECK_EQUAL(speed, distance / duration); + } +} + BOOST_AUTO_TEST_SUITE_END()