#include "util/conditional_restrictions.hpp" #include #include BOOST_AUTO_TEST_SUITE(conditional_restrictions) BOOST_AUTO_TEST_CASE(check_conditional_restrictions_grammar) { using osrm::util::ParseConditionalRestrictions; const std::string restrictions[] = {"120 @ (06:00-19:00)", "120 @ (06:00-20:00); 100 @ (22:00-06:00)", "120 @ 06:00-20:00; 100 @ 22:00-06:00", "destination @ (weight>5.5)", "no_left_turn @ (10:00-18:00 AND length>5)", "no @ (Mo-Fr 06:00-19:00; Sa 12:00-17:00)"}; for (auto &restriction : restrictions) { BOOST_CHECK_MESSAGE(!ParseConditionalRestrictions(restriction).empty(), "parsing " << restriction << " failed"); } } BOOST_AUTO_TEST_CASE(check_conditional_restrictions_values) { using osrm::util::ParseConditionalRestrictions; auto restrictions = ParseConditionalRestrictions("120 @ 06:00-20:00; 100 @ (22:00-06:00 AND length>5)"); BOOST_REQUIRE_EQUAL(restrictions.size(), 2); BOOST_CHECK_EQUAL(restrictions.at(0).value, "120"); BOOST_CHECK_EQUAL(restrictions.at(0).condition, "06:00-20:00"); BOOST_CHECK_EQUAL(restrictions.at(1).value, "100"); BOOST_CHECK_EQUAL(restrictions.at(1).condition, "22:00-06:00 AND length>5"); } BOOST_AUTO_TEST_SUITE_END()