diff --git a/include/server/api/table_parameter_grammar.hpp b/include/server/api/table_parameter_grammar.hpp index 00fe7031d..b95b1b8c5 100644 --- a/include/server/api/table_parameter_grammar.hpp +++ b/include/server/api/table_parameter_grammar.hpp @@ -32,15 +32,11 @@ struct TableParametersGrammar final : public BaseParametersGrammar }; // TODO: ulonglong -> size_t not only on Windows but on all 32 bit platforms; unsupported anyway as of now #ifdef WIN32 - destinations_rule = (qi::lit("destinations=") > (qi::ulong_long % ";")[set_destiantions]) | - qi::lit("destinations=all"); - sources_rule = - (qi::lit("sources=") > (qi::ulong_long % ";")[set_sources]) | qi::lit("sources=all"); + destinations_rule = qi::lit("destinations=all") | (qi::lit("destinations=") > (qi::ulong_long % ";")[set_destiantions]); + sources_rule = qi::lit("sources=all") | (qi::lit("sources=") > (qi::ulong_long % ";")[set_sources]); #else - destinations_rule = (qi::lit("destinations=") > (qi::ulong_ % ";")[set_destiantions]) | - qi::lit("destinations=all"); - sources_rule = - (qi::lit("sources=") > (qi::ulong_ % ";")[set_sources]) | qi::lit("sources=all"); + destinations_rule = qi::lit("destinations=all") | (qi::lit("destinations=") > (qi::ulong_ % ";")[set_destiantions]); + sources_rule = qi::lit("sources=all") | (qi::lit("sources=") > (qi::ulong_ % ";")[set_sources]); #endif table_rule = destinations_rule | sources_rule; diff --git a/unit_tests/server/parameters_parser.cpp b/unit_tests/server/parameters_parser.cpp index bb61cbc00..ecf98f205 100644 --- a/unit_tests/server/parameters_parser.cpp +++ b/unit_tests/server/parameters_parser.cpp @@ -196,23 +196,32 @@ BOOST_AUTO_TEST_CASE(valid_route_urls) CHECK_EQUAL_RANGE(reference_6.coordinates, result_6->coordinates); auto result_7 = parseParameters("1,2;3,4?radiuses=;unlimited"); + RouteParameters reference_7{}; + reference_7.coordinates = coords_1; + reference_7.radiuses = {boost::none, boost::make_optional(std::numeric_limits::infinity())}; BOOST_CHECK(result_7); - BOOST_CHECK_EQUAL(reference_1.steps, result_7->steps); - BOOST_CHECK_EQUAL(reference_1.alternatives, result_7->alternatives); - BOOST_CHECK_EQUAL(reference_1.geometries, result_7->geometries); - BOOST_CHECK_EQUAL(reference_1.overview, result_7->overview); - BOOST_CHECK_EQUAL(reference_1.continue_straight, result_7->continue_straight); - CHECK_EQUAL_RANGE(reference_1.bearings, result_7->bearings); - CHECK_EQUAL_RANGE(reference_1.radiuses, result_7->radiuses); - CHECK_EQUAL_RANGE(reference_1.coordinates, result_7->coordinates); + BOOST_CHECK_EQUAL(reference_7.steps, result_7->steps); + BOOST_CHECK_EQUAL(reference_7.alternatives, result_7->alternatives); + BOOST_CHECK_EQUAL(reference_7.geometries, result_7->geometries); + BOOST_CHECK_EQUAL(reference_7.overview, result_7->overview); + BOOST_CHECK_EQUAL(reference_7.continue_straight, result_7->continue_straight); + CHECK_EQUAL_RANGE(reference_7.bearings, result_7->bearings); + CHECK_EQUAL_RANGE(reference_7.radiuses, result_7->radiuses); + CHECK_EQUAL_RANGE(reference_7.coordinates, result_7->coordinates); auto result_8 = parseParameters("1,2;3,4?radiuses=;"); + RouteParameters reference_8{}; + reference_8.coordinates = coords_1; + reference_8.radiuses = {boost::none, boost::none}; BOOST_CHECK(result_8); - CHECK_EQUAL_RANGE(result_8->radiuses, result_7->radiuses); + CHECK_EQUAL_RANGE(reference_8.radiuses, result_8->radiuses); - auto result_9 = parseParameters("1,2;3,4?radiuses="); + auto result_9 = parseParameters("1,2?radiuses="); + RouteParameters reference_9{}; + reference_9.coordinates = coords_1; + reference_9.radiuses = {boost::none}; BOOST_CHECK(result_9); - CHECK_EQUAL_RANGE(result_9->radiuses, result_7->radiuses); + CHECK_EQUAL_RANGE(reference_9.radiuses, result_9->radiuses); } BOOST_AUTO_TEST_CASE(valid_table_urls)