summaryrefslogtreecommitdiff
path: root/platform/ios/Integration Tests/MBGLIntegrationTests.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/Integration Tests/MBGLIntegrationTests.mm')
-rw-r--r--platform/ios/Integration Tests/MBGLIntegrationTests.mm252
1 files changed, 0 insertions, 252 deletions
diff --git a/platform/ios/Integration Tests/MBGLIntegrationTests.mm b/platform/ios/Integration Tests/MBGLIntegrationTests.mm
deleted file mode 100644
index d0f5f6a79d..0000000000
--- a/platform/ios/Integration Tests/MBGLIntegrationTests.mm
+++ /dev/null
@@ -1,252 +0,0 @@
-#import "MGLMapViewIntegrationTest.h"
-#import "MGLMapView_Private.h"
-#import "MGLMapView+Impl.h"
-
-#include <mbgl/gfx/renderable.hpp>
-
-@interface MBGLIntegrationTests : MGLMapViewIntegrationTest
-@end
-
-@implementation MBGLIntegrationTests
-
-#pragma mark - Tests
-
-- (void)waitForMapViewToBeRendered {
- [self waitForMapViewToBeRenderedWithTimeout:10];
-}
-
-// This test does not strictly need to be in this test file/target. Including here for convenience.
-- (void)testOpenGLLayerDoesNotLeakWhenCreatedAndDestroyedWithoutAddingToStyle {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- __weak id weakLayer = layer;
- layer = nil;
-
- XCTAssertNil(weakLayer);
-}
-
-- (void)testAddingRemovingOpenGLLayerWithoutRendering {
- XCTAssertNotNil(self.style);
-
- void(^addRemoveGLLayer)(void) = ^{
- __weak id weakLayer = nil;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- weakLayer = layer;
-
- // Nil the layer prior to remove to ensure it's being retained
- layer = nil;
- [self.style removeLayer:weakLayer];
- }
-
- XCTAssertNil(weakLayer);
- };
-
- addRemoveGLLayer();
- addRemoveGLLayer();
- addRemoveGLLayer();
-}
-
-- (void)testReusingOpenGLLayerIdentifier {
- __weak MGLOpenGLStyleLayer *weakLayer2;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer1 = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer1 atIndex:0];
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:layer1];
-
- MGLOpenGLStyleLayer *layer2 = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer2 = layer2;
-
- XCTAssertNotNil(layer2);
- XCTAssert(layer1 != layer2);
-
- [self.style insertLayer:layer2 atIndex:0];
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:layer2];
-
- XCTAssertNil([layer1 style]);
- XCTAssertNil([layer2 style]);
- }
-
- // At this point, layer2 (and layer1) should still be around,
- // since the render process needs to keep a reference to them.
- XCTAssertNotNil(weakLayer2);
-
- // Let render loop run enough to release the layers
- [self waitForMapViewToBeRendered];
- XCTAssertNil(weakLayer2);
-}
-
-- (void)testAddingRemovingOpenGLLayer {
- XCTAssertNotNil(self.style);
-
- void(^addRemoveGLLayer)(void) = ^{
-
- __weak id retrievedLayer = nil;
-
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
-
- retrievedLayer = [self.style layerWithIdentifier:@"gl-layer"];
- XCTAssertNotNil(retrievedLayer);
-
- [self.style removeLayer:retrievedLayer];
- [self waitForMapViewToBeRendered];
- }
-
- XCTAssertNil(retrievedLayer);
- };
-
- addRemoveGLLayer();
- addRemoveGLLayer();
- addRemoveGLLayer();
-}
-
-- (void)testReusingOpenGLLayer {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- [self.style insertLayer:layer atIndex:0];
- [self waitForMapViewToBeRendered];
-
- [self.style removeLayer:layer];
- [self waitForMapViewToBeRendered];
-
- [self.style insertLayer:layer atIndex:0];
- [self waitForMapViewToBeRendered];
-
- [self.style removeLayer:layer];
- [self waitForMapViewToBeRendered];
-}
-
-- (void)testOpenGLLayerDoesNotLeakWhenRemovedFromStyle {
- __weak id weakLayer;
- @autoreleasepool {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
- [self.style removeLayer:[self.style layerWithIdentifier:@"gl-layer"]];
- }
-
- MGLStyleLayer *layer2 = weakLayer;
-
- XCTAssertNotNil(weakLayer);
- [self waitForMapViewToBeRendered];
-
- layer2 = nil;
- XCTAssertNil(weakLayer);
-}
-
-- (void)testOpenGLLayerDoesNotLeakWhenStyleChanged {
- __weak MGLOpenGLStyleLayer *weakLayer;
-
- @autoreleasepool {
- {
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [self.style insertLayer:layer atIndex:0];
- layer = nil;
- }
- }
-
- XCTAssertNotNil(weakLayer);
-
- [self waitForMapViewToBeRendered];
-
- MGLStyleLayer *layer2 = [self.mapView.style layerWithIdentifier:@"gl-layer"];
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self.mapView setStyleURL:styleURL];
- [self waitForExpectations:@[self.styleLoadingExpectation] timeout:10];
-
- // At this point the C++ CustomLayer will have been destroyed, and the rawLayer pointer has been NULLed
- XCTAssert(weakLayer == layer2);
- XCTAssertNotNil(weakLayer);
-
- // Asking the style for the layer should return nil
- MGLStyleLayer *layer3 = [self.mapView.style layerWithIdentifier:@"gl-layer"];
- XCTAssertNil(layer3);
-}
-
-
-- (void)testOpenGLLayerDoesNotLeakWhenMapViewDeallocs {
- __weak id weakLayer;
-
- @autoreleasepool {
-
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- MGLMapView *mapView2 = [[MGLMapView alloc] initWithFrame:UIScreen.mainScreen.bounds styleURL:styleURL];
- mapView2.delegate = self;
-
- XCTAssertNil(mapView2.style);
-
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self waitForExpectationsWithTimeout:10 handler:nil];
-
- MGLOpenGLStyleLayer *layer = [[MGLOpenGLStyleLayer alloc] initWithIdentifier:@"gl-layer"];
- weakLayer = layer;
- [mapView2.style insertLayer:layer atIndex:0];
- layer = nil;
-
- [self waitForMapViewToBeRendered];
- }
- XCTAssertNil(weakLayer);
-}
-
-- (void)testMGLMapViewImplHasCorrectSize {
- NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"one-liner" withExtension:@"json"];
- self.styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."];
- [self.mapView setStyleURL:styleURL];
- [self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(9.6315313, 52.4133574) animated:NO];
- [self waitForExpectations:@[self.styleLoadingExpectation] timeout:1];
-
- MGLMapViewImpl *mapViewImpl = [self.mapView viewImpl];
- CGFloat scaleFactor = [UIScreen mainScreen].scale;
- mbgl::Size renderableSize = mapViewImpl->getRendererBackend().getDefaultRenderable().getSize();
- mbgl::Size viewSize = {
- static_cast<uint32_t>(self.mapView.bounds.size.width * scaleFactor),
- static_cast<uint32_t>(self.mapView.bounds.size.height * scaleFactor)
- };
-
- // Test that mapView and default renderable have the same size.
- XCTAssertTrue(renderableSize == viewSize);
-
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(9.6315313, 52.4133574),
- CLLocationCoordinate2DMake(24.9410248, 60.1733244)};
-
- MGLPointCollectionFeature *points = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0])];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"heatmap" shape:points options:nil];
- [self.style addSource:source];
-
- MGLHeatmapStyleLayer *heatmapLayer = [[MGLHeatmapStyleLayer alloc] initWithIdentifier:@"lineLayer" source:source];
- [self.style addLayer:heatmapLayer];
-
- // Test that heatmap layer can create a texture and be successfully rendered.
- [self waitForMapViewToBeRendered];
-
- // Resize frame of the view.
- [self.mapView setFrame: CGRect{self.mapView.bounds.origin, {256, 256}}];
-
- // Force sync re-layout.
- [self.mapView layoutIfNeeded];
-
- // Test that mapView and default renderable have the same size after re-layout.
- renderableSize = mapViewImpl->getRendererBackend().getDefaultRenderable().getSize();
- viewSize = { static_cast<uint32_t>(self.mapView.bounds.size.width * scaleFactor),
- static_cast<uint32_t>(self.mapView.bounds.size.height * scaleFactor) };
- XCTAssertTrue(renderableSize == viewSize);
- [self waitForMapViewToBeRendered];
-}
-
-@end
-