|
11 | 11 |
|
12 | 12 | namespace Symfony\Component\ExpressionLanguage\Tests\Node;
|
13 | 13 |
|
| 14 | +use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; |
14 | 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
F438
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". Normalize the array parameter so it only has the expected types or implement loose matching in your own expression function.'); |
| 233 | + $this->assertTrue($node->evaluate([], [])); |
| 234 | + } |
217 | 235 | }
|
0 commit comments