diff options
Diffstat (limited to 'platform/ios/test/MGLMapViewDirectionTests.mm')
-rw-r--r-- | platform/ios/test/MGLMapViewDirectionTests.mm | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/platform/ios/test/MGLMapViewDirectionTests.mm b/platform/ios/test/MGLMapViewDirectionTests.mm deleted file mode 100644 index 81e169432b..0000000000 --- a/platform/ios/test/MGLMapViewDirectionTests.mm +++ /dev/null @@ -1,126 +0,0 @@ -#import <Mapbox/Mapbox.h> -#import <XCTest/XCTest.h> -#import "MGLMockGestureRecognizers.h" - -#import <mbgl/math/wrap.hpp> - -@interface MGLMapView (MGLMapViewDirectionTests) -- (void)handleRotateGesture:(UIRotationGestureRecognizer *)rotate; -- (void)resetNorthAnimated:(BOOL)animated; -@end - - -@interface MGLMapViewDirectionTests : XCTestCase -@property (nonatomic) MGLMapView *mapView; -@end - -@implementation MGLMapViewDirectionTests - -- (void)setUp { - [super setUp]; - - [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"]; - NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"]; - self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 64, 64) styleURL:styleURL]; -} - -- (void)tearDown { - self.mapView = nil; - [MGLAccountManager setAccessToken:nil]; - [super tearDown]; -} - -- (void)testDirection { - self.mapView.zoomLevel = 0; - self.mapView.direction = 30; - XCTAssertEqual(self.mapView.direction, 0, @"Rotation is not allowed at world-scale zoom levels."); - - self.mapView.zoomLevel = 15; - CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate; - - 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.); - self.mapView.direction = inputDegrees; - XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedDegrees, 0.001); - - XCTAssertEqual(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, "@Map center coordinate latitude should remain constant when direction is set to %@°.", degrees); - XCTAssertEqual(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, @"Map center coordinate longitude should remain constant when direction is set to %@°.", degrees); - } - - [self.mapView resetNorthAnimated:NO]; - XCTAssertEqual(self.mapView.direction, 0, @"Reset-to-north should set direction to 0°."); - XCTAssertEqual(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, "@Map center coordinate latitude should remain constant when direction is reset."); - XCTAssertEqual(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, @"Map center coordinate latitude should remain constant when direction is reset."); -} - -- (void)testRotateEnabled { - self.mapView.zoomLevel = 10; - - UIRotationGestureRecognizerMock *gesture = [[UIRotationGestureRecognizerMock alloc] initWithTarget:nil action:nil]; - gesture.state = UIGestureRecognizerStateBegan; - gesture.rotation = MGLRadiansFromDegrees(30); - CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(gesture.rotation), 0., 360.); - - // Disabled - { - self.mapView.rotateEnabled = NO; - XCTAssertEqual(self.mapView.allowsRotating, NO); - - [self.mapView handleRotateGesture:gesture]; - XCTAssertNotEqual(self.mapView.direction, wrappedRotation, @"Gestural rotation should not work when rotation is disabled."); - - self.mapView.direction = 45.f; - XCTAssertEqualWithAccuracy(self.mapView.direction, 45, 0.001, @"Programmatic rotation is allowed when rotateEnabled = NO."); - } - - // Enabled - { - [self.mapView resetNorthAnimated:NO]; - self.mapView.rotateEnabled = YES; - XCTAssertEqual(self.mapView.allowsRotating, YES); - - gesture.state = UIGestureRecognizerStateChanged; - gesture.rotation = MGLRadiansFromDegrees(30); - [self.mapView handleRotateGesture:gesture]; - XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Gestural rotation should work when rotation is enabled."); - } -} - -- (void)testRotationGesture { - self.mapView.zoomLevel = 15; - CLLocationCoordinate2D originalCenterCoordinate = self.mapView.centerCoordinate; - - UIRotationGestureRecognizerMock *gesture = [[UIRotationGestureRecognizerMock alloc] initWithTarget:self.mapView action:nil]; - gesture.state = UIGestureRecognizerStateBegan; - gesture.rotation = 0; - [self.mapView addGestureRecognizer:gesture]; - [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]); - [self.mapView handleRotateGesture:gesture]; - CGFloat wrappedRotation = mbgl::util::wrap(-MGLDegreesFromRadians(gesture.rotation), 0., 360.); - XCTAssertEqualWithAccuracy(self.mapView.direction, wrappedRotation, 0.001, @"Map direction should match gesture rotation for input of %@°.", degrees); - - // Given a hypothetical rotation around the exact center of the map, the center coordinate should remain the same. - // See above where we override -[UIRotationGestureRecognizer locationInView:] to always return the center of the target view. - XCTAssertEqualWithAccuracy(originalCenterCoordinate.latitude, self.mapView.centerCoordinate.latitude, 0.0000001, "@Map center coordinate latitude should remain constant during rotation of %@°.", degrees); - XCTAssertEqualWithAccuracy(originalCenterCoordinate.longitude, self.mapView.centerCoordinate.longitude, 0.0000001, @"Map center coordinate longitude should remain constant during rotation of %@°.", degrees); - } -} - -- (void)testResetPosition { - [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 { - CGFloat angle = atan2f(transform.b, transform.a); - return MGLDegreesFromRadians(angle); -} - -@end |