Fix render tests failing on Xcode 14.3 (#1046)

This commit is contained in:
Alex Cristici
2023-04-24 18:45:09 +03:00
committed by GitHub
parent 99167b9116
commit 19b84464a3
24 changed files with 162 additions and 96 deletions

View File

@@ -3,6 +3,7 @@
#include <gmock/gmock.h>
#include <cmath>
#include <mbgl/map/transform.hpp>
#include <mbgl/math/angles.hpp>
#include <mbgl/util/geo.hpp>
#include <mbgl/util/quaternion.hpp>
@@ -68,7 +69,7 @@ TEST(Transform, InvalidBearing) {
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude());
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude());
ASSERT_DOUBLE_EQ(1, transform.getZoom());
ASSERT_DOUBLE_EQ(-2.0 * util::DEG2RAD_D, transform.getBearing());
ASSERT_DOUBLE_EQ(util::deg2rad(-2.0), transform.getBearing());
const double invalid = NAN;
@@ -76,7 +77,7 @@ TEST(Transform, InvalidBearing) {
ASSERT_DOUBLE_EQ(0, transform.getLatLng().latitude());
ASSERT_DOUBLE_EQ(0, transform.getLatLng().longitude());
ASSERT_DOUBLE_EQ(1, transform.getZoom());
ASSERT_DOUBLE_EQ(-2.0 * util::DEG2RAD_D, transform.getBearing());
ASSERT_DOUBLE_EQ(util::deg2rad(-2.0), transform.getBearing());
}
TEST(Transform, IntegerZoom) {
@@ -272,24 +273,24 @@ TEST(Transform, Anchor) {
ASSERT_DOUBLE_EQ(latLng.longitude(), transform.getLatLng().longitude());
transform.jumpTo(CameraOptions().withBearing(45.0).withAnchor(anchorPoint));
ASSERT_DOUBLE_EQ(-45.0 * util::DEG2RAD_D, transform.getBearing());
ASSERT_DOUBLE_EQ(util::deg2rad(-45.0), transform.getBearing());
// Anchor coordinates are imprecise because we are converting from an integer pixel.
ASSERT_NEAR(anchorLatLng.latitude(), transform.getLatLng().latitude(), 0.5);
ASSERT_NEAR(anchorLatLng.longitude(), transform.getLatLng().longitude(), 0.5);
transform.jumpTo(CameraOptions().withCenter(latLng).withZoom(10.0).withPitch(10.0));
ASSERT_DOUBLE_EQ(10.0 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(10.0), transform.getPitch());
ASSERT_DOUBLE_EQ(latLng.latitude(), transform.getLatLng().latitude());
ASSERT_DOUBLE_EQ(latLng.longitude(), transform.getLatLng().longitude());
transform.jumpTo(CameraOptions().withPitch(15.0));
ASSERT_DOUBLE_EQ(15.0 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(15.0), transform.getPitch());
ASSERT_DOUBLE_EQ(latLng.latitude(), transform.getLatLng().latitude());
ASSERT_DOUBLE_EQ(latLng.longitude(), transform.getLatLng().longitude());
transform.jumpTo(CameraOptions().withPitch(20.0).withAnchor(anchorPoint));
ASSERT_DOUBLE_EQ(20.0 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(20.0), transform.getPitch());
// Anchor coordinates are imprecise because we are converting from an integer pixel.
ASSERT_NEAR(anchorLatLng.latitude(), transform.getLatLng().latitude(), 0.5);
@@ -811,15 +812,15 @@ TEST(Transform, InvalidPitch) {
transform.jumpTo(CameraOptions().withZoom(1.0).withPitch(45));
ASSERT_DOUBLE_EQ(1, transform.getZoom());
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getPitch());
const double invalid = NAN;
transform.jumpTo(CameraOptions().withPitch(invalid));
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getPitch());
transform.jumpTo(CameraOptions().withPitch(60));
ASSERT_DOUBLE_EQ(60 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(60), transform.getPitch());
}
TEST(Transform, MinMaxPitch) {
@@ -834,17 +835,17 @@ TEST(Transform, MinMaxPitch) {
transform.jumpTo(CameraOptions().withZoom(1.0).withPitch(60));
ASSERT_DOUBLE_EQ(1, transform.getZoom());
ASSERT_DOUBLE_EQ(transform.getState().getMaxPitch(), transform.getPitch());
ASSERT_DOUBLE_EQ(60 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(60), transform.getPitch());
transform.setMaxPitch(70);
transform.jumpTo(CameraOptions().withPitch(70));
ASSERT_DOUBLE_EQ(transform.getState().getMaxPitch(), transform.getPitch());
ASSERT_DOUBLE_EQ(60 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(60), transform.getPitch());
transform.setMaxPitch(45);
transform.jumpTo(CameraOptions().withPitch(60));
ASSERT_DOUBLE_EQ(transform.getState().getMaxPitch(), transform.getPitch());
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getPitch());
transform.jumpTo(CameraOptions().withPitch(0));
ASSERT_DOUBLE_EQ(transform.getState().getMinPitch(), transform.getPitch());
@@ -858,18 +859,18 @@ TEST(Transform, MinMaxPitch) {
transform.setMinPitch(15);
transform.jumpTo(CameraOptions().withPitch(0));
ASSERT_DOUBLE_EQ(transform.getState().getMinPitch(), transform.getPitch());
ASSERT_DOUBLE_EQ(15 * util::DEG2RAD_D, transform.getPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(15), transform.getPitch());
transform.setMinPitch(45);
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getState().getMinPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getState().getMinPitch());
transform.setMaxPitch(45);
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getState().getMaxPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getState().getMaxPitch());
transform.setMaxPitch(10);
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getState().getMaxPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getState().getMaxPitch());
transform.setMinPitch(60);
ASSERT_DOUBLE_EQ(45 * util::DEG2RAD_D, transform.getState().getMinPitch());
ASSERT_DOUBLE_EQ(util::deg2rad(45), transform.getState().getMinPitch());
}
static const double abs_double_error = 1e-5;
@@ -968,26 +969,26 @@ TEST(Transform, FreeCameraOptionsSetOrientation) {
EXPECT_DOUBLE_EQ(0.0, transform.getState().getX());
EXPECT_DOUBLE_EQ(0.0, transform.getState().getY());
options.orientation = Quaternion::fromAxisAngle(vec3{{1.0, 0.0, 0.0}}, -60.0 * util::DEG2RAD_D).m;
options.orientation = Quaternion::fromAxisAngle(vec3{{1.0, 0.0, 0.0}}, util::deg2rad(-60.0)).m;
transform.setFreeCameraOptions(options);
EXPECT_DOUBLE_EQ(0.0, transform.getState().getBearing());
EXPECT_DOUBLE_EQ(60.0 * util::DEG2RAD_D, transform.getState().getPitch());
EXPECT_DOUBLE_EQ(util::deg2rad(60.0), transform.getState().getPitch());
EXPECT_DOUBLE_EQ(0.0, transform.getState().getX());
EXPECT_DOUBLE_EQ(206.0, transform.getState().getY());
options.orientation = Quaternion::fromAxisAngle(vec3{{0.0, 0.0, 1.0}}, 56.0 * util::DEG2RAD_D).m;
options.orientation = Quaternion::fromAxisAngle(vec3{{0.0, 0.0, 1.0}}, util::deg2rad(56.0)).m;
transform.setFreeCameraOptions(options);
EXPECT_DOUBLE_EQ(-56.0 * util::DEG2RAD_D, transform.getState().getBearing());
EXPECT_DOUBLE_EQ(util::deg2rad(-56.0), transform.getState().getBearing());
EXPECT_DOUBLE_EQ(0.0, transform.getState().getPitch());
EXPECT_DOUBLE_EQ(0.0, transform.getState().getX());
EXPECT_NEAR(152.192378, transform.getState().getY(), 1e-6);
options.orientation = Quaternion::fromEulerAngles(0.0, 0.0, -179.0 * util::DEG2RAD_D)
.multiply(Quaternion::fromEulerAngles(-30.0 * util::DEG2RAD_D, 0.0, 0.0))
options.orientation = Quaternion::fromEulerAngles(0.0, 0.0, util::deg2rad(-179.0))
.multiply(Quaternion::fromEulerAngles(util::deg2rad(-30.0), 0.0, 0.0))
.m;
transform.setFreeCameraOptions(options);
EXPECT_DOUBLE_EQ(179.0 * util::DEG2RAD_D, transform.getState().getBearing());
EXPECT_DOUBLE_EQ(30.0 * util::DEG2RAD_D, transform.getState().getPitch());
EXPECT_DOUBLE_EQ(util::deg2rad(179.0), transform.getState().getBearing());
EXPECT_DOUBLE_EQ(util::deg2rad(30.0), transform.getState().getPitch());
EXPECT_NEAR(1.308930, transform.getState().getX(), 1e-6);
EXPECT_NEAR(56.813889, transform.getState().getY(), 1e-6);
}
@@ -1004,7 +1005,7 @@ TEST(Transform, FreeCameraOptionsClampPitch) {
FreeCameraOptions options;
vec3 right, up, forward;
options.orientation = Quaternion::fromAxisAngle(vec3{{1.0, 0.0, 0.0}}, -85.0 * util::DEG2RAD_D).m;
options.orientation = Quaternion::fromAxisAngle(vec3{{1.0, 0.0, 0.0}}, util::deg2rad(-85.0)).m;
transform.setFreeCameraOptions(options);
EXPECT_DOUBLE_EQ(util::PITCH_MAX, transform.getState().getPitch());
std::tie(right, up, forward) = rotatedFrame(transform.getFreeCameraOptions().orientation.value());
@@ -1022,14 +1023,14 @@ TEST(Transform, FreeCameraOptionsClampToBounds) {
// Place camera to an arbitrary position looking away from the map
options.position = vec3{{-100.0, -10000.0, 1000.0}};
options.orientation = Quaternion::fromEulerAngles(-45.0 * util::DEG2RAD_D, 0.0, 0.0).m;
options.orientation = Quaternion::fromEulerAngles(util::deg2rad(-45.0), 0.0, 0.0).m;
transform.setFreeCameraOptions(options);
// Map center should be clamped to width/2 pixels away from map borders
EXPECT_DOUBLE_EQ(206.0, transform.getState().getX());
EXPECT_DOUBLE_EQ(206.0, transform.getState().getY());
EXPECT_DOUBLE_EQ(0.0, transform.getState().getBearing());
EXPECT_DOUBLE_EQ(45.0 * util::DEG2RAD_D, transform.getState().getPitch());
EXPECT_DOUBLE_EQ(util::deg2rad(45.0), transform.getState().getPitch());
vec3 right, up, forward;
std::tie(right, up, forward) = rotatedFrame(transform.getFreeCameraOptions().orientation.value());
@@ -1070,7 +1071,7 @@ TEST(Transform, FreeCameraOptionsOrientationRoll) {
EXPECT_NEAR(options.orientation.value()[2], orientationWithoutRoll.z, 1e-9);
EXPECT_NEAR(options.orientation.value()[3], orientationWithoutRoll.w, 1e-9);
EXPECT_NEAR(45.0 * util::DEG2RAD_D, transform.getState().getPitch(), 1e-9);
EXPECT_NEAR(util::deg2rad(45.0), transform.getState().getPitch(), 1e-9);
EXPECT_NEAR(0.0, transform.getState().getBearing(), 1e-9);
EXPECT_NEAR(0.0, transform.getState().getX(), 1e-9);
EXPECT_NEAR(150.0, transform.getState().getY(), 1e-9);