diff options
author | Aleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com> | 2019-12-17 15:04:17 +0200 |
---|---|---|
committer | Aleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com> | 2019-12-17 15:04:17 +0200 |
commit | dc765fbd27e64b5e8e59352b7f2d0708c921a395 (patch) | |
tree | 77dee9cc6f15fec21d30e6c100d2f6b95651f5ea | |
parent | f34b8f4d31371f51a64878837577ca38840738b4 (diff) | |
download | qtlocation-mapboxgl-upstream/astojilj-cameraForLatLngs.tar.gz |
Include padding when testing camera scale in cameraForLatLngBoundsupstream/astojilj-cameraForLatLngs
Repurpose LatLngBoundsToCameraWithBearingAndPitch to test scaling and camera setup, both with and without padding.
This adds testing of path not covered in mapbox/mapbox-gl-native-ios#59.
-rw-r--r-- | test/map/map.test.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/test/map/map.test.cpp b/test/map/map.test.cpp index 9e37f97b8b..d6603b83e2 100644 --- a/test/map/map.test.cpp +++ b/test/map/map.test.cpp @@ -5,10 +5,11 @@ #include <mbgl/test/fixture_log_observer.hpp> #include <mbgl/test/map_adapter.hpp> -#include <mbgl/map/map_options.hpp> #include <mbgl/gfx/backend_scope.hpp> #include <mbgl/gl/context.hpp> #include <mbgl/gfx/headless_frontend.hpp> +#include <mbgl/math/log2.hpp> +#include <mbgl/map/map_options.hpp> #include <mbgl/storage/resource_options.hpp> #include <mbgl/storage/network_status.hpp> #include <mbgl/storage/default_file_source.hpp> @@ -177,7 +178,7 @@ TEST(Map, LatLngBoundsToCameraWithBearing) { EXPECT_NEAR(virtualCamera.bearing.value_or(0), 35.0, 1e-5); } -TEST(Map, LatLngBoundsToCameraWithBearingAndPitch) { +TEST(Map, LatLngBoundsToCameraWithBearingPitchAndPadding) { MapTest<> test; test.map.jumpTo(CameraOptions().withCenter(LatLng { 40.712730, -74.005953 }).withZoom(16.0)); @@ -189,6 +190,19 @@ TEST(Map, LatLngBoundsToCameraWithBearingAndPitch) { EXPECT_NEAR(*virtualCamera.zoom, 13.66272, 1e-5); ASSERT_DOUBLE_EQ(*virtualCamera.pitch, 20.0); EXPECT_NEAR(virtualCamera.bearing.value_or(0), 35.0, 1e-5); + + const EdgeInsets padding = EdgeInsets {10, 20, 30, 40}; + const CameraOptions virtualCameraPadded = test.map.cameraForLatLngBounds(bounds, padding, 35, 20); + ASSERT_TRUE(bounds.contains(*virtualCameraPadded.center)); + ASSERT_DOUBLE_EQ(virtualCameraPadded.center->latitude(), virtualCamera.center->latitude()); + ASSERT_DOUBLE_EQ(virtualCameraPadded.center->longitude(), virtualCamera.center->longitude()); + + const Size size = test.map.getMapOptions().size(); + const auto scaleChange = std::min((size.width - padding.left() - padding.right()) / size.width, + (size.height - padding.top() - padding.bottom()) / size.height); + ASSERT_DOUBLE_EQ(*virtualCameraPadded.zoom, *virtualCamera.zoom + util::log2(scaleChange)); + ASSERT_DOUBLE_EQ(*virtualCameraPadded.pitch, *virtualCamera.pitch); + ASSERT_DOUBLE_EQ(*virtualCameraPadded.bearing, *virtualCamera.bearing); } TEST(Map, LatLngsToCamera) { |