diff options
Diffstat (limited to 'platform/darwin/test/MGLStyleValueTests.swift')
-rw-r--r-- | platform/darwin/test/MGLStyleValueTests.swift | 97 |
1 files changed, 81 insertions, 16 deletions
diff --git a/platform/darwin/test/MGLStyleValueTests.swift b/platform/darwin/test/MGLStyleValueTests.swift index 784b2fbaf1..c559037588 100644 --- a/platform/darwin/test/MGLStyleValueTests.swift +++ b/platform/darwin/test/MGLStyleValueTests.swift @@ -6,16 +6,34 @@ typealias MGLColor = UIColor #elseif os(macOS) typealias MGLColor = NSColor #endif + +#if swift(>=3.2) +#else +func XCTAssertEqual<T: FloatingPoint>(_ lhs: @autoclosure () throws -> T, _ rhs: @autoclosure () throws -> T, accuracy: T) { + XCTAssertEqualWithAccuracy(lhs, rhs, accuracy: accuracy) +} +#endif extension MGLStyleValueTests { + + struct Color { + var red: CGFloat = 0 + var green: CGFloat = 0 + var blue: CGFloat = 0 + var alpha: CGFloat = 0 + } + func assertColorsEqualWithAccuracy(_ actual: MGLColor, _ expected: MGLColor, accuracy: Float = 1/255) { - var actualComponents : [CGFloat] = [0, 0, 0, 0] - var expectedComponents : [CGFloat] = [0, 0, 0, 0] - actual.getRed(&(actualComponents[0]), green: &(actualComponents[1]), blue: &(actualComponents[2]), alpha: &(actualComponents[3])) - expected.getRed(&(expectedComponents[0]), green: &(expectedComponents[1]), blue: &(expectedComponents[2]), alpha: &(expectedComponents[3])) - for (ac, ec) in zip(actualComponents, expectedComponents) { - XCTAssertEqualWithAccuracy(Float(ac), Float(ec), accuracy: accuracy) - } + var actualColor = Color() + var expectedColor = Color() + + actual.getRed(&actualColor.red, green: &actualColor.green, blue: &actualColor.blue, alpha: &actualColor.alpha) + expected.getRed(&expectedColor.red, green: &expectedColor.green, blue: &expectedColor.blue, alpha: &expectedColor.alpha) + + XCTAssertEqual(Float(actualColor.red), Float(expectedColor.red), accuracy: accuracy) + XCTAssertEqual(Float(actualColor.green), Float(expectedColor.green), accuracy: accuracy) + XCTAssertEqual(Float(actualColor.blue), Float(expectedColor.blue), accuracy: accuracy) + XCTAssertEqual(Float(actualColor.alpha), Float(expectedColor.alpha), accuracy: accuracy) } func assertColorValuesEqual(_ actual: MGLStyleValue<MGLColor>, _ expected: MGLStyleValue<MGLColor>) { @@ -249,22 +267,50 @@ extension MGLStyleValueTests { options: [.defaultValue: defaultRadius] ) circleStyleLayer.circleRadius = expectedCompositeCategoricalValue - XCTAssertEqual(circleStyleLayer.circleRadius, expectedCompositeCategoricalValue) + + var compositeValue = circleStyleLayer.circleRadius as! MGLCompositeStyleFunction + var expectedCompositeValue = expectedCompositeCategoricalValue as! MGLCompositeStyleFunction + XCTAssertEqual(compositeValue.attributeName, expectedCompositeValue.attributeName) + XCTAssertEqual(compositeValue.stops as NSDictionary, radiusCompositeCategoricalStops as NSDictionary) + XCTAssertEqual(compositeValue.interpolationMode, expectedCompositeValue.interpolationMode) + XCTAssertEqual(compositeValue.defaultValue, expectedCompositeValue.defaultValue) // data-driven, composite function with inner exponential color stop values nested in outer camera stops let radiusCompositeExponentialOrIntervalStops: [Float: [Float: MGLStyleValue<NSNumber>]] = [ - 0: [0: smallRadius], - 10: [200: smallRadius], - 20: [200: largeRadius] + 0: [0: MGLStyleValue<NSNumber>(rawValue: 5)], + 10: [200: MGLStyleValue<NSNumber>(rawValue: 5)], + 20: [200: MGLStyleValue<NSNumber>(rawValue: 20)] + ] + + let expectedStops = [ + 0: [0: MGLStyleValue<NSNumber>(rawValue: 5)], + 10: [200: MGLStyleValue<NSNumber>(rawValue: 5)], + 20: [200: MGLStyleValue<NSNumber>(rawValue: 20)] ] + circleStyleLayer.circleRadius = MGLStyleValue<NSNumber>( + interpolationMode: .exponential, + compositeStops: [ + 0: [0: MGLStyleValue<NSNumber>(rawValue: 5)], + 10: [200: MGLStyleValue<NSNumber>(rawValue: 5)], + 20: [200: MGLStyleValue<NSNumber>(rawValue: 20)] + ], + attributeName: "temp", + options: [.defaultValue: mediumRadius] + ) + let expectedCompositeExponentialValue = MGLStyleValue<NSNumber>( interpolationMode: .exponential, compositeStops: radiusCompositeExponentialOrIntervalStops, attributeName: "temp", options: [.defaultValue: mediumRadius] ) - circleStyleLayer.circleRadius = expectedCompositeExponentialValue - XCTAssertEqual(circleStyleLayer.circleRadius, expectedCompositeExponentialValue) + + compositeValue = circleStyleLayer.circleRadius as! MGLCompositeStyleFunction + expectedCompositeValue = expectedCompositeExponentialValue as! MGLCompositeStyleFunction + XCTAssertEqual(compositeValue.attributeName, expectedCompositeValue.attributeName) + XCTAssertEqual(compositeValue.stops as NSDictionary, expectedStops as NSDictionary) + XCTAssertEqual(compositeValue.interpolationMode, expectedCompositeValue.interpolationMode) + XCTAssertEqual(compositeValue.defaultValue, expectedCompositeValue.defaultValue) // get a value back if let returnedCircleRadius = circleStyleLayer.circleRadius as? MGLCompositeStyleFunction<NSNumber> { @@ -287,11 +333,30 @@ extension MGLStyleValueTests { // data-driven, composite function with inner interval color stop values nested in outer camera stops let expectedCompositeIntervalValue = MGLStyleValue<NSNumber>( interpolationMode: .interval, - compositeStops: radiusCompositeExponentialOrIntervalStops, + compositeStops: [ + + 10: [200: MGLStyleValue<NSNumber>(rawValue: 5)], + 20: [200: MGLStyleValue<NSNumber>(rawValue: 20)] + ], + attributeName: "temp", + options: nil + ) + circleStyleLayer.circleRadius = MGLStyleValue<NSNumber>( + interpolationMode: .interval, + compositeStops: [ + 0: [0: MGLStyleValue<NSNumber>(rawValue: 5)], + 10: [200: MGLStyleValue<NSNumber>(rawValue: 5)], + 20: [200: MGLStyleValue<NSNumber>(rawValue: 20)] + ], attributeName: "temp", options: nil ) - circleStyleLayer.circleRadius = expectedCompositeIntervalValue - XCTAssertEqual(circleStyleLayer.circleRadius, expectedCompositeIntervalValue) + + compositeValue = circleStyleLayer.circleRadius as! MGLCompositeStyleFunction + expectedCompositeValue = expectedCompositeIntervalValue as! MGLCompositeStyleFunction + XCTAssertEqual(compositeValue.attributeName, expectedCompositeValue.attributeName) + XCTAssertEqual(compositeValue.stops as NSDictionary, expectedStops as NSDictionary) + XCTAssertEqual(compositeValue.interpolationMode, expectedCompositeValue.interpolationMode) + XCTAssertEqual(compositeValue.defaultValue, expectedCompositeValue.defaultValue) } } |