summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2017-04-13 00:57:34 -0700
committerLauren Budorick <lauren@mapbox.com>2017-04-24 17:10:31 -0700
commit03a64a6e09611e390cf1f1f0f66ca16abbd4803b (patch)
tree0be345dcd19257b546214470197290d63683e2a7
parentf1e191ba4be76d6c8e8cf6f7c34235bdbc4c377f (diff)
downloadqtlocation-mapboxgl-03a64a6e09611e390cf1f1f0f66ca16abbd4803b.tar.gz
[ios, macos] Added MGLFillExtrusionStyleLayer to projects
Deleted a copy of MGLFillExtrusionStyleLayerTests.mm that was orphaned in platform/ios/test/. Added the real, auto-generated copy to the iOS project. Added all the files associated with fill extrusion style layers to the macOS project.
-rw-r--r--platform/ios/ios.xcodeproj/project.pbxproj2
-rw-r--r--platform/ios/test/MGLFillExtrusionStyleLayerTests.mm445
-rw-r--r--platform/macos/macos.xcodeproj/project.pbxproj12
3 files changed, 13 insertions, 446 deletions
diff --git a/platform/ios/ios.xcodeproj/project.pbxproj b/platform/ios/ios.xcodeproj/project.pbxproj
index f5131c260f..a071022844 100644
--- a/platform/ios/ios.xcodeproj/project.pbxproj
+++ b/platform/ios/ios.xcodeproj/project.pbxproj
@@ -921,7 +921,7 @@
DD58A4C51D822BD000E1F038 /* MGLExpressionTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLExpressionTests.mm; path = ../../darwin/test/MGLExpressionTests.mm; sourceTree = "<group>"; };
FA68F1481E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer.h; sourceTree = "<group>"; };
FA68F1491E9D656600F9F6C2 /* MGLFillExtrusionStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayer.mm; sourceTree = "<group>"; };
- FAE1CDC81E9D79C600C40B5B /* MGLFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayerTests.mm; sourceTree = "<group>"; };
+ FAE1CDC81E9D79C600C40B5B /* MGLFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MGLFillExtrusionStyleLayerTests.mm; path = ../../darwin/test/MGLFillExtrusionStyleLayerTests.mm; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
diff --git a/platform/ios/test/MGLFillExtrusionStyleLayerTests.mm b/platform/ios/test/MGLFillExtrusionStyleLayerTests.mm
deleted file mode 100644
index 5ba24469e5..0000000000
--- a/platform/ios/test/MGLFillExtrusionStyleLayerTests.mm
+++ /dev/null
@@ -1,445 +0,0 @@
-// This file is generated.
-// Edit platform/darwin/scripts/generate-style-code.js, then run `make darwin-style-code`.
-
-#import "MGLStyleLayerTests.h"
-#import "../../darwin/src/NSDate+MGLAdditions.h"
-
-#import "MGLStyleLayer_Private.h"
-
-#include <mbgl/style/layers/fill-extrusion_layer.hpp>
-#include <mbgl/style/transition_options.hpp>
-
-@interface MGLFillExtrusionLayerTests : MGLStyleLayerTests
-@end
-
-@implementation MGLFillExtrusionLayerTests
-
-+ (NSString *)layerType {
- return @"fill-extrusion";
-}
-
-- (void)testPredicates {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
- MGLFillExtrusionStyleLayer *layer = [[MGLFillExtrusionStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
-
- XCTAssertNil(layer.sourceLayerIdentifier);
- layer.sourceLayerIdentifier = @"layerID";
- XCTAssertEqualObjects(layer.sourceLayerIdentifier, @"layerID");
- layer.sourceLayerIdentifier = nil;
- XCTAssertNil(layer.sourceLayerIdentifier);
-
- XCTAssertNil(layer.predicate);
- layer.predicate = [NSPredicate predicateWithValue:NO];
- XCTAssertEqualObjects(layer.predicate, [NSPredicate predicateWithValue:NO]);
- layer.predicate = nil;
- XCTAssertNil(layer.predicate);
-}
-
-- (void)testProperties {
- MGLPointFeature *feature = [[MGLPointFeature alloc] init];
- MGLShapeSource *source = [[MGLShapeSource alloc] initWithIdentifier:@"sourceID" shape:feature options:nil];
-
- MGLFillExtrusionStyleLayer *layer = [[MGLFillExtrusionStyleLayer alloc] initWithIdentifier:@"layerID" source:source];
- XCTAssertNotEqual(layer.rawLayer, nullptr);
- XCTAssertTrue(layer.rawLayer->is<mbgl::style::FillExtrusionLayer>());
- auto rawLayer = layer.rawLayer->as<mbgl::style::FillExtrusionLayer>();
-
- MGLTransition transitionTest = MGLTransitionMake(5, 4);
-
-
- // fill-extrusion-base
- {
- XCTAssertTrue(rawLayer->getFillExtrusionBase().isUndefined(),
- @"fill-extrusion-base should be unset initially.");
- MGLStyleValue<NSNumber *> *defaultStyleValue = layer.fillExtrusionBase;
-
- MGLStyleValue<NSNumber *> *constantStyleValue = [MGLStyleValue<NSNumber *> valueWithRawValue:@0xff];
- layer.fillExtrusionBase = constantStyleValue;
- mbgl::style::DataDrivenPropertyValue<float> propertyValue = { 0xff };
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a constant value should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, constantStyleValue,
- @"fillExtrusionBase should round-trip constant values.");
-
- MGLStyleValue<NSNumber *> * functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionBase = functionStyleValue;
-
- mbgl::style::IntervalStops<float> intervalStops = { {{18, 0xff}} };
- propertyValue = mbgl::style::CameraFunction<float> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a camera function should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, functionStyleValue,
- @"fillExtrusionBase should round-trip camera functions.");
-
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential sourceStops:@{@18: constantStyleValue} attributeName:@"keyName" options:nil];
- layer.fillExtrusionBase = functionStyleValue;
-
- mbgl::style::ExponentialStops<float> exponentialStops = { {{18, 0xff}}, 1.0 };
- propertyValue = mbgl::style::SourceFunction<float> { "keyName", exponentialStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a source function should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, functionStyleValue,
- @"fillExtrusionBase should round-trip source functions.");
-
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential compositeStops:@{@10: @{@18: constantStyleValue}} attributeName:@"keyName" options:nil];
- layer.fillExtrusionBase = functionStyleValue;
-
- std::map<float, float> innerStops { {18, 0xff} };
- mbgl::style::CompositeExponentialStops<float> compositeStops { { {10.0, innerStops} }, 1.0 };
-
- propertyValue = mbgl::style::CompositeFunction<float> { "keyName", compositeStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionBase(), propertyValue,
- @"Setting fillExtrusionBase to a composite function should update fill-extrusion-base.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, functionStyleValue,
- @"fillExtrusionBase should round-trip composite functions.");
-
-
- layer.fillExtrusionBase = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionBase().isUndefined(),
- @"Unsetting fillExtrusionBase should return fill-extrusion-base to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionBase, defaultStyleValue,
- @"fillExtrusionBase should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionBaseTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionBaseTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionBaseTransition = layer.fillExtrusionBaseTransition;
- XCTAssertEqual(fillExtrusionBaseTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionBaseTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-color
- {
- XCTAssertTrue(rawLayer->getFillExtrusionColor().isUndefined(),
- @"fill-extrusion-color should be unset initially.");
- MGLStyleValue<MGLColor *> *defaultStyleValue = layer.fillExtrusionColor;
-
- MGLStyleValue<MGLColor *> *constantStyleValue = [MGLStyleValue<MGLColor *> valueWithRawValue:[MGLColor redColor]];
- layer.fillExtrusionColor = constantStyleValue;
- mbgl::style::DataDrivenPropertyValue<mbgl::Color> propertyValue = { { 1, 0, 0, 1 } };
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a constant value should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, constantStyleValue,
- @"fillExtrusionColor should round-trip constant values.");
-
- MGLStyleValue<MGLColor *> * functionStyleValue = [MGLStyleValue<MGLColor *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionColor = functionStyleValue;
-
- mbgl::style::IntervalStops<mbgl::Color> intervalStops = { {{18, { 1, 0, 0, 1 }}} };
- propertyValue = mbgl::style::CameraFunction<mbgl::Color> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a camera function should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, functionStyleValue,
- @"fillExtrusionColor should round-trip camera functions.");
-
- functionStyleValue = [MGLStyleValue<MGLColor *> valueWithInterpolationMode:MGLInterpolationModeExponential sourceStops:@{@18: constantStyleValue} attributeName:@"keyName" options:nil];
- layer.fillExtrusionColor = functionStyleValue;
-
- mbgl::style::ExponentialStops<mbgl::Color> exponentialStops = { {{18, { 1, 0, 0, 1 }}}, 1.0 };
- propertyValue = mbgl::style::SourceFunction<mbgl::Color> { "keyName", exponentialStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a source function should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, functionStyleValue,
- @"fillExtrusionColor should round-trip source functions.");
-
- functionStyleValue = [MGLStyleValue<MGLColor *> valueWithInterpolationMode:MGLInterpolationModeExponential compositeStops:@{@10: @{@18: constantStyleValue}} attributeName:@"keyName" options:nil];
- layer.fillExtrusionColor = functionStyleValue;
-
- std::map<float, mbgl::Color> innerStops { {18, { 1, 0, 0, 1 }} };
- mbgl::style::CompositeExponentialStops<mbgl::Color> compositeStops { { {10.0, innerStops} }, 1.0 };
-
- propertyValue = mbgl::style::CompositeFunction<mbgl::Color> { "keyName", compositeStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionColor(), propertyValue,
- @"Setting fillExtrusionColor to a composite function should update fill-extrusion-color.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, functionStyleValue,
- @"fillExtrusionColor should round-trip composite functions.");
-
-
- layer.fillExtrusionColor = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionColor().isUndefined(),
- @"Unsetting fillExtrusionColor should return fill-extrusion-color to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionColor, defaultStyleValue,
- @"fillExtrusionColor should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionColorTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionColorTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionColorTransition = layer.fillExtrusionColorTransition;
- XCTAssertEqual(fillExtrusionColorTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionColorTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-height
- {
- XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(),
- @"fill-extrusion-height should be unset initially.");
- MGLStyleValue<NSNumber *> *defaultStyleValue = layer.fillExtrusionHeight;
-
- MGLStyleValue<NSNumber *> *constantStyleValue = [MGLStyleValue<NSNumber *> valueWithRawValue:@0xff];
- layer.fillExtrusionHeight = constantStyleValue;
- mbgl::style::DataDrivenPropertyValue<float> propertyValue = { 0xff };
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a constant value should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, constantStyleValue,
- @"fillExtrusionHeight should round-trip constant values.");
-
- MGLStyleValue<NSNumber *> * functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionHeight = functionStyleValue;
-
- mbgl::style::IntervalStops<float> intervalStops = { {{18, 0xff}} };
- propertyValue = mbgl::style::CameraFunction<float> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a camera function should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, functionStyleValue,
- @"fillExtrusionHeight should round-trip camera functions.");
-
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential sourceStops:@{@18: constantStyleValue} attributeName:@"keyName" options:nil];
- layer.fillExtrusionHeight = functionStyleValue;
-
- mbgl::style::ExponentialStops<float> exponentialStops = { {{18, 0xff}}, 1.0 };
- propertyValue = mbgl::style::SourceFunction<float> { "keyName", exponentialStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a source function should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, functionStyleValue,
- @"fillExtrusionHeight should round-trip source functions.");
-
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeExponential compositeStops:@{@10: @{@18: constantStyleValue}} attributeName:@"keyName" options:nil];
- layer.fillExtrusionHeight = functionStyleValue;
-
- std::map<float, float> innerStops { {18, 0xff} };
- mbgl::style::CompositeExponentialStops<float> compositeStops { { {10.0, innerStops} }, 1.0 };
-
- propertyValue = mbgl::style::CompositeFunction<float> { "keyName", compositeStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionHeight(), propertyValue,
- @"Setting fillExtrusionHeight to a composite function should update fill-extrusion-height.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, functionStyleValue,
- @"fillExtrusionHeight should round-trip composite functions.");
-
-
- layer.fillExtrusionHeight = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(),
- @"Unsetting fillExtrusionHeight should return fill-extrusion-height to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionHeight, defaultStyleValue,
- @"fillExtrusionHeight should return the default value after being unset.");
- // Transition property test
- layer.fillExtrusionHeightTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionHeightTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionHeightTransition = layer.fillExtrusionHeightTransition;
- XCTAssertEqual(fillExtrusionHeightTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionHeightTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-opacity
- {
- XCTAssertTrue(rawLayer->getFillExtrusionOpacity().isUndefined(),
- @"fill-extrusion-opacity should be unset initially.");
- MGLStyleValue<NSNumber *> *defaultStyleValue = layer.fillExtrusionOpacity;
-
- MGLStyleValue<NSNumber *> *constantStyleValue = [MGLStyleValue<NSNumber *> valueWithRawValue:@0xff];
- layer.fillExtrusionOpacity = constantStyleValue;
- mbgl::style::PropertyValue<float> propertyValue = { 0xff };
- XCTAssertEqual(rawLayer->getFillExtrusionOpacity(), propertyValue,
- @"Setting fillExtrusionOpacity to a constant value should update fill-extrusion-opacity.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, constantStyleValue,
- @"fillExtrusionOpacity should round-trip constant values.");
-
- MGLStyleValue<NSNumber *> * functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionOpacity = functionStyleValue;
-
- mbgl::style::IntervalStops<float> intervalStops = { {{18, 0xff}} };
- propertyValue = mbgl::style::CameraFunction<float> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionOpacity(), propertyValue,
- @"Setting fillExtrusionOpacity to a camera function should update fill-extrusion-opacity.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, functionStyleValue,
- @"fillExtrusionOpacity should round-trip camera functions.");
-
-
-
- layer.fillExtrusionOpacity = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionOpacity().isUndefined(),
- @"Unsetting fillExtrusionOpacity should return fill-extrusion-opacity to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionOpacity, defaultStyleValue,
- @"fillExtrusionOpacity should return the default value after being unset.");
-
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionOpacity = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- functionStyleValue = [MGLStyleValue<NSNumber *> valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionOpacity = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- // Transition property test
- layer.fillExtrusionOpacityTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionOpacityTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionOpacityTransition = layer.fillExtrusionOpacityTransition;
- XCTAssertEqual(fillExtrusionOpacityTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionOpacityTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-pattern
- {
- XCTAssertTrue(rawLayer->getFillExtrusionPattern().isUndefined(),
- @"fill-extrusion-pattern should be unset initially.");
- MGLStyleValue<NSString *> *defaultStyleValue = layer.fillExtrusionPattern;
-
- MGLStyleValue<NSString *> *constantStyleValue = [MGLStyleValue<NSString *> valueWithRawValue:@"Fill Extrusion Pattern"];
- layer.fillExtrusionPattern = constantStyleValue;
- mbgl::style::PropertyValue<std::string> propertyValue = { "Fill Extrusion Pattern" };
- XCTAssertEqual(rawLayer->getFillExtrusionPattern(), propertyValue,
- @"Setting fillExtrusionPattern to a constant value should update fill-extrusion-pattern.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, constantStyleValue,
- @"fillExtrusionPattern should round-trip constant values.");
-
- MGLStyleValue<NSString *> * functionStyleValue = [MGLStyleValue<NSString *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionPattern = functionStyleValue;
-
- mbgl::style::IntervalStops<std::string> intervalStops = { {{18, "Fill Extrusion Pattern"}} };
- propertyValue = mbgl::style::CameraFunction<std::string> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionPattern(), propertyValue,
- @"Setting fillExtrusionPattern to a camera function should update fill-extrusion-pattern.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, functionStyleValue,
- @"fillExtrusionPattern should round-trip camera functions.");
-
-
-
- layer.fillExtrusionPattern = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionPattern().isUndefined(),
- @"Unsetting fillExtrusionPattern should return fill-extrusion-pattern to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionPattern, defaultStyleValue,
- @"fillExtrusionPattern should return the default value after being unset.");
-
- functionStyleValue = [MGLStyleValue<NSString *> valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionPattern = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- functionStyleValue = [MGLStyleValue<NSString *> valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionPattern = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- // Transition property test
- layer.fillExtrusionPatternTransition = transitionTest;
- auto toptions = rawLayer->getFillExtrusionPatternTransition();
- XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay);
- XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration);
-
- MGLTransition fillExtrusionPatternTransition = layer.fillExtrusionPatternTransition;
- XCTAssertEqual(fillExtrusionPatternTransition.delay, transitionTest.delay);
- XCTAssertEqual(fillExtrusionPatternTransition.duration, transitionTest.duration);
- }
-
- // fill-extrusion-translate
- {
- XCTAssertTrue(rawLayer->getFillExtrusionTranslate().isUndefined(),
- @"fill-extrusion-translate should be unset initially.");
- MGLStyleValue<NSValue *> *defaultStyleValue = layer.fillExtrusionTranslation;
-
- MGLStyleValue<NSValue *> *constantStyleValue = [MGLStyleValue<NSValue *> valueWithRawValue:
-#if TARGET_OS_IPHONE
- [NSValue valueWithCGVector:CGVectorMake(1, 1)]
-#else
- [NSValue valueWithMGLVector:CGVectorMake(1, -1)]
-#endif
- ];
- layer.fillExtrusionTranslation = constantStyleValue;
- mbgl::style::PropertyValue<std::array<float, 2>> propertyValue = { { 1, 1 } };
- XCTAssertEqual(rawLayer->getFillExtrusionTranslate(), propertyValue,
- @"Setting fillExtrusionTranslation to a constant value should update fill-extrusion-translate.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, constantStyleValue,
- @"fillExtrusionTranslation should round-trip constant values.");
-
- MGLStyleValue<NSValue *> * functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionTranslation = functionStyleValue;
-
- mbgl::style::IntervalStops<std::array<float, 2>> intervalStops = { {{18, { 1, 1 }}} };
- propertyValue = mbgl::style::CameraFunction<std::array<float, 2>> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionTranslate(), propertyValue,
- @"Setting fillExtrusionTranslation to a camera function should update fill-extrusion-translate.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, functionStyleValue,
- @"fillExtrusionTranslation should round-trip camera functions.");
-
-
-
- layer.fillExtrusionTranslation = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionTranslate().isUndefined(),
- @"Unsetting fillExtrusionTranslation should return fill-extrusion-translate to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslation, defaultStyleValue,
- @"fillExtrusionTranslation should return the default value after being unset.");
-
- functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslation = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslation = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- }
-
- // fill-extrusion-translate-anchor
- {
- XCTAssertTrue(rawLayer->getFillExtrusionTranslateAnchor().isUndefined(),
- @"fill-extrusion-translate-anchor should be unset initially.");
- MGLStyleValue<NSValue *> *defaultStyleValue = layer.fillExtrusionTranslationAnchor;
-
- MGLStyleValue<NSValue *> *constantStyleValue = [MGLStyleValue<NSValue *> valueWithRawValue:[NSValue valueWithMGLFillExtrusionTranslationAnchor:MGLFillExtrusionTranslationAnchorViewport]];
- layer.fillExtrusionTranslationAnchor = constantStyleValue;
- mbgl::style::PropertyValue<mbgl::style::TranslateAnchorType> propertyValue = { mbgl::style::TranslateAnchorType::Viewport };
- XCTAssertEqual(rawLayer->getFillExtrusionTranslateAnchor(), propertyValue,
- @"Setting fillExtrusionTranslationAnchor to a constant value should update fill-extrusion-translate-anchor.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, constantStyleValue,
- @"fillExtrusionTranslationAnchor should round-trip constant values.");
-
- MGLStyleValue<NSValue *> * functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil];
- layer.fillExtrusionTranslationAnchor = functionStyleValue;
-
- mbgl::style::IntervalStops<mbgl::style::TranslateAnchorType> intervalStops = { {{18, mbgl::style::TranslateAnchorType::Viewport}} };
- propertyValue = mbgl::style::CameraFunction<mbgl::style::TranslateAnchorType> { intervalStops };
-
- XCTAssertEqual(rawLayer->getFillExtrusionTranslateAnchor(), propertyValue,
- @"Setting fillExtrusionTranslationAnchor to a camera function should update fill-extrusion-translate-anchor.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, functionStyleValue,
- @"fillExtrusionTranslationAnchor should round-trip camera functions.");
-
-
-
- layer.fillExtrusionTranslationAnchor = nil;
- XCTAssertTrue(rawLayer->getFillExtrusionTranslateAnchor().isUndefined(),
- @"Unsetting fillExtrusionTranslationAnchor should return fill-extrusion-translate-anchor to the default value.");
- XCTAssertEqualObjects(layer.fillExtrusionTranslationAnchor, defaultStyleValue,
- @"fillExtrusionTranslationAnchor should return the default value after being unset.");
-
- functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslationAnchor = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- functionStyleValue = [MGLStyleValue<NSValue *> valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil];
- XCTAssertThrowsSpecificNamed(layer.fillExtrusionTranslationAnchor = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it");
- }
-}
-
-- (void)testPropertyNames {
- [self testPropertyName:@"fill-extrusion-base" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-color" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-height" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-opacity" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-pattern" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-translation" isBoolean:NO];
- [self testPropertyName:@"fill-extrusion-translation-anchor" isBoolean:NO];
-}
-
-- (void)testValueAdditions {
- XCTAssertEqual([NSValue valueWithMGLFillExtrusionTranslationAnchor:MGLFillExtrusionTranslationAnchorMap].MGLFillExtrusionTranslationAnchorValue, MGLFillExtrusionTranslationAnchorMap);
- XCTAssertEqual([NSValue valueWithMGLFillExtrusionTranslationAnchor:MGLFillExtrusionTranslationAnchorViewport].MGLFillExtrusionTranslationAnchorValue, MGLFillExtrusionTranslationAnchorViewport);
-}
-
-@end
diff --git a/platform/macos/macos.xcodeproj/project.pbxproj b/platform/macos/macos.xcodeproj/project.pbxproj
index 175629d126..97adf445e1 100644
--- a/platform/macos/macos.xcodeproj/project.pbxproj
+++ b/platform/macos/macos.xcodeproj/project.pbxproj
@@ -139,6 +139,9 @@
DA8F25B21D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8F25A61D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.h */; };
DA8F25B31D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm in Sources */ = {isa = PBXBuildFile; fileRef = DA8F25A71D51CB270010E6B5 /* NSValue+MGLStyleAttributeAdditions.mm */; };
DAA48EFD1D6A4731006A7E36 /* StyleLayerIconTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */; };
+ DAA998FB1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ DAA998FC1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */; };
+ DAA999011E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */; };
DAB2CCE51DF632ED001B2FE1 /* LimeGreenStyleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = DAB2CCE41DF632ED001B2FE1 /* LimeGreenStyleLayer.m */; };
DAC2ABC51CC6D343006D18C4 /* MGLAnnotationImage_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */; };
DACB0C391E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DACB0C381E18DFFD005DDBEA /* MGLStyle+MBXAdditions.m */; };
@@ -453,6 +456,9 @@
DAA32CC11E4C4F93006F8D24 /* vi */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = vi; path = vi.lproj/Localizable.strings; sourceTree = "<group>"; };
DAA48EFB1D6A4731006A7E36 /* StyleLayerIconTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleLayerIconTransformer.h; sourceTree = "<group>"; };
DAA48EFC1D6A4731006A7E36 /* StyleLayerIconTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StyleLayerIconTransformer.m; sourceTree = "<group>"; };
+ DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLFillExtrusionStyleLayer.h; sourceTree = "<group>"; };
+ DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayer.mm; sourceTree = "<group>"; };
+ DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MGLFillExtrusionStyleLayerTests.mm; sourceTree = "<group>"; };
DAB2CCE31DF632ED001B2FE1 /* LimeGreenStyleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LimeGreenStyleLayer.h; sourceTree = "<group>"; };
DAB2CCE41DF632ED001B2FE1 /* LimeGreenStyleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LimeGreenStyleLayer.m; sourceTree = "<group>"; };
DAC2ABC41CC6D343006D18C4 /* MGLAnnotationImage_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MGLAnnotationImage_Private.h; sourceTree = "<group>"; };
@@ -599,6 +605,8 @@
DA8F25861D51C9E10010E6B5 /* MGLBackgroundStyleLayer.mm */,
3527428B1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h */,
3527428C1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.mm */,
+ DAA998F91E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h */,
+ DAA998FA1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm */,
35602BF81D3EA99F0050646F /* MGLFillStyleLayer.h */,
35602BF91D3EA99F0050646F /* MGLFillStyleLayer.mm */,
35602BFD1D3EA9B40050646F /* MGLForegroundStyleLayer.h */,
@@ -785,6 +793,7 @@
40E1601A1DF216E6005EA6D9 /* MGLStyleLayerTests.h */,
40E1601B1DF216E6005EA6D9 /* MGLStyleLayerTests.m */,
DA2207BA1DC076930002F84D /* test-Bridging-Header.h */,
+ DAA999001E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm */,
DA8F25741D51C5F40010E6B5 /* MGLFillStyleLayerTests.mm */,
DA8F25751D51C5F40010E6B5 /* MGLRasterStyleLayerTests.mm */,
DA8F25761D51C5F40010E6B5 /* MGLSymbolStyleLayerTests.mm */,
@@ -1078,6 +1087,7 @@
3527428D1D4C24AB00A1ECE6 /* MGLCircleStyleLayer.h in Headers */,
DA00FC8A1D5EEAC3009AABC8 /* MGLAttributionInfo.h in Headers */,
DAE6C3B21CC31EF300DB3429 /* MGLAttributionButton.h in Headers */,
+ DAA998FB1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.h in Headers */,
40B77E451DB11BC9003DA2FE /* NSArray+MGLAdditions.h in Headers */,
35C5D8471D6DD66D00E95907 /* NSComparisonPredicate+MGLAdditions.h in Headers */,
DAE6C3A31CC31E9400DB3429 /* MGLAnnotationImage.h in Headers */,
@@ -1405,6 +1415,7 @@
DAE6C3911CC31E2A00DB3429 /* MGLPolygon.mm in Sources */,
35C6DF851E214C0400ACA483 /* MGLDistanceFormatter.m in Sources */,
DAE6C39B1CC31E2A00DB3429 /* NSProcessInfo+MGLAdditions.m in Sources */,
+ DAA998FC1E9F545C002E6EA6 /* MGLFillExtrusionStyleLayer.mm in Sources */,
DAE6C38F1CC31E2A00DB3429 /* MGLOfflineStorage.mm in Sources */,
DAED38601D62CED700D7640F /* NSURL+MGLAdditions.m in Sources */,
35C5D84A1D6DD66D00E95907 /* NSCompoundPredicate+MGLAdditions.mm in Sources */,
@@ -1449,6 +1460,7 @@
4031ACFC1E9EB3C100A3EA26 /* MGLMapViewDelegateIntegrationTests.swift in Sources */,
4031AD031E9FD6AA00A3EA26 /* MGLSDKTestHelpers.swift in Sources */,
DA87A9A71DCACC5000810D09 /* MGLBackgroundStyleLayerTests.mm in Sources */,
+ DAA999011E9F5EC5002E6EA6 /* MGLFillExtrusionStyleLayerTests.mm in Sources */,
DA29875A1E1A4290002299F5 /* MGLDocumentationExampleTests.swift in Sources */,
DAE6C3D31CC34C9900DB3429 /* MGLOfflinePackTests.m in Sources */,
DA87A9A51DCACC5000810D09 /* MGLLineStyleLayerTests.mm in Sources */,