summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/map/transform.cpp23
1 files changed, 23 insertions, 0 deletions
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;