summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2015-11-17 17:19:54 +0200
committerBruno de Oliveira Abinader <bruno@mapbox.com>2015-11-18 09:37:27 +0200
commitadfac6f0615b7f79da2c80d0580428a92e9f0089 (patch)
treeb6cac5234e13cdd5148efdbb8f3cd1e9c7ed349f /test
parentcb9b397985b98a75aa9fa5e6f2b135c205f7cafd (diff)
downloadqtlocation-mapboxgl-adfac6f0615b7f79da2c80d0580428a92e9f0089.tar.gz
[core] Added ConstrainMode::{HeightOnly,WidthAndHeight}
ConstrainMode gives flexibility to our engine to choose between constraining both vertically and horizontally, or just vertically (default behavior). Constrain in both axis means we can no longer pan the map beyond the map boundaries. This fixes an issue where e.g. annotations disappear upon crossing the map boundaries.
Diffstat (limited to 'test')
-rw-r--r--test/miscellaneous/transform.cpp58
-rw-r--r--test/style/resource_loading.cpp2
2 files changed, 50 insertions, 10 deletions
diff --git a/test/miscellaneous/transform.cpp b/test/miscellaneous/transform.cpp
index 426e9e534d..a5c91b84ef 100644
--- a/test/miscellaneous/transform.cpp
+++ b/test/miscellaneous/transform.cpp
@@ -7,13 +7,13 @@ using namespace mbgl;
TEST(Transform, InvalidScale) {
MockView view;
- Transform transform(view);
+ Transform transform(view, ConstrainMode::HeightOnly);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude);
ASSERT_DOUBLE_EQ(1, transform.getScale());
- transform.setScale(2);
+ transform.setScale(2 << 0);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude);
@@ -47,13 +47,13 @@ TEST(Transform, InvalidScale) {
TEST(Transform, InvalidLatLng) {
MockView view;
- Transform transform(view);
+ Transform transform(view, ConstrainMode::HeightOnly);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude);
ASSERT_DOUBLE_EQ(1, transform.getScale());
- transform.setScale(2);
+ transform.setScale(2 << 0);
transform.setLatLng({ 8, 10 });
ASSERT_DOUBLE_EQ(8, transform.getLatLng().latitude);
@@ -83,13 +83,13 @@ TEST(Transform, InvalidLatLng) {
TEST(Transform, InvalidBearing) {
MockView view;
- Transform transform(view);
+ Transform transform(view, ConstrainMode::HeightOnly);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude);
ASSERT_DOUBLE_EQ(1, transform.getScale());
- transform.setScale(2);
+ transform.setScale(2 << 0);
transform.setAngle(2);
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude);
@@ -108,10 +108,10 @@ TEST(Transform, InvalidBearing) {
TEST(Transform, PerspectiveProjection) {
MockView view;
- Transform transform(view);
+ Transform transform(view, ConstrainMode::HeightOnly);
transform.resize({{ 1000, 1000 }});
- transform.setScale(1024);
+ transform.setScale(2 << 9);
transform.setPitch(0.9);
transform.setLatLng(LatLng(38, -77));
@@ -129,7 +129,7 @@ TEST(Transform, PerspectiveProjection) {
ASSERT_NEAR(-76.75823239205641, loc.longitude, 0.0001);
ASSERT_NEAR(37.692872969426375, loc.latitude, 0.0001);
- vec2<double> point = transform.getState().latLngToPoint({38.74661326302018, -77.59198961199148});
+ PrecisionPoint point = transform.getState().latLngToPoint({38.74661326302018, -77.59198961199148});
ASSERT_NEAR(point.x, 0, 0.01);
ASSERT_NEAR(point.y, 1000, 0.01);
@@ -137,3 +137,43 @@ TEST(Transform, PerspectiveProjection) {
ASSERT_NEAR(point.x, 1000, 0.02);
ASSERT_NEAR(point.y, 0, 0.02);
}
+
+TEST(Transform, ConstrainHeightOnly) {
+ MockView view;
+ LatLng loc;
+ LatLngBounds bounds;
+
+ Transform transform(view, ConstrainMode::HeightOnly);
+ transform.resize({{ 1000, 1000 }});
+ transform.setScale(1024);
+
+ transform.setLatLng(bounds.sw);
+ loc = transform.getState().pointToLatLng({ 500, 500 });
+ ASSERT_NEAR(-85.021422866378714, loc.latitude, 0.0001);
+ ASSERT_NEAR(180, std::abs(loc.longitude), 0.0001);
+
+ transform.setLatLng(bounds.ne);
+ loc = transform.getState().pointToLatLng({ 500, 500 });
+ ASSERT_NEAR(85.021422866378742, loc.latitude, 0.0001);
+ ASSERT_NEAR(180, std::abs(loc.longitude), 0.0001);
+}
+
+TEST(Transform, ConstrainWidthAndHeight) {
+ MockView view;
+ LatLng loc;
+ LatLngBounds bounds;
+
+ Transform transform(view, ConstrainMode::WidthAndHeight);
+ transform.resize({{ 1000, 1000 }});
+ transform.setScale(1024);
+
+ transform.setLatLng(bounds.sw);
+ loc = transform.getState().pointToLatLng({ 500, 500 });
+ ASSERT_NEAR(-85.021422866378714, loc.latitude, 0.0001);
+ ASSERT_NEAR(-179.65667724609375, loc.longitude, 0.0001);
+
+ transform.setLatLng(bounds.ne);
+ loc = transform.getState().pointToLatLng({ 500, 500 });
+ ASSERT_NEAR(85.021422866378742, loc.latitude, 0.0001);
+ ASSERT_NEAR(179.65667724609358, std::abs(loc.longitude), 0.0001);
+}
diff --git a/test/style/resource_loading.cpp b/test/style/resource_loading.cpp
index c6f1c1dfae..cdc84e96b2 100644
--- a/test/style/resource_loading.cpp
+++ b/test/style/resource_loading.cpp
@@ -24,7 +24,7 @@ public:
FileSource& fileSource,
const std::function<void(std::exception_ptr error)>& callback)
: data_(MapMode::Still, GLContextMode::Unique, view.getPixelRatio()),
- transform_(view),
+ transform_(view, ConstrainMode::HeightOnly),
callback_(callback) {
util::ThreadContext::setFileSource(&fileSource);