From 87143a355d12fa4bfd3f094e187a8bab8148e7de Mon Sep 17 00:00:00 2001 From: Julian Rex Date: Mon, 18 Jun 2018 14:24:14 -0400 Subject: [ios] Fix for integration tests not running on iOS 9. (#12145) --- .../Integration Tests/MGLCameraTransitionTests.mm | 6 +----- .../Integration Tests/MGLMapViewIntegrationTest.m | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) (limited to 'platform/ios/Integration Tests') diff --git a/platform/ios/Integration Tests/MGLCameraTransitionTests.mm b/platform/ios/Integration Tests/MGLCameraTransitionTests.mm index 4a9db60982..0b28104c96 100644 --- a/platform/ios/Integration Tests/MGLCameraTransitionTests.mm +++ b/platform/ios/Integration Tests/MGLCameraTransitionTests.mm @@ -323,11 +323,7 @@ // Should take MGLAnimationDuration [self.mapView setCenterCoordinate:target zoomLevel:zoomLevel animated:YES]; - // Run the loop, so the camera can fly to the new camera - while (runloop) { - [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; - } - [self waitForExpectations:@[expectation] timeout:0.5]; + [self waitForExpectations:@[expectation] timeout:2.0]; NSLog(@"setCenterCoordinate: %0.4fs", stop1 - stop0); NSLog(@"flyToCamera: %0.4fs", stop2 - stop1); diff --git a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m b/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m index c42b8eef89..8fb41d0d11 100644 --- a/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m +++ b/platform/ios/Integration Tests/MGLMapViewIntegrationTest.m @@ -1,5 +1,9 @@ #import "MGLMapViewIntegrationTest.h" +@interface MGLMapView (MGLMapViewIntegrationTest) +- (void)updateFromDisplayLink; +@end + @implementation MGLMapViewIntegrationTest - (void)setUp { @@ -78,6 +82,27 @@ [self waitForExpectations:@[self.renderFinishedExpectation] timeout:timeout]; } +- (void)waitForExpectations:(NSArray *)expectations timeout:(NSTimeInterval)seconds { + + NSTimer *timer; + + if (@available(iOS 10.0, *)) { + // We're good. + } + else if (self.mapView) { + // Before iOS 10 it seems that the display link is not called during the + // waitForExpectations below + timer = [NSTimer scheduledTimerWithTimeInterval:1.0/30.0 + target:self.mapView + selector:@selector(updateFromDisplayLink) + userInfo:nil + repeats:YES]; + } + + [super waitForExpectations:expectations timeout:seconds]; + [timer invalidate]; +} + - (MGLStyle *)style { return self.mapView.style; } -- cgit v1.2.1