Add more test cases
This commit is contained in:
parent
727b031d45
commit
e06404bd08
@ -45,4 +45,96 @@ BOOST_AUTO_TEST_CASE(polyline6_test_case)
|
||||
decodePolyline<1000000>(encodePolyline<1000000>(coords.begin(), coords.end())).begin()));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(empty_polyline_test)
|
||||
{
|
||||
using namespace osrm::engine;
|
||||
using namespace osrm::util;
|
||||
|
||||
std::vector<Coordinate> empty_coords;
|
||||
BOOST_CHECK_EQUAL(encodePolyline(empty_coords.begin(), empty_coords.end()), "");
|
||||
BOOST_CHECK(decodePolyline("").empty());
|
||||
}
|
||||
BOOST_AUTO_TEST_CASE(polyline_single_point_test)
|
||||
{
|
||||
using namespace osrm::engine;
|
||||
using namespace osrm::util;
|
||||
|
||||
const std::vector<Coordinate> coords({{FixedLongitude{-122414000}, FixedLatitude{37776000}}});
|
||||
|
||||
const std::string encoded = encodePolyline(coords.begin(), coords.end());
|
||||
BOOST_CHECK_EQUAL(encoded, "_cqeFn~cjV");
|
||||
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
BOOST_CHECK_EQUAL(decoded.size(), 1);
|
||||
BOOST_CHECK_EQUAL(decoded[0].lon, FixedLongitude{-122414000});
|
||||
BOOST_CHECK_EQUAL(decoded[0].lat, FixedLatitude{37776000});
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(polyline_multiple_points_test)
|
||||
{
|
||||
using namespace osrm::engine;
|
||||
using namespace osrm::util;
|
||||
|
||||
const std::vector<Coordinate> coords({{FixedLongitude{-122414000}, FixedLatitude{37776000}},
|
||||
{FixedLongitude{-122420000}, FixedLatitude{37779000}},
|
||||
{FixedLongitude{-122421000}, FixedLatitude{37780000}}});
|
||||
|
||||
const std::string encoded = encodePolyline(coords.begin(), coords.end());
|
||||
BOOST_CHECK_EQUAL(encoded, "_cqeFn~cjVwQnd@gEfE");
|
||||
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
BOOST_CHECK_EQUAL(decoded.size(), 3);
|
||||
for (size_t i = 0; i < coords.size(); ++i)
|
||||
{
|
||||
BOOST_CHECK_EQUAL(decoded[i].lon, coords[i].lon);
|
||||
BOOST_CHECK_EQUAL(decoded[i].lat, coords[i].lat);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(polyline_large_coordinate_difference_test)
|
||||
{
|
||||
using namespace osrm::engine;
|
||||
using namespace osrm::util;
|
||||
|
||||
const std::vector<Coordinate> coords({{FixedLongitude{-179000000}, FixedLatitude{-89000000}},
|
||||
{FixedLongitude{179000000}, FixedLatitude{89000000}}});
|
||||
|
||||
const std::string encoded = encodePolyline(coords.begin(), coords.end());
|
||||
BOOST_CHECK_EQUAL(encoded, "~xe~O~|oca@_sl}`@_{`hcA");
|
||||
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
BOOST_CHECK_EQUAL(decoded.size(), 2);
|
||||
for (size_t i = 0; i < coords.size(); ++i)
|
||||
{
|
||||
BOOST_CHECK_EQUAL(decoded[i].lon, coords[i].lon);
|
||||
BOOST_CHECK_EQUAL(decoded[i].lat, coords[i].lat);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(roundtrip)
|
||||
{
|
||||
using namespace osrm::engine;
|
||||
using namespace osrm::util;
|
||||
|
||||
{
|
||||
const auto encoded = "_chxEn`zvN\\\\]]";
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
const auto reencoded = encodePolyline(decoded.begin(), decoded.end());
|
||||
BOOST_CHECK_EQUAL(encoded, reencoded);
|
||||
}
|
||||
{
|
||||
const auto encoded =
|
||||
"gcneIpgxzRcDnBoBlEHzKjBbHlG`@`IkDxIiKhKoMaLwTwHeIqHuAyGXeB~Ew@fFjAtIzExF";
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
const auto reencoded = encodePolyline(decoded.begin(), decoded.end());
|
||||
BOOST_CHECK_EQUAL(encoded, reencoded);
|
||||
}
|
||||
{
|
||||
const auto encoded = "_p~iF~ps|U_ulLnnqC_mqNvxq`@";
|
||||
const auto decoded = decodePolyline(encoded);
|
||||
const auto reencoded = encodePolyline(decoded.begin(), decoded.end());
|
||||
BOOST_CHECK_EQUAL(encoded, reencoded);
|
||||
}
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
Loading…
Reference in New Issue
Block a user