Skip to content

Commit e41b72b

Browse files
fix(#474): support usage of aritthmetic expressions in mathemaiccal fucntions
1 parent fc80e05 commit e41b72b

File tree

17 files changed

+237
-12
lines changed

17 files changed

+237
-12
lines changed

.github/workflows/sloth.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ jobs:
3434
uses: lendable/sloth@1d0ce54a04a834366b4af63362ffd0a58fc447ad # 0.2.2
3535
with:
3636
token: ${{ secrets.GITHUB_TOKEN }}
37-
interval: 10
37+
interval: 15
3838
ignored: |
3939
CodeRabbit
4040
Scrutinizer

src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/BaseArithmeticFunction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ abstract class BaseArithmeticFunction extends BaseVariadicFunction
1313
{
1414
protected function getNodeMappingPattern(): array
1515
{
16-
return ['ArithmeticPrimary'];
16+
return ['SimpleArithmeticExpression'];
1717
}
1818

1919
protected function getMinArgumentCount(): int

src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Gamma.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ class Gamma extends BaseFunction
1717
protected function customizeFunction(): void
1818
{
1919
$this->setFunctionPrototype('gamma(%s)');
20-
$this->addNodeMapping('ArithmeticPrimary');
20+
$this->addNodeMapping('SimpleArithmeticExpression');
2121
}
2222
}

src/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/Lgamma.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ class Lgamma extends BaseFunction
1717
protected function customizeFunction(): void
1818
{
1919
$this->setFunctionPrototype('lgamma(%s)');
20-
$this->addNodeMapping('ArithmeticPrimary');
20+
$this->addNodeMapping('SimpleArithmeticExpression');
2121
}
2222
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CbrtTest.php

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,20 @@ public function can_calculate_cube_root_of_negative_number(): void
4949
#[Test]
5050
public function can_calculate_cube_root_of_column_value(): void
5151
{
52-
$dql = 'SELECT CBRT(n.decimal1) as result
53-
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n
52+
$dql = 'SELECT CBRT(n.decimal1) as result
53+
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n
5454
WHERE n.id = 1';
5555
$result = $this->executeDqlQuery($dql);
5656
$this->assertEqualsWithDelta(2.1897595699439445, $result[0]['result'], 0.0001);
5757
}
58+
59+
#[Test]
60+
public function can_calculate_cube_root_of_arithmetic_expression(): void
61+
{
62+
$dql = 'SELECT CBRT(n.integer1 + n.integer2 - 3) as result
63+
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n
64+
WHERE n.id = 1';
65+
$result = $this->executeDqlQuery($dql);
66+
$this->assertEqualsWithDelta(3.0, $result[0]['result'], 0.0001);
67+
}
5868
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/CeilTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,12 @@ public function ceil_with_column_value(): void
3939
$result = $this->executeDqlQuery($dql);
4040
$this->assertEquals(11, $result[0]['result']);
4141
}
42+
43+
#[Test]
44+
public function ceil_with_arithmetic_expression(): void
45+
{
46+
$dql = 'SELECT CEIL(t.decimal1 * t.decimal2 / t.integer1) as result FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics t WHERE t.id = 1';
47+
$result = $this->executeDqlQuery($dql);
48+
$this->assertEquals(22, $result[0]['result']);
49+
}
4250
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/DegreesTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,12 @@ public function degrees_with_entity_property(): void
3131
$result = $this->executeDqlQuery($dql);
3232
$this->assertEqualsWithDelta(601.6056848873644, $result[0]['result'], 0.000001);
3333
}
34+
35+
#[Test]
36+
public function degrees_with_arithmetic_expression(): void
37+
{
38+
$dql = 'SELECT DEGREES(n.decimal1 / n.integer1) as result FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n WHERE n.id = 1';
39+
$result = $this->executeDqlQuery($dql);
40+
$this->assertEqualsWithDelta(60.16056848873644, $result[0]['result'], 0.000001);
41+
}
3442
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/ExpTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,12 @@ public function can_calculate_exponential_of_entity_decimal_value(): void
3131
$result = $this->executeDqlQuery($dql);
3232
$this->assertEqualsWithDelta(36315.502674246638, $result[0]['result'], 0.000001);
3333
}
34+
35+
#[Test]
36+
public function can_calculate_exponential_of_arithmetic_expression(): void
37+
{
38+
$dql = 'SELECT EXP(n.integer1 / 10) as result FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n WHERE n.id = 1';
39+
$result = $this->executeDqlQuery($dql);
40+
$this->assertEqualsWithDelta(2.718281828459, $result[0]['result'], 0.0001);
41+
}
3442
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/GammaTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,15 @@ public function can_compute_gamma_of_integer_field(): void
5454
$result = $this->executeDqlQuery($dql);
5555
$this->assertEqualsWithDelta(362880.0, $result[0]['result'], 0.0001);
5656
}
57+
58+
#[Test]
59+
public function can_compute_gamma_of_arithmetic_expression(): void
60+
{
61+
$dql = 'SELECT GAMMA(t.integer1 / 2) as result
62+
FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics t
63+
WHERE t.id = 1';
64+
65+
$result = $this->executeDqlQuery($dql);
66+
$this->assertEqualsWithDelta(24.0, $result[0]['result'], 0.0001);
67+
}
5768
}

tests/Integration/MartinGeorgiev/Doctrine/ORM/Query/AST/Functions/LnTest.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,12 @@ public function can_calculate_natural_logarithm_of_entity_decimal_value(): void
3131
$result = $this->executeDqlQuery($dql);
3232
$this->assertEqualsWithDelta(2.3513752571634777, $result[0]['result'], 0.000001);
3333
}
34+
35+
#[Test]
36+
public function can_calculate_natural_logarithm_of_arithmetic_expression(): void
37+
{
38+
$dql = 'SELECT LN(n.integer1 + n.integer2) as result FROM Fixtures\MartinGeorgiev\Doctrine\Entity\ContainsNumerics n WHERE n.id = 1';
39+
$result = $this->executeDqlQuery($dql);
40+
$this->assertEqualsWithDelta(3.4011973816621555, $result[0]['result'], 0.000001);
41+
}
3442
}

0 commit comments

Comments
 (0)