-
Notifications
You must be signed in to change notification settings - Fork 220
/
Copy pathExpressionLanguageTest.php
58 lines (49 loc) · 1.84 KB
/
ExpressionLanguageTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?php
declare(strict_types=1);
namespace Overblog\GraphQLBundle\Tests\ExpressionLanguage;
use Overblog\GraphQLBundle\ExpressionLanguage\ExpressionLanguage;
use PHPUnit\Framework\TestCase;
use Symfony\Component\ExpressionLanguage\Expression;
final class ExpressionLanguageTest extends TestCase
{
/**
* @dataProvider expressionContainsVarProvider
*
* @param Expression|string $expression
*/
public function testExpressionContainsVar($expression, bool $expectedResult): void
{
$result = ExpressionLanguage::expressionContainsVar('validator', $expression);
$this->assertSame($expectedResult, $result);
}
/**
* @dataProvider extractExpressionVarNamesProvider
*
* @param Expression|string $expression
*/
public function testExtractExpressionVarNames($expression, array $expectedResult): void
{
$result = ExpressionLanguage::extractExpressionVarNames($expression);
$this->assertSame($expectedResult, $result);
}
public function expressionContainsVarProvider(): iterable
{
yield ["@=test('default', 15.6, validator)", true];
yield ["@=validator('default', 15.6)", false];
yield ["validator('default', validator(), 15.6)", false];
yield [new Expression("validator('default', validator(), 15.6)"), false];
yield [new Expression('validator'), true];
yield ['toto.validator', false];
yield ['toto . validator', false];
yield ['toto.test && validator', true];
yield ['toto . test && validator', true];
}
public function extractExpressionVarNamesProvider(): iterable
{
yield ['@=a + b - c', ['a', 'b', 'c']];
yield ['f()', []];
yield ['a.c + b', ['a', 'b']];
yield ['(a.c) + b - d', ['a', 'b', 'd']];
yield ['a && b && c', ['a', 'b', 'c']];
}
}