Add tests for bearing parsing
This commit is contained in:
		
							parent
							
								
									944947962b
								
							
						
					
					
						commit
						27a2b061bf
					
				| @ -37,8 +37,12 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<std::string::iterator> | ||||
|                           engine::api::BaseParameters ¶meters_) | ||||
|         : BaseParametersGrammar::base_type(child_rule), base_parameters(parameters_) | ||||
|     { | ||||
|         const auto add_bearing = [this](const boost::fusion::vector<short, short> &bearing_range) { | ||||
|             engine::api::BaseParameters::Bearing bearing{boost::fusion::at_c<0>(bearing_range), boost::fusion::at_c<1>(bearing_range)}; | ||||
|         const auto add_bearing = [this](const boost::optional<boost::fusion::vector<short, short>> &bearing_range) { | ||||
|             boost::optional<engine::api::BaseParameters::Bearing> bearing; | ||||
|             if (bearing_range) | ||||
|             { | ||||
|                 bearing = engine::api::BaseParameters::Bearing {boost::fusion::at_c<0>(*bearing_range), boost::fusion::at_c<1>(*bearing_range)}; | ||||
|             } | ||||
|             base_parameters.bearings.push_back(std::move(bearing)); | ||||
|         }; | ||||
|         const auto set_radiuses = [this](RadiusesT& radiuses) { | ||||
| @ -57,7 +61,7 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<std::string::iterator> | ||||
|         radiuses_rule = qi::lit("radiuses=") >> -qi::double_ % ";"; | ||||
|         hints_rule = qi::lit("hints=") >> qi::as_string[qi::repeat(engine::ENCODED_HINT_SIZE)[base64_char]][add_hint] % ";"; | ||||
|         bearings_rule = | ||||
|             qi::lit("bearings=") >> -((qi::short_ >> ',' >> qi::short_))[add_bearing] % ";"; | ||||
|             qi::lit("bearings=") >> (-(qi::short_ >> ',' >> qi::short_))[add_bearing] % ";"; | ||||
|         base_rule = bearings_rule | radiuses_rule[set_radiuses] | hints_rule; | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -165,7 +165,7 @@ BOOST_AUTO_TEST_CASE(valid_route_urls) | ||||
|         "0vMAAEAAQGLSzmR;_4ghA4JuzAD_" | ||||
|         "IAAAo28BAOYAAAAzAAAAAgAAAEwAAAAAAAAAdIwAAJ4AAAAXiSEDfm7MAAEAAQGLSzmR;03AhA0vnzAA_SAAA_____" | ||||
|         "3wEAAAYAAAAQAAAAB4AAABAAAAAoUYBAJ4AAADlcCEDSefMAAMAAQGLSzmR"); | ||||
|     BOOST_CHECK(result_3); | ||||
|     BOOST_CHECK(result_4); | ||||
|     BOOST_CHECK_EQUAL(reference_4.steps, result_4->steps); | ||||
|     BOOST_CHECK_EQUAL(reference_4.alternative, result_4->alternative); | ||||
|     BOOST_CHECK_EQUAL(reference_4.geometries, result_4->geometries); | ||||
| @ -174,6 +174,33 @@ BOOST_AUTO_TEST_CASE(valid_route_urls) | ||||
|     CHECK_EQUAL_RANGE(reference_4.bearings, result_4->bearings); | ||||
|     CHECK_EQUAL_RANGE(reference_4.radiuses, result_4->radiuses); | ||||
|     CHECK_EQUAL_RANGE(reference_4.coordinates, result_4->coordinates); | ||||
| 
 | ||||
|     std::vector<boost::optional<engine::api::BaseParameters::Bearing>> bearings_4 = { | ||||
|         boost::none, | ||||
|         engine::api::BaseParameters::Bearing {200, 10}, | ||||
|         engine::api::BaseParameters::Bearing {100, 5}, | ||||
|     }; | ||||
|     engine::api::RouteParameters reference_5{ | ||||
|         false, | ||||
|         true, | ||||
|         engine::api::RouteParameters::GeometriesType::Polyline, | ||||
|         engine::api::RouteParameters::OverviewType::Simplified, | ||||
|         std::vector<boost::optional<bool>>{}, | ||||
|         std::vector<util::FixedPointCoordinate>{}, | ||||
|         std::vector<boost::optional<engine::Hint>> {}, | ||||
|         std::vector<boost::optional<double>>{}, | ||||
|         bearings_4}; | ||||
|     auto result_5 = api::parseParameters<engine::api::RouteParameters>( | ||||
|         "steps=false&bearings=;200,10;100,5"); | ||||
|     BOOST_CHECK(result_5); | ||||
|     BOOST_CHECK_EQUAL(reference_5.steps, result_5->steps); | ||||
|     BOOST_CHECK_EQUAL(reference_5.alternative, result_5->alternative); | ||||
|     BOOST_CHECK_EQUAL(reference_5.geometries, result_5->geometries); | ||||
|     BOOST_CHECK_EQUAL(reference_5.overview, result_5->overview); | ||||
|     CHECK_EQUAL_RANGE(reference_5.uturns, result_5->uturns); | ||||
|     CHECK_EQUAL_RANGE(reference_5.bearings, result_5->bearings); | ||||
|     CHECK_EQUAL_RANGE(reference_5.radiuses, result_5->radiuses); | ||||
|     CHECK_EQUAL_RANGE(reference_5.coordinates, result_5->coordinates); | ||||
| } | ||||
| 
 | ||||
| BOOST_AUTO_TEST_CASE(valid_table_urls) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user