summaryrefslogtreecommitdiff
path: root/platform/darwin/test/MGLCodingTests.m
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/test/MGLCodingTests.m')
-rw-r--r--platform/darwin/test/MGLCodingTests.m119
1 files changed, 116 insertions, 3 deletions
diff --git a/platform/darwin/test/MGLCodingTests.m b/platform/darwin/test/MGLCodingTests.m
index ff0d674ad1..ac61672b76 100644
--- a/platform/darwin/test/MGLCodingTests.m
+++ b/platform/darwin/test/MGLCodingTests.m
@@ -66,12 +66,54 @@
[unarchivedPolyline replaceCoordinatesInRange:NSMakeRange(0, 1) withCoordinates:otherCoordinates];
XCTAssertNotEqualObjects(polyline, unarchivedPolyline);
+
+ CLLocationCoordinate2D multiLineCoordinates[] = {
+ CLLocationCoordinate2DMake(51.000000, 0.000000),
+ CLLocationCoordinate2DMake(51.000000, 1.000000),
+ CLLocationCoordinate2DMake(51.000000, 2.000000),
+ };
+
+ NSUInteger multiLineCoordinatesCount = sizeof(multiLineCoordinates) / sizeof(CLLocationCoordinate2D);
+ MGLPolyline *multiLine = [MGLPolyline polylineWithCoordinates:multiLineCoordinates count:multiLineCoordinatesCount];
+ CLLocationCoordinate2D multiLineCenter = CLLocationCoordinate2DMake(51.000000, 1.000000);
+
+ XCTAssertEqual([multiLine coordinate].latitude, multiLineCenter.latitude);
+ XCTAssertEqual([multiLine coordinate].longitude, multiLineCenter.longitude);
+
+ CLLocationCoordinate2D segmentCoordinates[] = {
+ CLLocationCoordinate2DMake(35.040390, -85.311477),
+ CLLocationCoordinate2DMake(35.040390, -85.209510),
+ };
+
+ NSUInteger segmentCoordinatesCount = sizeof(segmentCoordinates) / sizeof(CLLocationCoordinate2D);
+ MGLPolyline *segmentLine = [MGLPolyline polylineWithCoordinates:segmentCoordinates count:segmentCoordinatesCount];
+ CLLocationCoordinate2D segmentCenter = CLLocationCoordinate2DMake(35.0404006631, -85.2604935);
+
+ XCTAssertEqualWithAccuracy([segmentLine coordinate].latitude, segmentCenter.latitude, 0.0001);
+ XCTAssertEqualWithAccuracy([segmentLine coordinate].longitude, segmentCenter.longitude, 0.0001);
+
+ CLLocationCoordinate2D sfToBerkeleyCoordinates[] = {
+ CLLocationCoordinate2DMake(37.782440, -122.397111),
+ CLLocationCoordinate2DMake(37.818384, -122.352994),
+ CLLocationCoordinate2DMake(37.831401, -122.274545),
+ CLLocationCoordinate2DMake(37.862172, -122.262700),
+ };
+
+ NSUInteger sfToBerkeleyCoordinatesCount = sizeof(sfToBerkeleyCoordinates) / sizeof(CLLocationCoordinate2D);
+ MGLPolyline *sfToBerkeleyLine = [MGLPolyline polylineWithCoordinates:sfToBerkeleyCoordinates count:sfToBerkeleyCoordinatesCount];
+ CLLocationCoordinate2D sfToBerkeleyCenter = CLLocationCoordinate2DMake(37.8230575118,-122.324867587);
+
+ XCTAssertEqualWithAccuracy([sfToBerkeleyLine coordinate].latitude, sfToBerkeleyCenter.latitude, 0.0001);
+ XCTAssertEqualWithAccuracy([sfToBerkeleyLine coordinate].longitude, sfToBerkeleyCenter.longitude, 0.0001);
+
}
- (void)testPolygon {
CLLocationCoordinate2D coordinates[] = {
- CLLocationCoordinate2DMake(0.664482398, 1.8865675),
- CLLocationCoordinate2DMake(2.13224687, 3.9984632)
+ CLLocationCoordinate2DMake(35.090745, -85.300259),
+ CLLocationCoordinate2DMake(35.092035, -85.298885),
+ CLLocationCoordinate2DMake(35.090639, -85.297416),
+ CLLocationCoordinate2DMake(35.089112, -85.298928)
};
NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
@@ -84,8 +126,24 @@
[NSKeyedArchiver archiveRootObject:polygon toFile:filePath];
MGLPolygon *unarchivedPolygon = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
+ [unarchivedPolygon coordinate];
XCTAssertEqualObjects(polygon, unarchivedPolygon);
+
+ CLLocationCoordinate2D squareCoordinates[] = {
+ CLLocationCoordinate2DMake(100.0, 0.0),
+ CLLocationCoordinate2DMake(101.0, 0.0),
+ CLLocationCoordinate2DMake(101.0, 1.0),
+ CLLocationCoordinate2DMake(100.0, 1.0),
+ };
+
+ NSUInteger squareCoordinatesCount = sizeof(squareCoordinates) / sizeof(CLLocationCoordinate2D);
+ MGLPolygon *squarePolygon = [MGLPolygon polygonWithCoordinates:squareCoordinates count:squareCoordinatesCount];
+ CLLocationCoordinate2D squareCenter = CLLocationCoordinate2DMake(100.5, 0.5);
+
+ XCTAssertEqual([squarePolygon coordinate].latitude, squareCenter.latitude);
+ XCTAssertEqual([squarePolygon coordinate].longitude, squareCenter.longitude);
+
}
- (void)testPolygonWithInteriorPolygons {
@@ -169,6 +227,11 @@
NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
MGLPointCollection *pointCollection = [MGLPointCollection pointCollectionWithCoordinates:coordinates count:numberOfCoordinates];
+ CLLocationCoordinate2D pointsCenter = CLLocationCoordinate2DMake(0, 1);
+
+ XCTAssertEqual([pointCollection coordinate].latitude, pointsCenter.latitude);
+ XCTAssertEqual([pointCollection coordinate].longitude, pointsCenter.longitude);
+
NSString *filePath = [self temporaryFilePathForClass:[MGLPointCollection class]];
[NSKeyedArchiver archiveRootObject:pointCollection toFile:filePath];
@@ -218,6 +281,30 @@
CLLocationCoordinate2DMake(20, 21),
CLLocationCoordinate2DMake(30, 31),
};
+
+ CLLocationCoordinate2D line1[] = {
+ CLLocationCoordinate2DMake(100, 40),
+ CLLocationCoordinate2DMake(105, 45),
+ CLLocationCoordinate2DMake(110, 55)
+ };
+
+ CLLocationCoordinate2D line2[] = {
+ CLLocationCoordinate2DMake(105, 40),
+ CLLocationCoordinate2DMake(110, 45),
+ CLLocationCoordinate2DMake(115, 55)
+ };
+
+ NSUInteger road1CoordinatesCount = sizeof(line1) / sizeof(CLLocationCoordinate2D);
+ NSUInteger road2CoordinatesCount = sizeof(line2) / sizeof(CLLocationCoordinate2D);
+
+ MGLPolyline *road1Polyline = [MGLPolyline polylineWithCoordinates:line1 count:road1CoordinatesCount];
+ MGLPolyline *road2Polyline = [MGLPolyline polylineWithCoordinates:line1 count:road2CoordinatesCount];
+
+ MGLMultiPolyline *roads = [MGLMultiPolyline multiPolylineWithPolylines:@[road1Polyline, road2Polyline]];
+ CLLocationCoordinate2D roadCenter = CLLocationCoordinate2DMake(100, 40);
+
+ XCTAssertEqual([roads coordinate].latitude, roadCenter.latitude);
+ XCTAssertEqual([roads coordinate].longitude, roadCenter.longitude);
NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
@@ -248,6 +335,31 @@
CLLocationCoordinate2DMake(20, 21),
CLLocationCoordinate2DMake(30, 31),
};
+
+ CLLocationCoordinate2D outerSquare[] = {
+ CLLocationCoordinate2DMake(100.0, 0.0),
+ CLLocationCoordinate2DMake(101.0, 0.0),
+ CLLocationCoordinate2DMake(101.0, 1.0),
+ CLLocationCoordinate2DMake(100.0, 1.0),
+ };
+
+ CLLocationCoordinate2D innerSquare[] = {
+ CLLocationCoordinate2DMake(100.35, 0.35),
+ CLLocationCoordinate2DMake(100.65, 0.35),
+ CLLocationCoordinate2DMake(100.65, 0.65),
+ CLLocationCoordinate2DMake(100.35, 0.65),
+ };
+
+ NSUInteger outerCoordinatesCount = sizeof(outerSquare) / sizeof(CLLocationCoordinate2D);
+ NSUInteger innerCoordinatesCount = sizeof(innerSquare) / sizeof(CLLocationCoordinate2D);
+
+ MGLPolygon *innerPolygonSquare = [MGLPolygon polygonWithCoordinates:innerSquare count:innerCoordinatesCount];
+ MGLPolygon *outerPolygonSquare = [MGLPolygon polygonWithCoordinates:outerSquare count:outerCoordinatesCount interiorPolygons:@[innerPolygonSquare]];
+ MGLMultiPolygon *squares = [MGLMultiPolygon multiPolygonWithPolygons:@[outerPolygonSquare, innerPolygonSquare]];
+ CLLocationCoordinate2D squareCenter = CLLocationCoordinate2DMake(100.5, 0.5);
+
+ XCTAssertEqual([squares coordinate].latitude, squareCenter.latitude);
+ XCTAssertEqual([squares coordinate].longitude, squareCenter.longitude);
NSUInteger numberOfCoordinates = sizeof(coordinates) / sizeof(CLLocationCoordinate2D);
@@ -265,9 +377,10 @@
MGLMultiPolygon *unarchivedMultiPolygon = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
MGLMultiPolygon *anotherMultiPolygon = [MGLMultiPolygon multiPolygonWithPolygons:[polygons subarrayWithRange:NSMakeRange(0, polygons.count/2)]];
-
+
XCTAssertEqualObjects(multiPolygon, unarchivedMultiPolygon);
XCTAssertNotEqualObjects(anotherMultiPolygon, unarchivedMultiPolygon);
+
}
- (void)testShapeCollection {