2 namespace TYPO3\CMS\Fluid\Tests\Unit\Core\Parser\SyntaxTree;
34 $this->renderingContext = $this->getMock(\TYPO3\CMS\
Fluid\Core\Rendering\RenderingContextInterface::class);
43 $rootNode = $this->getMock(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\RootNode::class);
44 $rootNode->expects($this->once())->method(
'getChildNodes')->will($this->returnValue(array(1, 2, 3, 4)));
46 new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
54 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
55 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
56 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'=='));
57 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
59 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
60 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
68 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
69 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
70 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'=='));
71 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'3'));
73 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
74 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
82 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
83 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
84 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'!='));
85 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
87 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
88 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
96 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
97 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'5'));
98 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'!='));
99 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'3'));
101 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
102 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
110 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
111 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'43'));
112 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'%'));
113 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'2'));
115 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
116 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
124 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
125 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'42'));
126 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'%'));
127 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'2'));
129 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
130 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
138 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
139 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
140 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'>'));
141 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'9'));
143 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
144 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
152 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
153 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
154 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'>'));
155 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
157 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
158 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
166 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
167 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
168 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'>='));
169 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'9'));
171 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
172 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
180 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
181 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
182 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'>='));
183 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
185 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
186 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
194 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
195 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
196 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'>='));
197 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'11'));
199 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
200 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
208 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
209 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'9'));
210 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'<'));
211 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
213 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
214 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
222 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
223 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
224 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'<'));
225 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
227 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
228 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
236 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
237 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'9'));
238 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'<='));
239 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
241 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
242 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
250 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
251 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
252 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'<='));
253 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
255 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
256 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
264 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
265 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'11'));
266 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'<='));
267 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'10'));
269 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
270 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
278 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
279 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'11 <= -2.1'));
280 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
281 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
289 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
290 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' != "stringA"'));
292 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
293 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
301 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
302 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' != \'stringB\''));
304 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
305 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
313 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
314 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' == \'stringB\''));
316 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
317 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
325 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
326 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' == "stringA"'));
328 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
329 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
337 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
338 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'\\\
'stringA\\\'\' == \'\\\'stringA\\\'\''));
340 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
341 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
349 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
350 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' == 42'));
352 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
353 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
361 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
362 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'\'stringA\
' == 0'));
364 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
365 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
373 $object1 = new \stdClass();
374 $object2 = new \stdClass();
376 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
378 $object1Node = $this->getMock(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode::class, array(
'evaluate'), array(
'foo'));
379 $object1Node->expects($this->any())->method(
'evaluate')->will($this->returnValue($object1));
381 $object2Node = $this->getMock(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode::class, array(
'evaluate'), array(
'foo'));
382 $object2Node->expects($this->any())->method(
'evaluate')->will($this->returnValue($object2));
384 $rootNode->addChildNode($object1Node);
385 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'=='));
386 $rootNode->addChildNode($object2Node);
388 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
389 $this->assertFalse($booleanNode->evaluate($this->renderingContext));
397 $object1 = new \stdClass();
398 $object2 = new \stdClass();
400 $rootNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\RootNode();
402 $object1Node = $this->getMock(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode::class, array(
'evaluate'), array(
'foo'));
403 $object1Node->expects($this->any())->method(
'evaluate')->will($this->returnValue($object1));
405 $object2Node = $this->getMock(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\ObjectAccessorNode::class, array(
'evaluate'), array(
'foo'));
406 $object2Node->expects($this->any())->method(
'evaluate')->will($this->returnValue($object2));
408 $rootNode->addChildNode($object1Node);
409 $rootNode->addChildNode(
new \TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\TextNode(
'!='));
410 $rootNode->addChildNode($object2Node);
412 $booleanNode = new \TYPO3\CMS\Fluid\Core\Parser\SyntaxTree\BooleanNode($rootNode);
413 $this->assertTrue($booleanNode->evaluate($this->renderingContext));
421 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
false));
422 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
true));
430 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
''));
431 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'false'));
432 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'FALSE'));
434 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'true'));
435 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'TRUE'));
443 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
false));
444 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
true));
446 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0));
447 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0'));
449 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0.0));
450 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0.0'));
452 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0x0));
454 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0x1));
455 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0x1'));
457 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0e0));
458 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0e0'));
460 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(1e0));
461 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'1e0'));
463 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(-1));
464 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'-1'));
466 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(-0.5));
467 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'-0.5'));
469 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(1));
470 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'1'));
472 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0.5));
473 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0.5'));
475 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(0x1));
476 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
'0x10'));
484 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(array()));
486 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(array(
'foo')));
487 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(array(
'foo' =>
'bar')));
495 $this->assertFalse(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(null));
497 $this->assertTrue(\TYPO3\CMS\
Fluid\Core\Parser\SyntaxTree\BooleanNode::convertToBoolean(
new \stdClass()));