97ac480244916ccede932e5149c1dd2ba09a2df3
[yaffs-website] / vendor / symfony / expression-language / Tests / Node / BinaryNodeTest.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\ExpressionLanguage\Tests\Node;
13
14 use Symfony\Component\ExpressionLanguage\Node\BinaryNode;
15 use Symfony\Component\ExpressionLanguage\Node\ArrayNode;
16 use Symfony\Component\ExpressionLanguage\Node\ConstantNode;
17
18 class BinaryNodeTest extends AbstractNodeTest
19 {
20     public function getEvaluateData()
21     {
22         $array = new ArrayNode();
23         $array->addElement(new ConstantNode('a'));
24         $array->addElement(new ConstantNode('b'));
25
26         return array(
27             array(true, new BinaryNode('or', new ConstantNode(true), new ConstantNode(false))),
28             array(true, new BinaryNode('||', new ConstantNode(true), new ConstantNode(false))),
29             array(false, new BinaryNode('and', new ConstantNode(true), new ConstantNode(false))),
30             array(false, new BinaryNode('&&', new ConstantNode(true), new ConstantNode(false))),
31
32             array(0, new BinaryNode('&', new ConstantNode(2), new ConstantNode(4))),
33             array(6, new BinaryNode('|', new ConstantNode(2), new ConstantNode(4))),
34             array(6, new BinaryNode('^', new ConstantNode(2), new ConstantNode(4))),
35
36             array(true, new BinaryNode('<', new ConstantNode(1), new ConstantNode(2))),
37             array(true, new BinaryNode('<=', new ConstantNode(1), new ConstantNode(2))),
38             array(true, new BinaryNode('<=', new ConstantNode(1), new ConstantNode(1))),
39
40             array(false, new BinaryNode('>', new ConstantNode(1), new ConstantNode(2))),
41             array(false, new BinaryNode('>=', new ConstantNode(1), new ConstantNode(2))),
42             array(true, new BinaryNode('>=', new ConstantNode(1), new ConstantNode(1))),
43
44             array(true, new BinaryNode('===', new ConstantNode(true), new ConstantNode(true))),
45             array(false, new BinaryNode('!==', new ConstantNode(true), new ConstantNode(true))),
46
47             array(false, new BinaryNode('==', new ConstantNode(2), new ConstantNode(1))),
48             array(true, new BinaryNode('!=', new ConstantNode(2), new ConstantNode(1))),
49
50             array(-1, new BinaryNode('-', new ConstantNode(1), new ConstantNode(2))),
51             array(3, new BinaryNode('+', new ConstantNode(1), new ConstantNode(2))),
52             array(4, new BinaryNode('*', new ConstantNode(2), new ConstantNode(2))),
53             array(1, new BinaryNode('/', new ConstantNode(2), new ConstantNode(2))),
54             array(1, new BinaryNode('%', new ConstantNode(5), new ConstantNode(2))),
55             array(25, new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))),
56             array('ab', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))),
57
58             array(true, new BinaryNode('in', new ConstantNode('a'), $array)),
59             array(false, new BinaryNode('in', new ConstantNode('c'), $array)),
60             array(true, new BinaryNode('not in', new ConstantNode('c'), $array)),
61             array(false, new BinaryNode('not in', new ConstantNode('a'), $array)),
62
63             array(array(1, 2, 3), new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))),
64
65             array(1, new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+$/'))),
66         );
67     }
68
69     public function getCompileData()
70     {
71         $array = new ArrayNode();
72         $array->addElement(new ConstantNode('a'));
73         $array->addElement(new ConstantNode('b'));
74
75         return array(
76             array('(true || false)', new BinaryNode('or', new ConstantNode(true), new ConstantNode(false))),
77             array('(true || false)', new BinaryNode('||', new ConstantNode(true), new ConstantNode(false))),
78             array('(true && false)', new BinaryNode('and', new ConstantNode(true), new ConstantNode(false))),
79             array('(true && false)', new BinaryNode('&&', new ConstantNode(true), new ConstantNode(false))),
80
81             array('(2 & 4)', new BinaryNode('&', new ConstantNode(2), new ConstantNode(4))),
82             array('(2 | 4)', new BinaryNode('|', new ConstantNode(2), new ConstantNode(4))),
83             array('(2 ^ 4)', new BinaryNode('^', new ConstantNode(2), new ConstantNode(4))),
84
85             array('(1 < 2)', new BinaryNode('<', new ConstantNode(1), new ConstantNode(2))),
86             array('(1 <= 2)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(2))),
87             array('(1 <= 1)', new BinaryNode('<=', new ConstantNode(1), new ConstantNode(1))),
88
89             array('(1 > 2)', new BinaryNode('>', new ConstantNode(1), new ConstantNode(2))),
90             array('(1 >= 2)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(2))),
91             array('(1 >= 1)', new BinaryNode('>=', new ConstantNode(1), new ConstantNode(1))),
92
93             array('(true === true)', new BinaryNode('===', new ConstantNode(true), new ConstantNode(true))),
94             array('(true !== true)', new BinaryNode('!==', new ConstantNode(true), new ConstantNode(true))),
95
96             array('(2 == 1)', new BinaryNode('==', new ConstantNode(2), new ConstantNode(1))),
97             array('(2 != 1)', new BinaryNode('!=', new ConstantNode(2), new ConstantNode(1))),
98
99             array('(1 - 2)', new BinaryNode('-', new ConstantNode(1), new ConstantNode(2))),
100             array('(1 + 2)', new BinaryNode('+', new ConstantNode(1), new ConstantNode(2))),
101             array('(2 * 2)', new BinaryNode('*', new ConstantNode(2), new ConstantNode(2))),
102             array('(2 / 2)', new BinaryNode('/', new ConstantNode(2), new ConstantNode(2))),
103             array('(5 % 2)', new BinaryNode('%', new ConstantNode(5), new ConstantNode(2))),
104             array('pow(5, 2)', new BinaryNode('**', new ConstantNode(5), new ConstantNode(2))),
105             array('("a" . "b")', new BinaryNode('~', new ConstantNode('a'), new ConstantNode('b'))),
106
107             array('in_array("a", array(0 => "a", 1 => "b"))', new BinaryNode('in', new ConstantNode('a'), $array)),
108             array('in_array("c", array(0 => "a", 1 => "b"))', new BinaryNode('in', new ConstantNode('c'), $array)),
109             array('!in_array("c", array(0 => "a", 1 => "b"))', new BinaryNode('not in', new ConstantNode('c'), $array)),
110             array('!in_array("a", array(0 => "a", 1 => "b"))', new BinaryNode('not in', new ConstantNode('a'), $array)),
111
112             array('range(1, 3)', new BinaryNode('..', new ConstantNode(1), new ConstantNode(3))),
113
114             array('preg_match("/^[a-z]+/i\$/", "abc")', new BinaryNode('matches', new ConstantNode('abc'), new ConstantNode('/^[a-z]+/i$/'))),
115         );
116     }
117 }