Skip to content
This repository was archived by the owner on Feb 28, 2025. It is now read-only.

Commit 2ccad18

Browse files
authored
PHPLIB-1357 Add tests on Trigonometry Expression Operators (#48)
1 parent 7315073 commit 2ccad18

31 files changed

+1001
-0
lines changed

generator/config/expression/acos.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ arguments:
1616
$acos takes any valid expression that resolves to a number between -1 and 1, e.g. -1 <= value <= 1.
1717
$acos returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $acos returns values as a double. $acos can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
angle_a:
27+
$radiansToDegrees:
28+
$acos:
29+
$divide:
30+
- '$side_b'
31+
- '$hypotenuse'

generator/config/expression/acosh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,13 @@ arguments:
1616
$acosh takes any valid expression that resolves to a number between 1 and +Infinity, e.g. 1 <= value <= +Infinity.
1717
$acosh returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $acosh returns values as a double. $acosh can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
y-coordinate:
27+
$radiansToDegrees:
28+
$acosh: '$x-coordinate'

generator/config/expression/asin.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ arguments:
1616
$asin takes any valid expression that resolves to a number between -1 and 1, e.g. -1 <= value <= 1.
1717
$asin returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $asin returns values as a double. $asin can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
angle_a:
27+
$radiansToDegrees:
28+
$asin:
29+
$divide:
30+
- '$side_a'
31+
- '$hypotenuse'

generator/config/expression/asinh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,13 @@ arguments:
1616
$asinh takes any valid expression that resolves to a number.
1717
$asinh returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $asinh returns values as a double. $asinh can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
y-coordinate:
27+
$radiansToDegrees:
28+
$asinh: '$x-coordinate'

generator/config/expression/atan.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,16 @@ arguments:
1616
$atan takes any valid expression that resolves to a number.
1717
$atan returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $atan returns values as a double. $atan can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
angle_a:
27+
$radiansToDegrees:
28+
$atan:
29+
$divide:
30+
- '$side_b'
31+
- '$side_a'

generator/config/expression/atan2.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,15 @@ arguments:
2020
name: x
2121
type:
2222
- resolvesToNumber
23+
tests:
24+
-
25+
name: 'Example'
26+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/#example'
27+
pipeline:
28+
-
29+
$addFields:
30+
angle_a:
31+
$radiansToDegrees:
32+
$atan2:
33+
- '$side_b'
34+
- '$side_a'

generator/config/expression/atanh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,13 @@ arguments:
1616
$atanh takes any valid expression that resolves to a number between -1 and 1, e.g. -1 <= value <= 1.
1717
$atanh returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.
1818
By default $atanh returns values as a double. $atanh can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
19+
tests:
20+
-
21+
name: 'Example'
22+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/#example'
23+
pipeline:
24+
-
25+
$addFields:
26+
y-coordinate:
27+
$radiansToDegrees:
28+
$atanh: '$x-coordinate'

generator/config/expression/cos.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@ arguments:
1515
description: |
1616
$cos takes any valid expression that resolves to a number. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the result to radians.
1717
By default $cos returns values as a double. $cos can also return values as a 128-bit decimal as long as the <expression> resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
side_a:
26+
$multiply:
27+
-
28+
$cos:
29+
$degreesToRadians: '$angle_a'
30+
- '$hypotenuse'

generator/config/expression/cosh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,13 @@ arguments:
1515
description: |
1616
$cosh takes any valid expression that resolves to a number, measured in radians. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the value to radians.
1717
By default $cosh returns values as a double. $cosh can also return values as a 128-bit decimal if the <expression> resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
cosh_output:
26+
$cosh:
27+
$degreesToRadians: '$angle'

generator/config/expression/degreesToRadians.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@ arguments:
1515
description: |
1616
$degreesToRadians takes any valid expression that resolves to a number.
1717
By default $degreesToRadians returns values as a double. $degreesToRadians can also return values as a 128-bit decimal as long as the <expression> resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
angle_a_rad:
26+
$degreesToRadians: '$angle_a'
27+
angle_b_rad:
28+
$degreesToRadians: '$angle_b'
29+
angle_c_rad:
30+
$degreesToRadians: '$angle_c'

generator/config/expression/radiansToDegrees.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,16 @@ arguments:
1212
name: expression
1313
type:
1414
- resolvesToNumber
15+
tests:
16+
-
17+
name: 'Example'
18+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/#example'
19+
pipeline:
20+
-
21+
$addFields:
22+
angle_a_deg:
23+
$radiansToDegrees: '$angle_a'
24+
angle_b_deg:
25+
$radiansToDegrees: '$angle_b'
26+
angle_c_deg:
27+
$radiansToDegrees: '$angle_c'

generator/config/expression/sin.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@ arguments:
1515
description: |
1616
$sin takes any valid expression that resolves to a number. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the result to radians.
1717
By default $sin returns values as a double. $sin can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
side_b:
26+
$multiply:
27+
-
28+
$sin:
29+
$degreesToRadians: '$angle_a'
30+
- '$hypotenuse'

generator/config/expression/sinh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,13 @@ arguments:
1515
description: |
1616
$sinh takes any valid expression that resolves to a number, measured in radians. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the value to radians.
1717
By default $sinh returns values as a double. $sinh can also return values as a 128-bit decimal if the expression resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
sinh_output:
26+
$sinh:
27+
$degreesToRadians: '$angle'

generator/config/expression/tan.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,16 @@ arguments:
1515
description: |
1616
$tan takes any valid expression that resolves to a number. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the result to radians.
1717
By default $tan returns values as a double. $tan can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
side_b:
26+
$multiply:
27+
-
28+
$tan:
29+
$degreesToRadians: '$angle_a'
30+
- '$side_a'

generator/config/expression/tanh.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,13 @@ arguments:
1515
description: |
1616
$tanh takes any valid expression that resolves to a number, measured in radians. If the expression returns a value in degrees, use the $degreesToRadians operator to convert the value to radians.
1717
By default $tanh returns values as a double. $tanh can also return values as a 128-bit decimal if the expression resolves to a 128-bit decimal value.
18+
tests:
19+
-
20+
name: 'Example'
21+
link: 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/#example'
22+
pipeline:
23+
-
24+
$addFields:
25+
tanh_output:
26+
$tanh:
27+
$degreesToRadians: '$angle'
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Expression;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Stage;
10+
use MongoDB\Tests\Builder\PipelineTestCase;
11+
12+
/**
13+
* Test $acos expression
14+
*/
15+
class AcosOperatorTest extends PipelineTestCase
16+
{
17+
public function testExample(): void
18+
{
19+
$pipeline = new Pipeline(
20+
Stage::addFields(
21+
angle_a: Expression::radiansToDegrees(
22+
Expression::acos(
23+
Expression::divide(
24+
Expression::numberFieldPath('side_b'),
25+
Expression::numberFieldPath('hypotenuse'),
26+
),
27+
),
28+
),
29+
),
30+
);
31+
32+
$this->assertSamePipeline(Pipelines::AcosExample, $pipeline);
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Expression;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Stage;
10+
use MongoDB\Tests\Builder\PipelineTestCase;
11+
12+
/**
13+
* Test $acosh expression
14+
*/
15+
class AcoshOperatorTest extends PipelineTestCase
16+
{
17+
public function testExample(): void
18+
{
19+
$pipeline = new Pipeline(
20+
Stage::addFields(
21+
...[
22+
'y-coordinate' => Expression::radiansToDegrees(
23+
Expression::acosh(
24+
Expression::numberFieldPath('x-coordinate'),
25+
),
26+
),
27+
],
28+
),
29+
);
30+
31+
$this->assertSamePipeline(Pipelines::AcoshExample, $pipeline);
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Expression;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Stage;
10+
use MongoDB\Tests\Builder\PipelineTestCase;
11+
12+
/**
13+
* Test $asin expression
14+
*/
15+
class AsinOperatorTest extends PipelineTestCase
16+
{
17+
public function testExample(): void
18+
{
19+
$pipeline = new Pipeline(
20+
Stage::addFields(
21+
angle_a: Expression::radiansToDegrees(
22+
Expression::asin(
23+
Expression::divide(
24+
Expression::numberFieldPath('side_a'),
25+
Expression::numberFieldPath('hypotenuse'),
26+
),
27+
),
28+
),
29+
),
30+
);
31+
32+
$this->assertSamePipeline(Pipelines::AsinExample, $pipeline);
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace MongoDB\Tests\Builder\Expression;
6+
7+
use MongoDB\Builder\Expression;
8+
use MongoDB\Builder\Pipeline;
9+
use MongoDB\Builder\Stage;
10+
use MongoDB\Tests\Builder\PipelineTestCase;
11+
12+
/**
13+
* Test $asinh expression
14+
*/
15+
class AsinhOperatorTest extends PipelineTestCase
16+
{
17+
public function testExample(): void
18+
{
19+
$pipeline = new Pipeline(
20+
Stage::addFields(
21+
...[
22+
'y-coordinate' => Expression::radiansToDegrees(
23+
Expression::asinh(
24+
Expression::numberFieldPath('x-coordinate'),
25+
),
26+
),
27+
],
28+
),
29+
);
30+
31+
$this->assertSamePipeline(Pipelines::AsinhExample, $pipeline);
32+
}
33+
}

0 commit comments

Comments
 (0)