// 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 #include @interface MGLBackgroundLayerTests : MGLStyleLayerTests @end @implementation MGLBackgroundLayerTests + (NSString *)layerType { return @"background"; } - (void)testProperties { MGLBackgroundStyleLayer *layer = [[MGLBackgroundStyleLayer alloc] initWithIdentifier:@"layerID"]; XCTAssertNotEqual(layer.rawLayer, nullptr); XCTAssertTrue(layer.rawLayer->is()); auto rawLayer = layer.rawLayer->as(); MGLTransition transitionTest = MGLTransitionMake(5, 4); // background-color { XCTAssertTrue(rawLayer->getBackgroundColor().isUndefined(), @"background-color should be unset initially."); MGLStyleValue *defaultStyleValue = layer.backgroundColor; MGLStyleValue *constantStyleValue = [MGLStyleValue valueWithRawValue:[MGLColor redColor]]; layer.backgroundColor = constantStyleValue; mbgl::style::PropertyValue propertyValue = { { 1, 0, 0, 1 } }; XCTAssertEqual(rawLayer->getBackgroundColor(), propertyValue, @"Setting backgroundColor to a constant value should update background-color."); XCTAssertEqualObjects(layer.backgroundColor, constantStyleValue, @"backgroundColor should round-trip constant values."); MGLStyleValue * functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil]; layer.backgroundColor = functionStyleValue; mbgl::style::IntervalStops intervalStops = { {{18, { 1, 0, 0, 1 }}} }; propertyValue = mbgl::style::CameraFunction { intervalStops }; XCTAssertEqual(rawLayer->getBackgroundColor(), propertyValue, @"Setting backgroundColor to a camera function should update background-color."); XCTAssertEqualObjects(layer.backgroundColor, functionStyleValue, @"backgroundColor should round-trip camera functions."); layer.backgroundColor = nil; XCTAssertTrue(rawLayer->getBackgroundColor().isUndefined(), @"Unsetting backgroundColor should return background-color to the default value."); XCTAssertEqualObjects(layer.backgroundColor, defaultStyleValue, @"backgroundColor should return the default value after being unset."); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundColor = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundColor = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); // Transition property test layer.backgroundColorTransition = transitionTest; auto toptions = rawLayer->getBackgroundColorTransition(); XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay); XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration); MGLTransition backgroundColorTransition = layer.backgroundColorTransition; XCTAssertEqual(backgroundColorTransition.delay, transitionTest.delay); XCTAssertEqual(backgroundColorTransition.duration, transitionTest.duration); } // background-opacity { XCTAssertTrue(rawLayer->getBackgroundOpacity().isUndefined(), @"background-opacity should be unset initially."); MGLStyleValue *defaultStyleValue = layer.backgroundOpacity; MGLStyleValue *constantStyleValue = [MGLStyleValue valueWithRawValue:@0xff]; layer.backgroundOpacity = constantStyleValue; mbgl::style::PropertyValue propertyValue = { 0xff }; XCTAssertEqual(rawLayer->getBackgroundOpacity(), propertyValue, @"Setting backgroundOpacity to a constant value should update background-opacity."); XCTAssertEqualObjects(layer.backgroundOpacity, constantStyleValue, @"backgroundOpacity should round-trip constant values."); MGLStyleValue * functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil]; layer.backgroundOpacity = functionStyleValue; mbgl::style::IntervalStops intervalStops = { {{18, 0xff}} }; propertyValue = mbgl::style::CameraFunction { intervalStops }; XCTAssertEqual(rawLayer->getBackgroundOpacity(), propertyValue, @"Setting backgroundOpacity to a camera function should update background-opacity."); XCTAssertEqualObjects(layer.backgroundOpacity, functionStyleValue, @"backgroundOpacity should round-trip camera functions."); layer.backgroundOpacity = nil; XCTAssertTrue(rawLayer->getBackgroundOpacity().isUndefined(), @"Unsetting backgroundOpacity should return background-opacity to the default value."); XCTAssertEqualObjects(layer.backgroundOpacity, defaultStyleValue, @"backgroundOpacity should return the default value after being unset."); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundOpacity = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundOpacity = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); // Transition property test layer.backgroundOpacityTransition = transitionTest; auto toptions = rawLayer->getBackgroundOpacityTransition(); XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay); XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration); MGLTransition backgroundOpacityTransition = layer.backgroundOpacityTransition; XCTAssertEqual(backgroundOpacityTransition.delay, transitionTest.delay); XCTAssertEqual(backgroundOpacityTransition.duration, transitionTest.duration); } // background-pattern { XCTAssertTrue(rawLayer->getBackgroundPattern().isUndefined(), @"background-pattern should be unset initially."); MGLStyleValue *defaultStyleValue = layer.backgroundPattern; MGLStyleValue *constantStyleValue = [MGLStyleValue valueWithRawValue:@"Background Pattern"]; layer.backgroundPattern = constantStyleValue; mbgl::style::PropertyValue propertyValue = { "Background Pattern" }; XCTAssertEqual(rawLayer->getBackgroundPattern(), propertyValue, @"Setting backgroundPattern to a constant value should update background-pattern."); XCTAssertEqualObjects(layer.backgroundPattern, constantStyleValue, @"backgroundPattern should round-trip constant values."); MGLStyleValue * functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval cameraStops:@{@18: constantStyleValue} options:nil]; layer.backgroundPattern = functionStyleValue; mbgl::style::IntervalStops intervalStops = { {{18, "Background Pattern"}} }; propertyValue = mbgl::style::CameraFunction { intervalStops }; XCTAssertEqual(rawLayer->getBackgroundPattern(), propertyValue, @"Setting backgroundPattern to a camera function should update background-pattern."); XCTAssertEqualObjects(layer.backgroundPattern, functionStyleValue, @"backgroundPattern should round-trip camera functions."); layer.backgroundPattern = nil; XCTAssertTrue(rawLayer->getBackgroundPattern().isUndefined(), @"Unsetting backgroundPattern should return background-pattern to the default value."); XCTAssertEqualObjects(layer.backgroundPattern, defaultStyleValue, @"backgroundPattern should return the default value after being unset."); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeIdentity sourceStops:nil attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundPattern = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); functionStyleValue = [MGLStyleValue valueWithInterpolationMode:MGLInterpolationModeInterval compositeStops:@{@18: constantStyleValue} attributeName:@"" options:nil]; XCTAssertThrowsSpecificNamed(layer.backgroundPattern = functionStyleValue, NSException, NSInvalidArgumentException, @"MGLStyleValue should raise an exception if it is applied to a property that cannot support it"); // Transition property test layer.backgroundPatternTransition = transitionTest; auto toptions = rawLayer->getBackgroundPatternTransition(); XCTAssert(toptions.delay && MGLTimeIntervalFromDuration(*toptions.delay) == transitionTest.delay); XCTAssert(toptions.duration && MGLTimeIntervalFromDuration(*toptions.duration) == transitionTest.duration); MGLTransition backgroundPatternTransition = layer.backgroundPatternTransition; XCTAssertEqual(backgroundPatternTransition.delay, transitionTest.delay); XCTAssertEqual(backgroundPatternTransition.duration, transitionTest.duration); } } - (void)testPropertyNames { [self testPropertyName:@"background-color" isBoolean:NO]; [self testPropertyName:@"background-opacity" isBoolean:NO]; [self testPropertyName:@"background-pattern" isBoolean:NO]; } @end