Add tests for bearing parsing
This commit is contained in:
		
							parent
							
								
									e932a8253a
								
							
						
					
					
						commit
						5c8a895471
					
				| @ -37,8 +37,12 @@ struct BaseParametersGrammar : boost::spirit::qi::grammar<std::string::iterator> | |||||||
|                           engine::api::BaseParameters ¶meters_) |                           engine::api::BaseParameters ¶meters_) | ||||||
|         : BaseParametersGrammar::base_type(child_rule), base_parameters(parameters_) |         : BaseParametersGrammar::base_type(child_rule), base_parameters(parameters_) | ||||||
|     { |     { | ||||||
|         const auto add_bearing = [this](const boost::fusion::vector<short, short> &bearing_range) { |         const auto add_bearing = [this](const boost::optional<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)}; |             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)); |             base_parameters.bearings.push_back(std::move(bearing)); | ||||||
|         }; |         }; | ||||||
|         const auto set_radiuses = [this](RadiusesT& radiuses) { |         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_ % ";"; |         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] % ";"; |         hints_rule = qi::lit("hints=") >> qi::as_string[qi::repeat(engine::ENCODED_HINT_SIZE)[base64_char]][add_hint] % ";"; | ||||||
|         bearings_rule = |         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; |         base_rule = bearings_rule | radiuses_rule[set_radiuses] | hints_rule; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -165,7 +165,7 @@ BOOST_AUTO_TEST_CASE(valid_route_urls) | |||||||
|         "0vMAAEAAQGLSzmR;_4ghA4JuzAD_" |         "0vMAAEAAQGLSzmR;_4ghA4JuzAD_" | ||||||
|         "IAAAo28BAOYAAAAzAAAAAgAAAEwAAAAAAAAAdIwAAJ4AAAAXiSEDfm7MAAEAAQGLSzmR;03AhA0vnzAA_SAAA_____" |         "IAAAo28BAOYAAAAzAAAAAgAAAEwAAAAAAAAAdIwAAJ4AAAAXiSEDfm7MAAEAAQGLSzmR;03AhA0vnzAA_SAAA_____" | ||||||
|         "3wEAAAYAAAAQAAAAB4AAABAAAAAoUYBAJ4AAADlcCEDSefMAAMAAQGLSzmR"); |         "3wEAAAYAAAAQAAAAB4AAABAAAAAoUYBAJ4AAADlcCEDSefMAAMAAQGLSzmR"); | ||||||
|     BOOST_CHECK(result_3); |     BOOST_CHECK(result_4); | ||||||
|     BOOST_CHECK_EQUAL(reference_4.steps, result_4->steps); |     BOOST_CHECK_EQUAL(reference_4.steps, result_4->steps); | ||||||
|     BOOST_CHECK_EQUAL(reference_4.alternative, result_4->alternative); |     BOOST_CHECK_EQUAL(reference_4.alternative, result_4->alternative); | ||||||
|     BOOST_CHECK_EQUAL(reference_4.geometries, result_4->geometries); |     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.bearings, result_4->bearings); | ||||||
|     CHECK_EQUAL_RANGE(reference_4.radiuses, result_4->radiuses); |     CHECK_EQUAL_RANGE(reference_4.radiuses, result_4->radiuses); | ||||||
|     CHECK_EQUAL_RANGE(reference_4.coordinates, result_4->coordinates); |     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) | BOOST_AUTO_TEST_CASE(valid_table_urls) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user