From c03aa8a273bd75184423fb4fcb2be701eb763cde Mon Sep 17 00:00:00 2001 From: Michael Krasnyk Date: Tue, 17 Jan 2017 13:03:36 +0100 Subject: [PATCH] Regression test for #3516 --- unit_tests/util/coordinate_calculation.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/unit_tests/util/coordinate_calculation.cpp b/unit_tests/util/coordinate_calculation.cpp index 103943337..32a9fd542 100644 --- a/unit_tests/util/coordinate_calculation.cpp +++ b/unit_tests/util/coordinate_calculation.cpp @@ -3,6 +3,7 @@ #include "util/bearing.hpp" #include "util/coordinate_calculation.hpp" +#include "util/web_mercator.hpp" #include @@ -386,4 +387,22 @@ BOOST_AUTO_TEST_CASE(consistent_invalid_bearing_result) BOOST_CHECK_EQUAL(0., util::coordinate_calculation::bearing(pos3, pos3)); } +// Regression test for bug captured in #3516 +BOOST_AUTO_TEST_CASE(regression_test_3516) +{ + Coordinate u(FloatLongitude{-73.989687}, FloatLatitude{40.752288}); + Coordinate v(FloatLongitude{-73.990134}, FloatLatitude{40.751658}); + Coordinate q(FloatLongitude{-73.99039}, FloatLatitude{40.75171}); + + BOOST_CHECK_EQUAL(Coordinate{web_mercator::toWGS84(web_mercator::fromWGS84(u))}, u); + BOOST_CHECK_EQUAL(Coordinate{web_mercator::toWGS84(web_mercator::fromWGS84(v))}, v); + + double ratio; + Coordinate nearest_location; + coordinate_calculation::perpendicularDistance(u, v, q, nearest_location, ratio); + + BOOST_CHECK_EQUAL(ratio, 1.); + BOOST_CHECK_EQUAL(nearest_location, v); +} + BOOST_AUTO_TEST_SUITE_END()