Fix parser tests and destinations=all / sources=all

This commit is contained in:
Patrick Niklaus 2016-04-22 11:01:15 +02:00
parent a6c7529a4e
commit 82df0ca766
No known key found for this signature in database
GPG Key ID: E426891B5F978B1B
2 changed files with 24 additions and 19 deletions

View File

@ -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 // TODO: ulonglong -> size_t not only on Windows but on all 32 bit platforms; unsupported anyway as of now
#ifdef WIN32 #ifdef WIN32
destinations_rule = (qi::lit("destinations=") > (qi::ulong_long % ";")[set_destiantions]) | destinations_rule = qi::lit("destinations=all") | (qi::lit("destinations=") > (qi::ulong_long % ";")[set_destiantions]);
qi::lit("destinations=all"); sources_rule = qi::lit("sources=all") | (qi::lit("sources=") > (qi::ulong_long % ";")[set_sources]);
sources_rule =
(qi::lit("sources=") > (qi::ulong_long % ";")[set_sources]) | qi::lit("sources=all");
#else #else
destinations_rule = (qi::lit("destinations=") > (qi::ulong_ % ";")[set_destiantions]) | destinations_rule = qi::lit("destinations=all") | (qi::lit("destinations=") > (qi::ulong_ % ";")[set_destiantions]);
qi::lit("destinations=all"); sources_rule = qi::lit("sources=all") | (qi::lit("sources=") > (qi::ulong_ % ";")[set_sources]);
sources_rule =
(qi::lit("sources=") > (qi::ulong_ % ";")[set_sources]) | qi::lit("sources=all");
#endif #endif
table_rule = destinations_rule | sources_rule; table_rule = destinations_rule | sources_rule;

View File

@ -196,23 +196,32 @@ BOOST_AUTO_TEST_CASE(valid_route_urls)
CHECK_EQUAL_RANGE(reference_6.coordinates, result_6->coordinates); CHECK_EQUAL_RANGE(reference_6.coordinates, result_6->coordinates);
auto result_7 = parseParameters<RouteParameters>("1,2;3,4?radiuses=;unlimited"); auto result_7 = parseParameters<RouteParameters>("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<double>::infinity())};
BOOST_CHECK(result_7); BOOST_CHECK(result_7);
BOOST_CHECK_EQUAL(reference_1.steps, result_7->steps); BOOST_CHECK_EQUAL(reference_7.steps, result_7->steps);
BOOST_CHECK_EQUAL(reference_1.alternatives, result_7->alternatives); BOOST_CHECK_EQUAL(reference_7.alternatives, result_7->alternatives);
BOOST_CHECK_EQUAL(reference_1.geometries, result_7->geometries); BOOST_CHECK_EQUAL(reference_7.geometries, result_7->geometries);
BOOST_CHECK_EQUAL(reference_1.overview, result_7->overview); BOOST_CHECK_EQUAL(reference_7.overview, result_7->overview);
BOOST_CHECK_EQUAL(reference_1.continue_straight, result_7->continue_straight); BOOST_CHECK_EQUAL(reference_7.continue_straight, result_7->continue_straight);
CHECK_EQUAL_RANGE(reference_1.bearings, result_7->bearings); CHECK_EQUAL_RANGE(reference_7.bearings, result_7->bearings);
CHECK_EQUAL_RANGE(reference_1.radiuses, result_7->radiuses); CHECK_EQUAL_RANGE(reference_7.radiuses, result_7->radiuses);
CHECK_EQUAL_RANGE(reference_1.coordinates, result_7->coordinates); CHECK_EQUAL_RANGE(reference_7.coordinates, result_7->coordinates);
auto result_8 = parseParameters<RouteParameters>("1,2;3,4?radiuses=;"); auto result_8 = parseParameters<RouteParameters>("1,2;3,4?radiuses=;");
RouteParameters reference_8{};
reference_8.coordinates = coords_1;
reference_8.radiuses = {boost::none, boost::none};
BOOST_CHECK(result_8); 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<RouteParameters>("1,2;3,4?radiuses="); auto result_9 = parseParameters<RouteParameters>("1,2?radiuses=");
RouteParameters reference_9{};
reference_9.coordinates = coords_1;
reference_9.radiuses = {boost::none};
BOOST_CHECK(result_9); 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) BOOST_AUTO_TEST_CASE(valid_table_urls)