diff options
Diffstat (limited to 'platform/darwin/test')
-rw-r--r-- | platform/darwin/test/MGLSourceQueryTests.m | 73 | ||||
-rw-r--r-- | platform/darwin/test/query-style.json | 98 |
2 files changed, 171 insertions, 0 deletions
diff --git a/platform/darwin/test/MGLSourceQueryTests.m b/platform/darwin/test/MGLSourceQueryTests.m new file mode 100644 index 0000000000..28e968146b --- /dev/null +++ b/platform/darwin/test/MGLSourceQueryTests.m @@ -0,0 +1,73 @@ +#import <Mapbox/Mapbox.h> + +#import "NSBundle+MGLAdditions.h" + +#import <XCTest/XCTest.h> +#if TARGET_OS_IPHONE + #import <UIKit/UIKit.h> +#else + #import <Cocoa/Cocoa.h> +#endif + +@interface MGLSourceQueryTests : XCTestCase <MGLMapViewDelegate> + +@property (nonatomic) MGLMapView *mapView; +@property (nonatomic) MGLStyle *style; + +@end + +@implementation MGLSourceQueryTests { + XCTestExpectation *_styleLoadingExpectation; +} + +- (void)setUp { + [super setUp]; + + [MGLAccountManager setAccessToken:@"pk.feedcafedeadbeefbadebede"]; + NSURL *styleURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"query-style" withExtension:@"json"]; + self.mapView = [[MGLMapView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) styleURL:styleURL]; + self.mapView.delegate = self; + if (!self.mapView.style) { + _styleLoadingExpectation = [self expectationWithDescription:@"Map view should finish loading style."]; + [self waitForExpectationsWithTimeout:1 handler:nil]; + } +} + +- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style { + XCTAssertNotNil(mapView.style); + XCTAssertEqual(mapView.style, style); + + [_styleLoadingExpectation fulfill]; +} + +- (void)tearDown { + _styleLoadingExpectation = nil; + self.mapView = nil; + + [super tearDown]; +} + +- (MGLStyle *)style { + return self.mapView.style; +} + +- (void) testQueryVectorSource { + MGLVectorSource *source = (MGLVectorSource *)[self.style sourceWithIdentifier:@"source5"]; + + NSSet *sourceLayers = [NSSet setWithObjects:@"buildings", @"water", nil]; + NSArray* features = [source featuresInSourceLayersWithIdentifiers:sourceLayers predicate:nil]; + // Source won't be loaded yet, so features is 0 + XCTAssertEqual([features count], 0); +} + +- (void) testQueryShapeSource { + MGLShapeSource *source = (MGLShapeSource *)[self.style sourceWithIdentifier:@"source4"]; + + NSPredicate *eqPredicate = [NSPredicate predicateWithFormat:@"key1 == 'value1'"]; + NSArray* features = [source featuresMatchingPredicate:eqPredicate]; + // Source won't be loaded yet, so features is 0 + XCTAssertEqual([features count], 0); + +} + +@end diff --git a/platform/darwin/test/query-style.json b/platform/darwin/test/query-style.json new file mode 100644 index 0000000000..97f1d04432 --- /dev/null +++ b/platform/darwin/test/query-style.json @@ -0,0 +1,98 @@ +{ + "version": 8, + "sources": { + "source1": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + }, + "source2": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + }, + "source3": { + "type": "geojson", + "data": { + "type": "Point", + "coordinates": [ + 0, + 0 + ] + } + }, + "source4": { + "type": "geojson", + "data": { + "type": "Feature", + "id": "feature1", + "geometry": { + "type": "Point", + "coordinates": [ + 0.0, + 0.0 + ] + }, + "properties": { + "key1": "value1", + "key2": 1.5, + "key3": false, + "key4": 0.5 + } + } + }, + "source5": { + "type": "vector", + "url": "mapbox://mapbox.mapbox-streets-v6" + }, + "source6": { + "type": "raster", + "url": "mapbox://mapbox.satellite", + "tileSize": 256 + } + }, + "layers": [ + { + "id": "layer1", + "type": "symbol", + "source": "source1", + "layout": { + "icon-image": "test-icon" + } + }, + { + "id": "layer2", + "type": "symbol", + "source": "source2", + "layout": { + "icon-image": "test-icon" + } + }, + { + "id": "layer3", + "type": "symbol", + "source": "source3", + "layout": { + "icon-image": "test-icon" + } + }, + { + "id": "layer4", + "type": "symbol", + "source": "source4", + "layout": { + "icon-image": "test-icon" + } + } + ] +} |