diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2019-08-22 11:56:15 -0700 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2019-08-22 11:56:15 -0700 |
commit | fe3460d64a4b698ecd24be8600b7d975791762e9 (patch) | |
tree | 66ffd3dcc1da7ace2c08984d2c63f4be4e9c676f | |
parent | 57e662332b1334f0c72ae8c40d3379bc9313fed3 (diff) | |
download | qtlocation-mapboxgl-fe3460d64a4b698ecd24be8600b7d975791762e9.tar.gz |
[ios] Add horizontal tilt gesture test.
-rw-r--r-- | platform/ios/test/MGLMapViewPitchTests.m | 36 |
1 files changed, 28 insertions, 8 deletions
diff --git a/platform/ios/test/MGLMapViewPitchTests.m b/platform/ios/test/MGLMapViewPitchTests.m index f8b114fd06..3e9311dbd4 100644 --- a/platform/ios/test/MGLMapViewPitchTests.m +++ b/platform/ios/test/MGLMapViewPitchTests.m @@ -2,7 +2,6 @@ #import <XCTest/XCTest.h> @interface MockUIPanGestureRecognizer : UIPanGestureRecognizer -@property CGFloat mbx_tiltGestureYTranslation; @property NSUInteger mbx_numberOfFingersForGesture; @property CGPoint mbx_middlePoint; @property CGPoint mbx_westPoint; @@ -12,24 +11,26 @@ @implementation MockUIPanGestureRecognizer - (instancetype)initWithTarget:(id)target action:(SEL)action { if (self = [super initWithTarget:target action:action]) { - self.mbx_tiltGestureYTranslation = 0; self.mbx_numberOfFingersForGesture = 2; - self.mbx_westPoint = CGPointMake(100, self.mbx_tiltGestureYTranslation); - self.mbx_eastPoint = CGPointMake(200, self.mbx_tiltGestureYTranslation); + self.mbx_westPoint = CGPointMake(100, 0); + self.mbx_eastPoint = CGPointMake(200, 0); } return self; } - (NSUInteger)numberOfTouches { return self.mbx_numberOfFingersForGesture; } -- (CGPoint)translationInView:(UIView *)view { return CGPointMake(self.mbx_middlePoint.x, self.mbx_tiltGestureYTranslation); } +- (CGPoint)translationInView:(UIView *)view { return self.mbx_middlePoint; } - (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView *)view { if (touchIndex == 0) { - return CGPointMake(self.mbx_westPoint.x, self.mbx_tiltGestureYTranslation); + return self.mbx_westPoint; } - return CGPointMake(self.mbx_eastPoint.x, self.mbx_tiltGestureYTranslation); + return self.mbx_eastPoint; } - (void)setTiltGestureYTranslationForPitchDegrees:(CGFloat)degrees { // The tilt gesture takes the number of screen points the fingers have moved and then divides them by a "slowdown" factor, which happens to be set to 2.0 in -[MGLMapView handleTwoFingerDragGesture:]. - self.mbx_tiltGestureYTranslation = -(degrees * 2.0); + CGFloat mbx_tiltGestureYTranslation = -(degrees * 2.0); + self.mbx_westPoint = CGPointMake(self.mbx_westPoint.x, mbx_tiltGestureYTranslation); + self.mbx_eastPoint = CGPointMake(self.mbx_eastPoint.x, mbx_tiltGestureYTranslation); + self.mbx_middlePoint = CGPointMake(self.mbx_middlePoint.x, mbx_tiltGestureYTranslation); } @end @@ -123,6 +124,25 @@ } } +- (void)testHorizontalTiltGesture { + MockUIPanGestureRecognizer *gesture = [[MockUIPanGestureRecognizer alloc] initWithTarget:self.mapView action:nil]; + gesture.state = UIGestureRecognizerStateBegan; + [self.mapView handleTwoFingerDragGesture:gesture]; + XCTAssertEqual(self.mapView.camera.pitch, 0, @"Pitch should initially be set to 0°."); + + // Tilt gestures should not be triggered on horizontal dragging. + for (NSInteger deltaX = 0; deltaX < 5; deltaX++) { + gesture.mbx_westPoint = CGPointMake(100 - deltaX, 100); + gesture.mbx_eastPoint = CGPointMake(100 - deltaX, 50); + gesture.mbx_middlePoint = CGPointMake((gesture.mbx_westPoint.x + gesture.mbx_westPoint.x)/2, (gesture.mbx_westPoint.y + gesture.mbx_westPoint.y)/2); + + gesture.state = UIGestureRecognizerStateChanged; + + [self.mapView handleTwoFingerDragGesture:gesture]; + XCTAssertEqual(self.mapView.camera.pitch, 0, @"Horizontal dragging should not tilt the map."); + } +} + - (void)testTiltGestureFromInitialTilt { CGFloat initialTilt = 20; CGFloat additionalTilt = 30; |