summaryrefslogtreecommitdiff
path: root/platform/osx/test/MGLGeometryTests.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/osx/test/MGLGeometryTests.mm')
-rw-r--r--platform/osx/test/MGLGeometryTests.mm58
1 files changed, 58 insertions, 0 deletions
diff --git a/platform/osx/test/MGLGeometryTests.mm b/platform/osx/test/MGLGeometryTests.mm
new file mode 100644
index 0000000000..be3c7cb2da
--- /dev/null
+++ b/platform/osx/test/MGLGeometryTests.mm
@@ -0,0 +1,58 @@
+#import "../../darwin/MGLGeometry_Private.h"
+
+#pragma clang diagnostic ignored "-Wgnu-statement-expression"
+#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
+
+#import <XCTest/XCTest.h>
+
+@interface MGLGeometryTests : XCTestCase
+@end
+
+@implementation MGLGeometryTests
+
+- (void)testCoordinateBoundsIsEmpty {
+ MGLCoordinateBounds emptyBounds = MGLCoordinateBoundsMake(CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 0));
+ XCTAssertTrue(MGLCoordinateBoundsIsEmpty(emptyBounds));
+ XCTAssertFalse(MGLCoordinateSpanEqualToCoordinateSpan(MGLCoordinateSpanZero, MGLCoordinateBoundsGetCoordinateSpan(emptyBounds)));
+}
+
+- (void)testAngleConversions {
+ XCTAssertEqual(-180, MGLDegreesFromRadians(-M_PI));
+ XCTAssertEqual(0, MGLDegreesFromRadians(0));
+ XCTAssertEqual(45, MGLDegreesFromRadians(M_PI_4));
+ XCTAssertEqual(90, MGLDegreesFromRadians(M_PI_2));
+ XCTAssertEqual(180, MGLDegreesFromRadians(M_PI));
+ XCTAssertEqual(360, MGLDegreesFromRadians(2 * M_PI));
+ XCTAssertEqual(720, MGLDegreesFromRadians(4 * M_PI));
+
+ XCTAssertEqual(-360, MGLDegreesFromRadians(MGLRadiansFromDegrees(-360)));
+ XCTAssertEqual(-180, MGLDegreesFromRadians(MGLRadiansFromDegrees(-180)));
+ XCTAssertEqual(-90, MGLDegreesFromRadians(MGLRadiansFromDegrees(-90)));
+ XCTAssertEqual(-45, MGLDegreesFromRadians(MGLRadiansFromDegrees(-45)));
+ XCTAssertEqual(0, MGLDegreesFromRadians(MGLRadiansFromDegrees(0)));
+ XCTAssertEqual(45, MGLDegreesFromRadians(MGLRadiansFromDegrees(45)));
+ XCTAssertEqual(90, MGLDegreesFromRadians(MGLRadiansFromDegrees(90)));
+ XCTAssertEqual(180, MGLDegreesFromRadians(MGLRadiansFromDegrees(180)));
+ XCTAssertEqual(360, MGLDegreesFromRadians(MGLRadiansFromDegrees(360)));
+}
+
+- (void)testAltitudeConversions {
+ CGSize tallSize = CGSizeMake(600, 1200);
+ CGSize midSize = CGSizeMake(600, 800);
+ CGSize shortSize = CGSizeMake(600, 400);
+
+ XCTAssertEqualWithAccuracy(1800, MGLAltitudeForZoomLevel(MGLZoomLevelForAltitude(1800, 0, 0, midSize), 0, 0, midSize), 1);
+ XCTAssertLessThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, tallSize));
+ XCTAssertGreaterThan(MGLZoomLevelForAltitude(1800, 0, 0, midSize), MGLZoomLevelForAltitude(1800, 0, 0, shortSize));
+
+ XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 0, midSize), 0, 0, midSize), 3);
+ XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 0, midSize), 0, 0, midSize), 3);
+
+ XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 0, 40, midSize), 0, 40, midSize), 3);
+ XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 0, 40, midSize), 0, 40, midSize), 3);
+
+ XCTAssertEqualWithAccuracy(0, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(0, 60, 40, midSize), 60, 40, midSize), 3);
+ XCTAssertEqualWithAccuracy(18, MGLZoomLevelForAltitude(MGLAltitudeForZoomLevel(18, 60, 40, midSize), 60, 40, midSize), 3);
+}
+
+@end