From 26b27bffaf201a3cf80a460ee41584740184a079 Mon Sep 17 00:00:00 2001 From: "Daniel J. Hofmann" Date: Wed, 16 Mar 2016 14:53:14 +0100 Subject: [PATCH] Tests for config level constraints; table failing: see #2100 --- unit_tests/library/{args.h => args.hpp} | 0 unit_tests/library/fixture.hpp | 20 ++++ unit_tests/library/limits.cpp | 135 ++++++++++++++++++++++++ unit_tests/library/match.cpp | 2 +- unit_tests/library/nearest.cpp | 2 +- unit_tests/library/route.cpp | 10 +- unit_tests/library/table.cpp | 2 +- unit_tests/library/tile.cpp | 2 +- unit_tests/library/trip.cpp | 2 +- 9 files changed, 163 insertions(+), 12 deletions(-) rename unit_tests/library/{args.h => args.hpp} (100%) create mode 100644 unit_tests/library/fixture.hpp create mode 100644 unit_tests/library/limits.cpp diff --git a/unit_tests/library/args.h b/unit_tests/library/args.hpp similarity index 100% rename from unit_tests/library/args.h rename to unit_tests/library/args.hpp diff --git a/unit_tests/library/fixture.hpp b/unit_tests/library/fixture.hpp new file mode 100644 index 0000000000..273fda25ff --- /dev/null +++ b/unit_tests/library/fixture.hpp @@ -0,0 +1,20 @@ +#ifndef OSRM_LIBRARY_TEST_FIXTURE +#define OSRM_LIBRARY_TEST_FIXTURE + +#include "osrm/engine_config.hpp" +#include "osrm/osrm.hpp" + +#include + +// I couldn't get Boost.UnitTest to provide a test suite level fixture with custom +// arguments per test suite (osrm base path from argv), so this has to suffice. + +inline osrm::OSRM get_osrm(const std::string &base_path) +{ + osrm::EngineConfig config{base_path}; + config.use_shared_memory = false; + + return osrm::OSRM{config}; +} + +#endif diff --git a/unit_tests/library/limits.cpp b/unit_tests/library/limits.cpp new file mode 100644 index 0000000000..f14e7e6a96 --- /dev/null +++ b/unit_tests/library/limits.cpp @@ -0,0 +1,135 @@ +#include +#include + +#include "args.hpp" + +#include "osrm/trip_parameters.hpp" +#include "osrm/route_parameters.hpp" +#include "osrm/table_parameters.hpp" +#include "osrm/match_parameters.hpp" + +#include "osrm/coordinate.hpp" +#include "osrm/engine_config.hpp" +#include "osrm/json_container.hpp" +#include "osrm/status.hpp" +#include "osrm/osrm.hpp" + +BOOST_AUTO_TEST_SUITE(limits) + +BOOST_AUTO_TEST_CASE(test_trip_limits) +{ + const auto args = get_args(); + BOOST_REQUIRE_EQUAL(args.size(), 1); + + using namespace osrm; + + EngineConfig config{args[0]}; + config.use_shared_memory = false; + config.max_locations_trip = 2; + + OSRM osrm{config}; + + TripParameters params; + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + + json::Object result; + + const auto rc = osrm.Trip(params, result); + + BOOST_CHECK(rc == Status::Error); + + // Make sure we're not accidentally hitting a guard code path before + const auto code = result.values["code"].get().value; + BOOST_CHECK(code == "TooBig"); // per the New-Server API spec +} + +BOOST_AUTO_TEST_CASE(test_route_limits) +{ + const auto args = get_args(); + BOOST_REQUIRE_EQUAL(args.size(), 1); + + using namespace osrm; + + EngineConfig config{args[0]}; + config.use_shared_memory = false; + config.max_locations_viaroute = 2; + + OSRM osrm{config}; + + RouteParameters params; + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + + json::Object result; + + const auto rc = osrm.Route(params, result); + + BOOST_CHECK(rc == Status::Error); + + // Make sure we're not accidentally hitting a guard code path before + const auto code = result.values["code"].get().value; + BOOST_CHECK(code == "TooBig"); // per the New-Server API spec +} + +BOOST_AUTO_TEST_CASE(test_table_limits) +{ + const auto args = get_args(); + BOOST_REQUIRE_EQUAL(args.size(), 1); + + using namespace osrm; + + EngineConfig config{args[0]}; + config.use_shared_memory = false; + config.max_locations_distance_table = 2; + + OSRM osrm{config}; + + TableParameters params; + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + + json::Object result; + + const auto rc = osrm.Table(params, result); + + BOOST_CHECK(rc == Status::Error); + + // Make sure we're not accidentally hitting a guard code path before + const auto code = result.values["code"].get().value; + BOOST_CHECK(code == "TooBig"); // per the New-Server API spec +} + +BOOST_AUTO_TEST_CASE(test_match_limits) +{ + const auto args = get_args(); + BOOST_REQUIRE_EQUAL(args.size(), 1); + + using namespace osrm; + + EngineConfig config{args[0]}; + config.use_shared_memory = false; + config.max_locations_map_matching = 2; + + OSRM osrm{config}; + + MatchParameters params; + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); + + json::Object result; + + const auto rc = osrm.Match(params, result); + + BOOST_CHECK(rc == Status::Error); + + // Make sure we're not accidentally hitting a guard code path before + const auto code = result.values["code"].get().value; + BOOST_CHECK(code == "TooBig"); // per the New-Server API spec +} + +BOOST_AUTO_TEST_SUITE_END() diff --git a/unit_tests/library/match.cpp b/unit_tests/library/match.cpp index cfe3596aab..db4329b843 100644 --- a/unit_tests/library/match.cpp +++ b/unit_tests/library/match.cpp @@ -1,7 +1,7 @@ #include #include -#include "args.h" +#include "args.hpp" #include "osrm/match_parameters.hpp" diff --git a/unit_tests/library/nearest.cpp b/unit_tests/library/nearest.cpp index e7c820e73b..d408633806 100644 --- a/unit_tests/library/nearest.cpp +++ b/unit_tests/library/nearest.cpp @@ -1,7 +1,7 @@ #include #include -#include "args.h" +#include "args.hpp" #include "osrm/nearest_parameters.hpp" diff --git a/unit_tests/library/route.cpp b/unit_tests/library/route.cpp index 36f301c288..4cab3db26f 100644 --- a/unit_tests/library/route.cpp +++ b/unit_tests/library/route.cpp @@ -1,7 +1,8 @@ #include #include -#include "args.h" +#include "args.hpp" +#include "fixture.hpp" #include "osrm/route_parameters.hpp" @@ -16,15 +17,10 @@ BOOST_AUTO_TEST_SUITE(route) BOOST_AUTO_TEST_CASE(test_route) { const auto args = get_args(); - BOOST_REQUIRE_EQUAL(args.size(), 1); + auto osrm = get_osrm(args.at(0)); using namespace osrm; - EngineConfig config{args[0]}; - config.use_shared_memory = false; - - OSRM osrm{config}; - RouteParameters params; params.coordinates.emplace_back(util::FloatLongitude{}, util::FloatLatitude{}); diff --git a/unit_tests/library/table.cpp b/unit_tests/library/table.cpp index 0d673bcd78..47620b9dfb 100644 --- a/unit_tests/library/table.cpp +++ b/unit_tests/library/table.cpp @@ -1,7 +1,7 @@ #include #include -#include "args.h" +#include "args.hpp" #include "osrm/table_parameters.hpp" diff --git a/unit_tests/library/tile.cpp b/unit_tests/library/tile.cpp index bee03a6369..8d09d2bd9a 100644 --- a/unit_tests/library/tile.cpp +++ b/unit_tests/library/tile.cpp @@ -1,7 +1,7 @@ #include #include -#include "args.h" +#include "args.hpp" #include "osrm/tile_parameters.hpp" diff --git a/unit_tests/library/trip.cpp b/unit_tests/library/trip.cpp index 4c8b24349f..88785c4a0d 100644 --- a/unit_tests/library/trip.cpp +++ b/unit_tests/library/trip.cpp @@ -1,7 +1,7 @@ #include #include -#include "args.h" +#include "args.hpp" #include "osrm/trip_parameters.hpp"