diff options
Diffstat (limited to 'platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm')
-rw-r--r-- | platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm b/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm index ecfa2134a0..357ee888bc 100644 --- a/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm +++ b/platform/darwin/test/MGLFillExtrusionStyleLayerTests.mm @@ -205,6 +205,50 @@ XCTAssertEqual(fillExtrusionColorTransition.duration, transitionTest.duration); } + // fill-extrusion-vertical-gradient + { + XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(), + @"fill-extrusion-vertical-gradient should be unset initially."); + NSExpression *defaultExpression = layer.fillExtrusionHasVerticalGradient; + + NSExpression *constantExpression = [NSExpression expressionWithFormat:@"false"]; + layer.fillExtrusionHasVerticalGradient = constantExpression; + mbgl::style::PropertyValue<bool> propertyValue = { false }; + XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue, + @"Setting fillExtrusionHasVerticalGradient to a constant value expression should update fill-extrusion-vertical-gradient."); + XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, constantExpression, + @"fillExtrusionHasVerticalGradient should round-trip constant value expressions."); + + constantExpression = [NSExpression expressionWithFormat:@"false"]; + NSExpression *functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:($zoomLevel, %@, %@)", constantExpression, @{@18: constantExpression}]; + layer.fillExtrusionHasVerticalGradient = functionExpression; + + { + using namespace mbgl::style::expression::dsl; + propertyValue = mbgl::style::PropertyExpression<bool>( + step(zoom(), literal(false), 18.0, literal(false)) + ); + } + + XCTAssertEqual(rawLayer->getFillExtrusionVerticalGradient(), propertyValue, + @"Setting fillExtrusionHasVerticalGradient to a camera expression should update fill-extrusion-vertical-gradient."); + XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, functionExpression, + @"fillExtrusionHasVerticalGradient should round-trip camera expressions."); + + + layer.fillExtrusionHasVerticalGradient = nil; + XCTAssertTrue(rawLayer->getFillExtrusionVerticalGradient().isUndefined(), + @"Unsetting fillExtrusionHasVerticalGradient should return fill-extrusion-vertical-gradient to the default value."); + XCTAssertEqualObjects(layer.fillExtrusionHasVerticalGradient, defaultExpression, + @"fillExtrusionHasVerticalGradient should return the default value after being unset."); + + functionExpression = [NSExpression expressionForKeyPath:@"bogus"]; + XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes."); + functionExpression = [NSExpression expressionWithFormat:@"mgl_step:from:stops:(bogus, %@, %@)", constantExpression, @{@18: constantExpression}]; + functionExpression = [NSExpression expressionWithFormat:@"mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", @{@10: functionExpression}]; + XCTAssertThrowsSpecificNamed(layer.fillExtrusionHasVerticalGradient = functionExpression, NSException, NSInvalidArgumentException, @"MGLFillExtrusionLayer should raise an exception if a camera-data expression is applied to a property that does not support key paths to feature attributes."); + } + // fill-extrusion-height { XCTAssertTrue(rawLayer->getFillExtrusionHeight().isUndefined(), @@ -481,6 +525,7 @@ - (void)testPropertyNames { [self testPropertyName:@"fill-extrusion-base" isBoolean:NO]; [self testPropertyName:@"fill-extrusion-color" isBoolean:NO]; + [self testPropertyName:@"fill-extrusion-has-vertical-gradient" isBoolean:YES]; [self testPropertyName:@"fill-extrusion-height" isBoolean:NO]; [self testPropertyName:@"fill-extrusion-opacity" isBoolean:NO]; [self testPropertyName:@"fill-extrusion-pattern" isBoolean:NO]; |