#include #include "coordinates.hpp" #include "equal_json.hpp" #include "engine/api/json_factory.hpp" #include "osrm/coordinate.hpp" #include using namespace osrm; BOOST_AUTO_TEST_SUITE(json) BOOST_AUTO_TEST_CASE(test_json_linestring) { const std::vector locations{get_dummy_location(), // get_dummy_location(), // get_dummy_location()}; // auto geom = engine::api::json::makeGeoJSONGeometry(begin(locations), end(locations)); const auto type = std::get(geom.values["type"]).value; BOOST_CHECK_EQUAL(type, "LineString"); const auto coords = std::get(geom.values["coordinates"]).values; BOOST_CHECK_EQUAL(coords.size(), 3); // array of three location arrays for (const auto &each : coords) { const auto loc = std::get(each).values; BOOST_CHECK_EQUAL(loc.size(), 2); const auto lon = std::get(loc[0]).value; const auto lat = std::get(loc[1]).value; (void)lon; (void)lat; // cast fails if type do not match } } BOOST_AUTO_TEST_CASE(test_json_single_point) { const std::vector locations{get_dummy_location()}; auto geom = engine::api::json::makeGeoJSONGeometry(begin(locations), end(locations)); const auto type = std::get(geom.values["type"]).value; BOOST_CHECK_EQUAL(type, "LineString"); const auto coords = std::get(geom.values["coordinates"]).values; BOOST_CHECK_EQUAL(coords.size(), 2); // array of two location arrays for (const auto &each : coords) { const auto loc = std::get(each).values; BOOST_CHECK_EQUAL(loc.size(), 2); const auto lon = std::get(loc[0]).value; const auto lat = std::get(loc[1]).value; (void)lon; (void)lat; // cast fails if type do not match } } BOOST_AUTO_TEST_SUITE_END()