summaryrefslogtreecommitdiff
path: root/platform/darwin/test/MGLShapeSourceTests.mm
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/test/MGLShapeSourceTests.mm')
-rw-r--r--platform/darwin/test/MGLShapeSourceTests.mm330
1 files changed, 0 insertions, 330 deletions
diff --git a/platform/darwin/test/MGLShapeSourceTests.mm b/platform/darwin/test/MGLShapeSourceTests.mm
deleted file mode 100644
index 9046607010..0000000000
--- a/platform/darwin/test/MGLShapeSourceTests.mm
+++ /dev/null
@@ -1,330 +0,0 @@
-#import <XCTest/XCTest.h>
-
-#import <Mapbox/Mapbox.h>
-#import "MGLFeature_Private.h"
-#import "MGLShapeSource_Private.h"
-#import "MGLSource_Private.h"
-
-#include <mbgl/style/sources/geojson_source.hpp>
-
-@interface MGLShapeSourceTests : XCTestCase
-@end
-
-@implementation MGLShapeSourceTests
-
-- (void)testGeoJSONOptionsFromDictionary {
- NSExpression *reduceExpression = [NSExpression expressionForFunction:@"sum:" arguments:@[[NSExpression expressionForKeyPath:@"featureAccumulated"], [NSExpression expressionForKeyPath:@"sumValue"]]];
- NSExpression *mapExpression = [NSExpression expressionForKeyPath:@"mag"];
- NSArray *clusterPropertyArray = @[reduceExpression, mapExpression];
- NSDictionary *options = @{MGLShapeSourceOptionClustered: @YES,
- MGLShapeSourceOptionClusterRadius: @42,
- MGLShapeSourceOptionClusterProperties: @{@"sumValue": clusterPropertyArray},
- MGLShapeSourceOptionMaximumZoomLevelForClustering: @98,
- MGLShapeSourceOptionMaximumZoomLevel: @99,
- MGLShapeSourceOptionBuffer: @1976,
- MGLShapeSourceOptionSimplificationTolerance: @0.42,
- MGLShapeSourceOptionLineDistanceMetrics: @YES};
-
- auto mbglOptions = MGLGeoJSONOptionsFromDictionary(options);
- XCTAssertTrue(mbglOptions->cluster);
- XCTAssertEqual(mbglOptions->clusterRadius, 42);
- XCTAssertEqual(mbglOptions->clusterMaxZoom, 98);
- XCTAssertEqual(mbglOptions->maxzoom, 99);
- XCTAssertEqual(mbglOptions->buffer, 1976);
- XCTAssertEqual(mbglOptions->tolerance, 0.42);
- XCTAssertTrue(mbglOptions->lineMetrics);
- XCTAssertTrue(!mbglOptions->clusterProperties.empty());
-
- options = @{MGLShapeSourceOptionClustered: @"number 1"};
- XCTAssertThrows(MGLGeoJSONOptionsFromDictionary(options));
-}
-
-- (void)testNilShape {
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:nil options:nil];
- XCTAssertNil(source.shape);
-}
-
-- (void)testUnclusterableShape {
- NSDictionary *options = @{
- MGLShapeSourceOptionClustered: @YES,
- };
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:[[MGLPointFeature alloc] init] options:options];
- XCTAssertTrue([source.shape isKindOfClass:[MGLPointFeature class]]);
-
- MGLShapeCollectionFeature *feature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[]];
- source = [[MGLShapeSource alloc] initWithIdentifier:@"id" shape:feature options:options];
- XCTAssertTrue([source.shape isKindOfClass:[MGLShapeCollectionFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithDataMultipleFeatures {
-
- NSString *geoJSON = @"{\"type\": \"FeatureCollection\",\"features\": [{\"type\": \"Feature\",\"properties\": {},\"geometry\": {\"type\": \"LineString\",\"coordinates\": [[-107.75390625,40.329795743702064],[-104.34814453125,37.64903402157866]]}}]}";
-
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:shape options:nil];
-
- MGLShapeCollection *collection = (MGLShapeCollection *)source.shape;
- XCTAssertNotNil(collection);
- XCTAssertEqual(collection.shapes.count, 1UL);
- XCTAssertTrue([collection.shapes.firstObject isMemberOfClass:[MGLPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithSingleGeometry {
- NSData *data = [@"{\"type\": \"Point\", \"coordinates\": [0, 0]}" dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"geojson" shape:shape options:nil];
- XCTAssertNotNil(source.shape);
- XCTAssert([source.shape isKindOfClass:[MGLPointAnnotation class]]);
-}
-
-- (void)testMGLGeoJSONSourceWithSingleFeature {
- NSString *geoJSON = @"{\"type\": \"Feature\", \"properties\": {\"color\": \"green\"}, \"geometry\": { \"type\": \"Point\", \"coordinates\": [ -114.06847000122069, 51.050459433092655 ] }}";
- NSData *data = [geoJSON dataUsingEncoding:NSUTF8StringEncoding];
- NSError *error;
- MGLShape *shape = [MGLShape shapeWithData:data encoding:NSUTF8StringEncoding error:&error];
- XCTAssertNil(error);
- XCTAssertNotNil(shape);
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"geojson" shape:shape options:nil];
- XCTAssertNotNil(source.shape);
- XCTAssert([source.shape isKindOfClass:[MGLPointFeature class]]);
- MGLPointFeature *feature = (MGLPointFeature *)source.shape;
- XCTAssert([feature.attributes.allKeys containsObject:@"color"]);
-}
-
-- (void)testMGLShapeSourceWithPolylineFeatures {
- CLLocationCoordinate2D coordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates count:2];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polylineFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPolygonFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5];
- polygonFeature.identifier = @"feature-id";
- NSString *stringAttribute = @"string";
- NSNumber *boolAttribute = [NSNumber numberWithBool:YES];
- NSNumber *doubleAttribute = [NSNumber numberWithDouble:1.23];
- NSDictionary *nestedDictionaryValue = @{@"nested-key-1": @"nested-string-value"};
- NSArray *arrayValue = @[@"string-value", @2];
- NSDictionary *dictionaryValue = @{@"key-1": @"string-value",
- @"key-2": @1,
- @"key-3": nestedDictionaryValue,
- @"key-4": arrayValue};
- NSArray *arrayOfArrays = @[@[@1, @"string-value", @[@"jagged"]]];
- NSArray *arrayOfDictionaries = @[@{@"key": @"value"}];
-
- polygonFeature.attributes = @{@"name": stringAttribute,
- @"bool": boolAttribute,
- @"double": doubleAttribute,
- @"dictionary-attribute": dictionaryValue,
- @"array-attribute": arrayValue,
- @"array-of-array-attribute": arrayOfArrays,
- @"array-of-dictionary-attribute": arrayOfDictionaries};
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- MGLPolygonFeature *expectedPolygonFeature = (MGLPolygonFeature *)source.shape;
- XCTAssertEqualObjects(expectedPolygonFeature.identifier, polygonFeature.identifier);
- XCTAssertTrue([expectedPolygonFeature isMemberOfClass:[MGLPolygonFeature class]]);
- XCTAssertEqualObjects(expectedPolygonFeature.identifier, polygonFeature.identifier);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"name"], stringAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"bool"], boolAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"double"], doubleAttribute);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"dictionary-attribute"], dictionaryValue);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-attribute"], arrayValue);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-of-array-attribute"], arrayOfArrays);
- XCTAssertEqualObjects(expectedPolygonFeature.attributes[@"array-of-dictionary-attribute"], arrayOfDictionaries);
-}
-
-- (void)testMGLShapeSourceWithPolygonFeaturesInculdingInteriorPolygons {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:polygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPolygonFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithMultiPolylineFeatures {
- CLLocationCoordinate2D firstCoordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *firstPolylineFeature = [MGLPolylineFeature polylineWithCoordinates:firstCoordinates count:2];
- CLLocationCoordinate2D secondCoordinates[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *secondPolylineFeature = [MGLPolylineFeature polylineWithCoordinates:secondCoordinates count:2];
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[firstPolylineFeature, secondPolylineFeature]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:multiPolylineFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLMultiPolylineFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithMultiPolygonFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *firstPolygon = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
- MGLPolygonFeature *secondPolygon = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- MGLMultiPolygonFeature *multiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:@[firstPolygon, secondPolygon]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:multiPolygonFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLMultiPolygonFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPointFeature {
- MGLPointFeature *pointFeature = [MGLPointFeature new];
- pointFeature.coordinate = CLLocationCoordinate2DMake(0.2, 100.2);
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"souce-id" shape:pointFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPointFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithPointCollectionFeature {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
- MGLPointCollectionFeature *pointCollectionFeature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:5];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"souce-id" shape:pointCollectionFeature options:nil];
-
- XCTAssertNotNil(source.shape);
- XCTAssertTrue([source.shape isMemberOfClass:[MGLPointCollectionFeature class]]);
-}
-
-- (void)testMGLShapeSourceWithShapeCollectionFeatures {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- CLLocationCoordinate2D interiorCoordinates[] = {
- CLLocationCoordinate2DMake(0.2, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.8),
- CLLocationCoordinate2DMake(0.8, 100.2),
- CLLocationCoordinate2DMake(0.2, 100.2)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:interiorCoordinates count:5];
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:5 interiorPolygons:@[polygon]];
-
- CLLocationCoordinate2D coordinates_2[] = { CLLocationCoordinate2DMake(0, 0), CLLocationCoordinate2DMake(10, 10)};
- MGLPolylineFeature *polylineFeature = [MGLPolylineFeature polylineWithCoordinates:coordinates_2 count:2];
-
- MGLMultiPolygonFeature *multiPolygonFeature = [MGLMultiPolygonFeature multiPolygonWithPolygons:@[polygonFeature, polygonFeature]];
-
- MGLMultiPolylineFeature *multiPolylineFeature = [MGLMultiPolylineFeature multiPolylineWithPolylines:@[polylineFeature, polylineFeature]];
-
- MGLPointCollectionFeature *pointCollectionFeature = [MGLPointCollectionFeature pointCollectionWithCoordinates:coordinates count:5];
-
- MGLPointFeature *pointFeature = [MGLPointFeature new];
- pointFeature.coordinate = CLLocationCoordinate2DMake(0.2, 100.2);
-
- MGLShapeCollectionFeature *shapeCollectionFeature = [MGLShapeCollectionFeature shapeCollectionWithShapes:@[polygonFeature, polylineFeature, multiPolygonFeature, multiPolylineFeature, pointCollectionFeature, pointFeature]];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shape:shapeCollectionFeature options:nil];
-
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
- XCTAssertNotNil(shape);
- XCTAssert(shape.shapes.count == 6, @"Shape collection should contain 6 shapes");
-}
-
-- (void)testMGLShapeSourceWithFeaturesConvenienceInitializer {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygonFeature *polygonFeature = [MGLPolygonFeature polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" features:@[polygonFeature] options:nil];
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
-
- XCTAssertTrue([shape isKindOfClass:[MGLShapeCollectionFeature class]]);
- XCTAssertEqual(shape.shapes.count, 1UL, @"Shape collection should contain 1 shape");
-
- // when a shape is included in the features array
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wobjc-literal-conversion"
- XCTAssertThrowsSpecificNamed([[MGLShapeSource alloc] initWithIdentifier:@"source-id-invalid" features:@[polygon] options:nil], NSException, NSInvalidArgumentException, @"Shape source should raise an exception if a shape is sent to the features initializer");
-#pragma clang diagnostic pop
-}
-
-- (void)testMGLShapeSourceWithShapesConvenienceInitializer {
- CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 101.0),
- CLLocationCoordinate2DMake(1.0, 100.0),
- CLLocationCoordinate2DMake(0.0, 100.0)};
-
- MGLPolygon *polygon = [MGLPolygon polygonWithCoordinates:coordinates count:sizeof(coordinates)/sizeof(coordinates[0]) interiorPolygons:nil];
-
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"source-id" shapes:@[polygon] options:nil];
- MGLShapeCollectionFeature *shape = (MGLShapeCollectionFeature *)source.shape;
-
- XCTAssertTrue([shape isKindOfClass:[MGLShapeCollection class]]);
- XCTAssertEqual(shape.shapes.count, 1UL, @"Shape collection should contain 1 shape");
-}
-
-@end