Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bae6fa5

Browse files
minor #57947 [ExpressionLanguage] Improve test coverage (alexandre-daubois)
This PR was merged into the 5.4 branch. Discussion ---------- [ExpressionLanguage] Improve test coverage | Q | A | ------------- | --- | Branch? | 5.4 | Bug fix? | no | New feature? | no | Deprecations? | no | Issues | - | License | MIT Commits ------- 1c6f020 [ExpressionLanguage] Improve test coverage
2 parents ebebd36 + 1c6f020 commit bae6fa5

File tree

4 files changed

+68
-0
lines changed

4 files changed

+68
-0
lines changed

src/Symfony/Component/ExpressionLanguage/Tests/ExpressionLanguageTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,4 +287,11 @@ function (ExpressionLanguage $el) {
287287
],
288288
];
289289
}
290+
291+
public function testParseAlreadyParsedExpressionReturnsSameObject()
292+
{
293+
$el = new ExpressionLanguage();
294+
$parsed = $el->parse('1 + 1', []);
295+
$this->assertSame($parsed, $el->parse($parsed, []));
296+
}
290297
}

src/Symfony/Component/ExpressionLanguage/Tests/Node/BinaryNodeTest.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,4 +207,24 @@ public function testCompileMatchesWithInvalidRegexpAsExpression()
207207
$node->compile($compiler);
208208
eval('$regexp = "this is not a regexp"; '.$compiler->getSource().';');
209209
}
210+
211+
public function testDivisionByZero()
212+
{
213+
$node = new BinaryNode('/', new ConstantNode(1), new ConstantNode(0));
214+
215+
$this->expectException(\DivisionByZeroError::class);
216+
$this->expectExceptionMessage('Division by zero.');
217+
218+
$node->evaluate([], []);
219+
}
220+
221+
public function testModuloByZero()
222+
{
223+
$node = new BinaryNode('%', new ConstantNode(1), new ConstantNode(0));
224+
225+
$this->expectException(\DivisionByZeroError::class);
226+
$this->expectExceptionMessage('Modulo by zero.');
227+
228+
$node->evaluate([], []);
229+
}
210230
}

src/Symfony/Component/ExpressionLanguage/Tests/Node/NodeTest.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Component\ExpressionLanguage\Tests\Node;
1313

1414
use PHPUnit\Framework\TestCase;
15+
use Symfony\Component\ExpressionLanguage\Compiler;
1516
use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
1617
use Symfony\Component\ExpressionLanguage\Node\Node;
1718

@@ -38,4 +39,33 @@ public function testSerialization()
3839

3940
$this->assertEquals($node, $unserializedNode);
4041
}
42+
43+
public function testCompileActuallyCompilesAllNodes()
44+
{
45+
$nodes = [];
46+
foreach (range(1, 10) as $ignored) {
47+
$node = $this->createMock(Node::class);
48+
$node->expects($this->once())->method('compile');
49+
50+
$nodes[] = $node;
51+
}
52+
53+
$node = new Node($nodes);
54+
$node->compile($this->createMock(Compiler::class));
55+
}
56+
57+
public function testEvaluateActuallyEvaluatesAllNodes()
58+
{
59+
$nodes = [];
60+
foreach (range(1, 3) as $i) {
61+
$node = $this->createMock(Node::class);
62+
$node->expects($this->once())->method('evaluate')
63+
->willReturn($i);
64+
65+
$nodes[] = $node;
66+
}
67+
68+
$node = new Node($nodes);
69+
$this->assertSame([1, 2, 3], $node->evaluate([], []));
70+
}
4171
}

src/Symfony/Component/ExpressionLanguage/Tests/ParserTest.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,17 @@ public function testParseWithZeroInNames()
3737
$parser->parse($lexer->tokenize('foo'), [0]);
3838
}
3939

40+
public function testParsePrimaryExpressionWithUnknownFunctionThrows()
41+
{
42+
$parser = new Parser([]);
43+
$stream = (new Lexer())->tokenize('foo()');
44+
45+
$this->expectException(SyntaxError::class);
46+
$this->expectExceptionMessage('The function "foo" does not exist around position 1 for expression `foo()`.');
47+
48+
$parser->parse($stream);
49+
}
50+
4051
/**
4152
* @dataProvider getParseData
4253
*/

0 commit comments

Comments
 (0)