diff options
author | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-04-17 16:07:51 -0400 |
---|---|---|
committer | Fabian Guerra <fabian.guerra@mapbox.com> | 2018-04-17 16:07:51 -0400 |
commit | 5e0c4af7b25c1dd1e008b706e8a8ce1b84f09c02 (patch) | |
tree | bbdcf0ac4fa4aee6b551904f9cb12d58bed401b0 | |
parent | 3951b203c8a316ca6bc5f0b46c8aea4e3bd7c1f5 (diff) | |
download | qtlocation-mapboxgl-5e0c4af7b25c1dd1e008b706e8a8ce1b84f09c02.tar.gz |
[ios, macos] Add cosine NSExpresssion operator.
-rw-r--r-- | platform/darwin/src/NSExpression+MGLAdditions.mm | 10 | ||||
-rw-r--r-- | platform/darwin/test/MGLExpressionTests.mm | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/platform/darwin/src/NSExpression+MGLAdditions.mm b/platform/darwin/src/NSExpression+MGLAdditions.mm index d23da18597..aa01fd6126 100644 --- a/platform/darwin/src/NSExpression+MGLAdditions.mm +++ b/platform/darwin/src/NSExpression+MGLAdditions.mm @@ -69,6 +69,7 @@ const MGLExpressionInterpolationMode MGLExpressionInterpolationModeCubicBezier = INSTALL_METHOD(mgl_coalesce:); INSTALL_METHOD(mgl_does:have:); INSTALL_METHOD(mgl_acos:); + INSTALL_METHOD(mgl_cos:); INSTALL_METHOD(mgl_asin:); INSTALL_METHOD(mgl_atan:); @@ -108,6 +109,13 @@ const MGLExpressionInterpolationMode MGLExpressionInterpolationModeCubicBezier = } /** + Computes the principal value of the cosine. + */ +- (NSNumber *)mgl_cos:(NSNumber *)number { + return @(cos(number.doubleValue)); +} + +/** Computes the principal value of the inverse sine. */ - (NSNumber *)mgl_asin:(NSNumber *)number { @@ -700,6 +708,7 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { @"abs": @"abs:", @"round": @"mgl_round:", @"acos" : @"mgl_acos:", + @"cos" : @"mgl_cos:", @"asin" : @"mgl_asin:", @"atan" : @"mgl_atan:", @"floor": @"floor:", @@ -945,6 +954,7 @@ NSArray *MGLSubexpressionsWithJSONObjects(NSArray *objects) { @"length:": @"length", @"mgl_round:": @"round", @"mgl_acos:" : @"acos", + @"mgl_cos:" : @"cos", @"mgl_asin:" : @"asin", @"mgl_atan:" : @"atan", // Vararg aftermarket expressions need to be declared with an explicit and implicit first argument. diff --git a/platform/darwin/test/MGLExpressionTests.mm b/platform/darwin/test/MGLExpressionTests.mm index 20e252c06b..badc9904cc 100644 --- a/platform/darwin/test/MGLExpressionTests.mm +++ b/platform/darwin/test/MGLExpressionTests.mm @@ -539,6 +539,13 @@ using namespace std::string_literals; XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression); } { + NSExpression *expression = [NSExpression expressionForFunction:@"mgl_cos:" arguments:@[MGLConstantExpression(@0)]]; + NSArray *jsonExpression = @[@"cos", @0]; + XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression); + XCTAssertEqualObjects([expression expressionValueWithObject:nil context:nil], @1); + XCTAssertEqualObjects([NSExpression expressionWithMGLJSONObject:jsonExpression], expression); + } + { NSExpression *expression = [NSExpression expressionForFunction:@"mgl_asin:" arguments:@[MGLConstantExpression(@0)]]; NSArray *jsonExpression = @[@"asin", @0]; XCTAssertEqualObjects(expression.mgl_jsonExpressionObject, jsonExpression); |