|
11 | 11 |
|
12 | 12 | namespace Symfony\Component\ExpressionLanguage\Tests\Node;
|
13 | 13 |
|
| 14 | +use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; |
1
F438
4 | 15 | use Symfony\Component\ExpressionLanguage\Compiler;
|
15 | 16 | use Symfony\Component\ExpressionLanguage\Node\ArrayNode;
|
16 | 17 | use Symfony\Component\ExpressionLanguage\Node\BinaryNode;
|
|
20 | 21 |
|
21 | 22 | class BinaryNodeTest extends AbstractNodeTest
|
22 | 23 | {
|
| 24 | + use ExpectDeprecationTrait; |
| 25 | + |
23 | 26 | public function getEvaluateData()
|
24 | 27 | {
|
25 | 28 | $array = new ArrayNode();
|
@@ -113,10 +116,10 @@ public function getCompileData()
|
113 | 116 | ['pow(5, 2)', new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))],
|
114 | 117 | ['("a" . "b")', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))],
|
115 | 118 |
|
116 |
| - ['in_array("a", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('a'), $array)], |
117 |
| - ['in_array("c", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('c'), $array)], |
118 |
| - ['!in_array("c", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('c'), $array)], |
119 |
| - ['!in_array("a", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('a'), $array)], |
| 119 | + ['\Symfony\Component\ExpressionLanguage\Node\BinaryNode::inArray("a", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('a'), $array)], |
| 120 | + ['\Symfony\Component\ExpressionLanguage\Node\BinaryNode::inArray("c", [0 => "a", 1 => "b"])', new BinaryNode('in', new ConstantNode('c'), $array)], |
| 121 | + ['!\Symfony\Component\ExpressionLanguage\Node\BinaryNode::inArray("c", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('c'), $array)], |
| 122 | + ['!\Symfony\Component\ExpressionLanguage\Node\BinaryNode::inArray("a", [0 => "a", 1 => "b"])', new BinaryNode('not in', new ConstantNode('a'), $array)], |
120 | 123 |
|
121 | 124 | ['range(1, 3)', new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))],
|
122 | 125 |
|
@@ -214,4 +217,19 @@ public function testCompileMatchesWithInvalidRegexpAsExpression()
|
214 | 217 | $node->compile($compiler);
|
215 | 218 | eval('$regexp = "this is not a regexp"; '.$compiler->getSource().';');
|
216 | 219 | }
|
| 220 | + |
| 221 | + /** |
| 222 | + * @group legacy |
| 223 | + */ |
| 224 | + public function testInOperatorStrictness() |
| 225 | + { |
| 226 | + $array = new ArrayNode(); |
| 227 | + $array->addElement(new ConstantNode('a')); |
| 228 | + $array->addElement(new ConstantNode(true)); |
| 229 | + |
| 230 | + $node = new BinaryNode('in', new ConstantNode('b'), $array); |
| 231 | + |
| 232 | + $this->expectDeprecation('Since symfony/expression-language 6.3: The "in" operator will use strict comparisons in Symfony 7.0. Loose match found with key "1" for value "b".'); |
| 233 | + $this->assertTrue($node->evaluate([], [])); |
| 234 | + } |
217 | 235 | }
|
0 commit comments