From abe3f9ce7ab8087b13871472a11e7f5021084642 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 24 Feb 2016 00:54:03 +0200 Subject: [core] Moved wrapping to LatLng scope Fixes a precision loss when converting unwrapped LatLngs. --- test/map/transform.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'test') diff --git a/test/map/transform.cpp b/test/map/transform.cpp index f606418826..15b86f3d30 100644 --- a/test/map/transform.cpp +++ b/test/map/transform.cpp @@ -140,6 +140,29 @@ TEST(Transform, PerspectiveProjection) { ASSERT_NEAR(point.y, 0, 0.02); } +TEST(Transform, UnwrappedLatLng) { + MockView view; + Transform transform(view, ConstrainMode::HeightOnly); + transform.resize({{ 1000, 1000 }}); + transform.setScale(2 << 9); + transform.setPitch(0.9); + transform.setLatLng(LatLng(38, -77)); + + const TransformState& state = transform.getState(); + + LatLng fromScreenCoordinate = state.screenCoordinateToLatLng({ 500, 500 }); + ASSERT_NEAR(fromScreenCoordinate.latitude, 37.999999999999829, 0.0001); // 1.71E-13 + ASSERT_NEAR(fromScreenCoordinate.longitude, -76.999999999999773, 0.0001); // 2.27E-13 + + LatLng unwrappedForwards = state.screenCoordinateToLatLng(state.latLngToScreenCoordinate({ 38, 283 })); + ASSERT_NEAR(unwrappedForwards.latitude, 37.999999999999716, 0.0001); // 2.84E-13 + ASSERT_DOUBLE_EQ(unwrappedForwards.longitude, fromScreenCoordinate.longitude); + + LatLng unwrappedBackwards = state.screenCoordinateToLatLng(state.latLngToScreenCoordinate({ 38, -437 })); + ASSERT_DOUBLE_EQ(unwrappedBackwards.latitude, unwrappedForwards.latitude); + ASSERT_DOUBLE_EQ(unwrappedBackwards.longitude, fromScreenCoordinate.longitude); +} + TEST(Transform, ConstrainHeightOnly) { MockView view; LatLng loc; -- cgit v1.2.1