diff options
Diffstat (limited to 'platform/ios/test/MGLMapViewDirectionTests.mm')
-rw-r--r-- | platform/ios/test/MGLMapViewDirectionTests.mm | 77 |
1 files changed, 32 insertions, 45 deletions
diff --git a/platform/ios/test/MGLMapViewDirectionTests.mm b/platform/ios/test/MGLMapViewDirectionTests.mm index d3990b581b..ef29b4227e 100644 --- a/platform/ios/test/MGLMapViewDirectionTests.mm +++ b/platform/ios/test/MGLMapViewDirectionTests.mm @@ -3,8 +3,6 @@ #import <mbgl/math/wrap.hpp> -static MGLMapView *mapView; - @interface MGLMapView (MGLMapViewDirectionTests) - (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate; - (void)resetNorthAnimated:(BOOL)animated; @@ -15,6 +13,7 @@ static MGLMapView *mapView; @end @interface MGLMapViewDirectionTests : XCTestCase +@property (nonatomic) MGLMapView *mapView; @end @implementation MGLMapViewDirectionTests @@ -24,35 +23,35 @@ static MGLMapView *mapView; [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"]; NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"]; - mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64) styleURL:styleURL]; + self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64) styleURL:styleURL]; } - (void)tearDown { - mapView = nil; + self.mapView = nil; [MGLAccountManager setAccessToken:nil]; [super tearDown]; } - (void)testDirection { - mapView.zoomLevel = 0; - mapView.direction = 30; - XCTAssertEqual(mapView.direction, 0, @"Rotation is not allowed at world-scale zoom levels."); + self.mapView.zoomLevel = 0; + self.mapView.direction = 30; + XCTAssertEqual(self.mapView.direction, 0, @"Rotation is not allowed at world-scale zoom levels."); - mapView.zoomLevel = 15; + self.mapView.zoomLevel = 15; for (NSNumber *degrees in @[@-999, @-359, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @360, @999]) { double inputDegrees = [degrees doubleValue]; double wrappedDegrees = mbgl::util::wrap(inputDegrees, 0., 360.); - mapView.direction = inputDegrees; - XCTAssertEqualWithAccuracy(mapView.direction, wrappedDegrees, 0.001); + self.mapView.direction = inputDegrees; + XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedDegrees, 0.001); } - [mapView resetNorthAnimated:NO]; - XCTAssertEqual(mapView.direction, 0, @"Reset-to-north should set direction to 0°."); + [self.mapView resetNorthAnimated:NO]; + XCTAssertEqual(self.mapView.direction, 0, @"Reset-to-north should set direction to 0°."); } - (void)testRotateEnabled { - mapView.zoomLevel = 10; + self.mapView.zoomLevel = 10; UIRotationGestureRecognizer *gesture = [[UIRotationGestureRecognizer alloc] initWithTarget:nil action:nil]; gesture.state = UIGestureRecognizerStateBegan; @@ -61,63 +60,51 @@ static MGLMapView *mapView; // Disabled { - mapView.rotateEnabled = NO; - XCTAssertEqual(mapView.allowsRotating, NO); + self.mapView.rotateEnabled = NO; + XCTAssertEqual(self.mapView.allowsRotating, NO); - [mapView handleRotateGesture:gesture]; - XCTAssertNotEqual(mapView.direction, wrappedRotation, @"Gestural rotation should not work when rotation is disabled."); + [self.mapView handleRotateGesture:gesture]; + XCTAssertNotEqual(self.mapView.direction, wrappedRotation, @"Gestural rotation should not work when rotation is disabled."); - mapView.direction = 45.f; - XCTAssertEqualWithAccuracy(mapView.direction, 45, 0.001, @"Programmatic rotation is allowed when rotateEnabled = NO."); + self.mapView.direction = 45.f; + XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001, @"Programmatic rotation is allowed when rotateEnabled = NO."); } // Enabled { - [mapView resetNorthAnimated:NO]; - mapView.rotateEnabled = YES; - XCTAssertEqual(mapView.allowsRotating, YES); + [self.mapView resetNorthAnimated:NO]; + self.mapView.rotateEnabled = YES; + XCTAssertEqual(self.mapView.allowsRotating, YES); gesture.state = UIGestureRecognizerStateChanged; gesture.rotation = MGLRadiansFromDegrees(30); - [mapView handleRotateGesture:gesture]; - XCTAssertEqualWithAccuracy(mapView.direction, wrappedRotation, 0.001, @"Gestural rotation should work when rotation is enabled."); + [self.mapView handleRotateGesture:gesture]; + XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Gestural rotation should work when rotation is enabled."); } } -- (void)testRotateGesture { - mapView.zoomLevel = 15; +- (void)testRotationGesture { + self.mapView.zoomLevel = 15; UIRotationGestureRecognizer *gesture = [[UIRotationGestureRecognizer alloc] initWithTarget:nil action:nil]; gesture.state = UIGestureRecognizerStateBegan; gesture.rotation = 0; - [mapView handleRotateGesture:gesture]; - XCTAssertEqual(mapView.direction, gesture.rotation); + [self.mapView handleRotateGesture:gesture]; + XCTAssertEqual(self.mapView.direction, gesture.rotation); for (NSNumber *degrees in @[@-999, @-360, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @359, @999]) { gesture.state = UIGestureRecognizerStateChanged; gesture.rotation = MGLRadiansFromDegrees([degrees doubleValue]); - [mapView handleRotateGesture:gesture]; + [self.mapView handleRotateGesture:gesture]; CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(gesture.rotation), 0., 360.); - XCTAssertEqualWithAccuracy(mapView.direction, wrappedRotation, 0.001, @"Map direction should match gesture rotation for input of %@°.", degrees); - } -} - -- (void)testCompassRotation { - mapView.zoomLevel = 15; - - for (NSNumber *degrees in @[@-999, @-359, @-240, @-180, @-90, @-45, @0, @45, @90, @180, @240, @360, @999]) { - mapView.direction = [degrees doubleValue]; - CGFloat wrappedDirection = mbgl::util::wrap(-mapView.direction, 0., 360.); - CGAffineTransform rotation = CGAffineTransformMakeRotation(MGLRadiansFromDegrees(wrappedDirection)); - XCTAssertTrue(CGAffineTransformEqualToTransform(mapView.compassView.transform, rotation), - @"Compass transform direction %f° should equal wrapped transform direction %f° (~%.f°).", [self degreesFromAffineTransform:mapView.compassView.transform], [self degreesFromAffineTransform:rotation], wrappedDirection); + XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Map direction should match gesture rotation for input of %@°.", degrees); } } - (void)testResetPosition { - [mapView resetPosition]; - MGLMapCamera *defaultCamera = [MGLMapCamera cameraLookingAtCenterCoordinate:CLLocationCoordinate2DMake(0, 0) altitude:mapView.camera.altitude pitch:0 heading:0]; - XCTAssertTrue([mapView.camera isEqualToMapCamera:defaultCamera], @"Map camera %@ should be equal to default camera %@.", mapView.camera, defaultCamera); + [self.mapView resetPosition]; + MGLMapCamera *defaultCamera = [MGLMapCamera cameraLookingAtCenterCoordinate:CLLocationCoordinate2DMake(0, 0) altitude:self.mapView.camera.altitude pitch:0 heading:0]; + XCTAssertTrue([self.mapView.camera isEqualToMapCamera:defaultCamera], @"Map camera %@ should be equal to default camera %@.", self.mapView.camera, defaultCamera); } - (CGFloat)degreesFromAffineTransform:(CGAffineTransform)transform { |