Files
oberstufe-alt/typo3conf/ext/vhs/Tests/Unit/ViewHelpers/IfViewHelperTest.php
2018-04-02 08:07:38 +02:00

214 lines
6.1 KiB
PHP

<?php
namespace FluidTYPO3\Vhs\Tests\Unit\ViewHelpers;
/*
* This file is part of the FluidTYPO3/Vhs project under GPLv2 or later.
*
* For the full copyright and license information, please read the
* LICENSE.md file that was distributed with this source code.
*/
/**
* @protection off
* @author Danilo Bürger <danilo.buerger@hmspl.de>, Heimspiel GmbH
* @package Vhs
*/
class IfViewHelperTest extends AbstractViewHelperTest {
/**
* @test
*/
public function rendersThenChildWithFlatComparison() {
$stack = array(array('foo'), '==', array('foo'));
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersThenChildWithPrecedence() {
$stack = array(1, 'OR', 0, 'AND', 0);
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersElseChildWithFlatArrayComparison() {
$stack = array(array('foo'), '==', '3');
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('else', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersThenChildWithFlatLogicalOperator() {
$stack = array(1, '==', 1, 'AND', 1);
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersThenChildWithRightStack() {
$stack = array(1, '==', 1, 'AND', array(1, '!=', 0));
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersThenChildWithStacks() {
$stack = array(array('foo', '!=', 'bar'), 'AND', 1, 'OR', array(1, '==', '0'));
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('then', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersElseChildWithStacks() {
$stack = array(array('foo', '!=', 'bar'), 'AND', array('foo', '==', 'bar'));
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('else', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersElseChildWithEmptyStack() {
$stack = array();
$arguments = array(
'then' => 'then',
'else' => 'else',
'stack' => $stack
);
$result = $this->executeViewHelper($arguments);
$this->assertEquals('else', $result);
$staticResult = $this->executeViewHelperStatic($arguments);
$this->assertEquals($result, $staticResult, 'The regular viewHelper output doesn\'t match the static output!');
}
/**
* @test
*/
public function rendersElseChildWithNoLogicalOperator() {
$this->setExpectedException('RuntimeException', NULL, 1385071197);
$stack = array(array('foo', '!=', 'bar'), array('foo', '==', 'bar'));
$this->executeViewHelper(array('then' => 'then', 'else' => 'else', 'stack' => $stack));
}
/**
* @test
*/
public function rendersElseChildWithWrongLogicalOperatorOrder() {
$this->setExpectedException('RuntimeException', NULL, 1385072228);
$stack = array(array('foo', '!=', 'bar'), 'AND', 'AND', array('foo', '==', 'bar'));
$this->executeViewHelper(array('then' => 'then', 'else' => 'else', 'stack' => $stack));
}
/**
* @test
*/
public function evaluateLogicalOperatorAnd() {
$instance = $this->createInstance();
$this->assertEquals(FALSE, $this->callInaccessibleMethod($instance, 'evaluateLogicalOperator', array(TRUE), 'AND', array(FALSE)));
}
/**
* @test
*/
public function evaluateLogicalOperatorOr() {
$instance = $this->createInstance();
$this->assertEquals(TRUE, $this->callInaccessibleMethod($instance, 'evaluateLogicalOperator', array(TRUE), 'OR', array(FALSE)));
}
/**
* @test
*/
public function evaluateLogicalOperatorInternalError() {
$this->setExpectedException('RuntimeException', NULL, 1385072357);
$instance = $this->createInstance();
$this->callInaccessibleMethod($instance, 'evaluateLogicalOperator', array(TRUE), 'foo', array(FALSE));
}
/**
* @test
*/
public function prepareSideForEvaluation() {
$instance = $this->createInstance();
$this->assertEquals(array(TRUE), $this->callInaccessibleMethod($instance, 'prepareSideForEvaluation', array(TRUE)));
}
/**
* @test
*/
public function prepareSideForEvaluationArray() {
$instance = $this->createInstance();
$this->assertEquals(array(TRUE), $this->callInaccessibleMethod($instance, 'prepareSideForEvaluation', array(array(TRUE))));
}
}