summaryrefslogtreecommitdiff
path: root/platform/darwin/test
diff options
context:
space:
mode:
authorIvo van Dongen <info@ivovandongen.nl>2017-03-05 14:12:37 -0800
committerJesse Bounds <jesse@rebounds.net>2017-03-10 11:08:32 -0800
commita7fd788b5d5d7734666758320235f14be8187179 (patch)
tree5799cc0159590c88e02481b60eac9db9202956d6 /platform/darwin/test
parent517659b1b44a4e31e1035d4da9c444380454ad58 (diff)
downloadqtlocation-mapboxgl-a7fd788b5d5d7734666758320235f14be8187179.tar.gz
[macos, ios] query source features
Diffstat (limited to 'platform/darwin/test')
-rw-r--r--platform/darwin/test/MGLSourceQueryTests.m73
-rw-r--r--platform/darwin/test/query-style.json98
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"
+ }
+ }
+ ]
+}