Fix parameter parsing tests

This commit is contained in:
Patrick Niklaus
2016-02-13 04:23:59 +01:00
parent 83addd6bba
commit 64e5ebb55f
10 changed files with 227 additions and 103 deletions
+46
View File
@@ -0,0 +1,46 @@
#include "server/api/parameters_parser.hpp"
#include "server/api/route_parameters_grammar.hpp"
#include "server/api/table_parameter_grammar.hpp"
namespace osrm
{
namespace server
{
namespace api
{
template<>
boost::optional<engine::api::RouteParameters> parseParameters(std::string::iterator& iter, std::string::iterator end)
{
RouteParametersGrammar grammar;
const auto result = boost::spirit::qi::parse(iter, end, grammar);
boost::optional<engine::api::RouteParameters> parameters;
if (result && iter == end)
{
parameters = std::move(grammar.parameters);
}
return parameters;
}
template<>
boost::optional<engine::api::TableParameters> parseParameters(std::string::iterator& iter, std::string::iterator end)
{
TableParametersGrammar grammar;
const auto result = boost::spirit::qi::parse(iter, end, grammar);
boost::optional<engine::api::TableParameters> parameters;
if (result && iter == end)
{
parameters = std::move(grammar.parameters);
}
return parameters;
}
}
}
}
@@ -1,28 +0,0 @@
#include "server/api/route_parameters_parser.hpp"
#include "server/api/route_parameters_grammar.hpp"
namespace osrm
{
namespace server
{
namespace api
{
boost::optional<engine::api::RouteParameters> parseRouteParameters(std::string::iterator& iter, std::string::iterator end)
{
RouteParametersGrammar grammar;
const auto result = boost::spirit::qi::parse(iter, end, grammar);
boost::optional<engine::api::RouteParameters> parameters;
if (result && iter == end)
{
parameters = std::move(grammar.route_parameters);
}
return parameters;
}
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
#include "server/service/route_service.hpp"
#include "engine/api/route_parameters.hpp"
#include "server/api/route_parameters_parser.hpp"
#include "server/api/parameters_parser.hpp"
#include "util/json_container.hpp"
@@ -55,7 +55,7 @@ engine::Status RouteService::RunQuery(std::vector<util::FixedPointCoordinate> co
{
auto options_iterator = options.begin();
auto parameters = api::parseRouteParameters(options_iterator, options.end());
auto parameters = api::parseParameters<engine::api::RouteParameters>(options_iterator, options.end());
if (!parameters || options_iterator != options.end())
{
const auto position = std::distance(options.begin(), options_iterator);