diff options
Diffstat (limited to 'platform/darwin/test/MGLTileSetTests.mm')
-rw-r--r-- | platform/darwin/test/MGLTileSetTests.mm | 103 |
1 files changed, 61 insertions, 42 deletions
diff --git a/platform/darwin/test/MGLTileSetTests.mm b/platform/darwin/test/MGLTileSetTests.mm index d77046928c..06901a0e96 100644 --- a/platform/darwin/test/MGLTileSetTests.mm +++ b/platform/darwin/test/MGLTileSetTests.mm @@ -1,7 +1,7 @@ #import <XCTest/XCTest.h> #import <Mapbox/Mapbox.h> -#import "MGLTileSet_Private.h" +#import "MGLTileSource_Private.h" #include <mbgl/util/tileset.hpp> @@ -11,72 +11,91 @@ @implementation MGLTileSetTests -- (void)testTileSet { +- (void)testTileSetFromTileURLTemplates { // a tile set that provides an mbgl tile set - MGLTileSet *tileSet = [[MGLTileSet alloc] initWithTileURLTemplates:@[@"tile.1", - @"tile.2", - @"tile.3"]]; - mbgl::Tileset mbglTileset = [tileSet mbglTileset]; + NSArray *tileURLTemplates = @[@"tile.1", @"tile.2", @"tile.3"]; + mbgl::Tileset tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, nil); // has the correct URL templates - XCTAssertEqual(mbglTileset.tiles.size(), 3); - XCTAssertEqual(mbglTileset.tiles[0], "tile.1"); - XCTAssertEqual(mbglTileset.tiles[1], "tile.2"); - XCTAssertEqual(mbglTileset.tiles[2], "tile.3"); + XCTAssertEqual(tileSet.tiles.size(), 3); + XCTAssertEqual(tileSet.tiles[0], "tile.1"); + XCTAssertEqual(tileSet.tiles[1], "tile.2"); + XCTAssertEqual(tileSet.tiles[2], "tile.3"); // has the default scheme - XCTAssertEqual(mbglTileset.scheme, mbgl::Tileset::Scheme::XYZ); + XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::XYZ); // when the tile set has no min or max zoom level set - tileSet.minimumZoomLevel = nil; - tileSet.maximumZoomLevel = nil; - // the mbgl object has default values for min and max zoom level - XCTAssertEqual([tileSet mbglTileset].zoomRange.min, 0); - XCTAssertEqual([tileSet mbglTileset].zoomRange.max, 22); + XCTAssertEqual(tileSet.zoomRange.min, 0); + XCTAssertEqual(tileSet.zoomRange.max, 22); // when the tile set has min and/or max zoom level set - tileSet.minimumZoomLevel = @(1); - tileSet.maximumZoomLevel = @(2); + tileSet = MGLTileSetFromTileURLTemplates(@[@"tile.1"], @{ + MGLTileSourceOptionMinimumZoomLevel: @1, + MGLTileSourceOptionMaximumZoomLevel: @2, + }); // the mbgl object reflects the set values for min and max zoom level - XCTAssertEqual([tileSet mbglTileset].zoomRange.min, 1); - XCTAssertEqual([tileSet mbglTileset].zoomRange.max, 2); + XCTAssertEqual(tileSet.zoomRange.min, 1); + XCTAssertEqual(tileSet.zoomRange.max, 2); // when the tile set has an attribution - tileSet.attribution = @"my tileset © ©️🎈"; + NSString *attribution = @"my tileset © ©️🎈"; + tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{ + MGLTileSourceOptionAttributionHTMLString: attribution, + }); // the attribution is reflected by the mbgl tileset - XCTAssertEqual([tileSet mbglTileset].attribution, tileSet.attribution.UTF8String); + XCTAssertEqual(tileSet.attribution, attribution.UTF8String); + + // when the tile set has attribution infos + MGLAttributionInfo *mapboxInfo = [[MGLAttributionInfo alloc] initWithTitle:[[NSAttributedString alloc] initWithString:@"Mapbox"] + URL:[NSURL URLWithString:@"https://www.mapbox.com/"]]; + NSAttributedString *gl = [[NSAttributedString alloc] initWithString:@"GL" attributes:@{ + NSBackgroundColorAttributeName: [MGLColor redColor], + }]; + MGLAttributionInfo *glInfo = [[MGLAttributionInfo alloc] initWithTitle:gl URL:nil]; + tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{ + MGLTileSourceOptionAttributionInfos: @[mapboxInfo, glInfo], + }); - // when the scheme is changed - tileSet.scheme = MGLTileSetSchemeTMS; + // the attribution is reflected by the mbgl tileset +#if TARGET_OS_IPHONE + NSString *html = (@"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00pt\">" + @"<a href=\"https://www.mapbox.com/\">Mapbox</a> </font>" + @"<font style=\"font-family: 'Helvetica'; font-weight: normal; font-style: normal; font-size: 12.00pt; background-color: #ff0000\">GL</font>\n"); +#else + NSString *html = (@"<font face=\"Helvetica\" size=\"3\" style=\"font: 12.0px Helvetica\">" + @"<a href=\"https://www.mapbox.com/\">Mapbox</a> </font>" + @"<font face=\"Helvetica\" size=\"3\" style=\"font: 12.0px Helvetica; background-color: #ff2600\">GL</font>\n"); +#endif + XCTAssertEqualObjects(@(tileSet.attribution.c_str()), html); + + // when the tile coordinate system is changed using an NSNumber + tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{ + MGLTileSourceOptionTileCoordinateSystem: @(MGLTileCoordinateSystemTMS), + }); // the scheme is reflected by the mbgl tileset - XCTAssertEqual([tileSet mbglTileset].scheme , mbgl::Tileset::Scheme::TMS); + XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::TMS); - // a tile set that provides an mbgl tile set and minimum and maximum zoom levels - tileSet = [[MGLTileSet alloc] initWithTileURLTemplates:@[@"tile.1"] minimumZoomLevel:15 maximumZoomLevel:20]; + // when the tile coordinate system is changed using an NSValue + MGLTileCoordinateSystem tms = MGLTileCoordinateSystemTMS; + tileSet = MGLTileSetFromTileURLTemplates(tileURLTemplates, @{ + MGLTileSourceOptionTileCoordinateSystem: [NSValue value:&tms withObjCType:@encode(MGLTileCoordinateSystem)], + }); - // the zoom levels are reflected by the mbgl tileset - XCTAssertEqual([tileSet mbglTileset].zoomRange.min, 15); - XCTAssertEqual([tileSet mbglTileset].zoomRange.max, 20); + // the scheme is reflected by the mbgl tileset + XCTAssertEqual(tileSet.scheme, mbgl::Tileset::Scheme::TMS); } - (void)testInvalidTileSet { // a tile set that provides an mbgl tile set and invalid (crossed) minimum and maximum zoom levels throws an exception - XCTAssertThrowsSpecificNamed([[MGLTileSet alloc] initWithTileURLTemplates:@[@"tile.1"] minimumZoomLevel:10 maximumZoomLevel:9], NSException, @"Invalid minimumZoomLevel"); - - // a tile set that provides an mbgl tile set - MGLTileSet *tileSet = [[MGLTileSet alloc] initWithTileURLTemplates:@[@"tile.1"]]; - tileSet.maximumZoomLevel = @(10); - - // when the minimum zoom level is set higher than the maximum zoom level - XCTAssertThrowsSpecificNamed(tileSet.minimumZoomLevel = @(11), NSException, @"Invalid minimumZoomLevel"); - - // when the maximum zoom level is set lower than the minimum zoom level - tileSet.minimumZoomLevel = @(5); - XCTAssertThrowsSpecificNamed(tileSet.maximumZoomLevel = @(4), NSException, @"Invalid minimumZoomLevel"); + XCTAssertThrowsSpecificNamed(MGLTileSetFromTileURLTemplates(@[@"tile.1"], @{ + MGLTileSourceOptionMinimumZoomLevel: @10, + MGLTileSourceOptionMaximumZoomLevel: @9, + }), NSException, NSInvalidArgumentException); } @end |