| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | <?php
/*
 * This file is part of Twig.
 *
 * (c) Fabien Potencier
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
class Twig_Tests_ParserTest extends PHPUnit_Framework_TestCase
{
    /**
     * @expectedException Twig_Error_Syntax
     */
    public function testSetMacroThrowsExceptionOnReservedMethods()
    {
        $parser = new Twig_Parser(new Twig_Environment());
        $parser->setMacro('display', $this->getMock('Twig_Node_Macro', null, array(), '', null));
    }
    /**
     * @dataProvider getFilterBodyNodesData
     */
    public function testFilterBodyNodes($input, $expected)
    {
        list($parser, $invoker) = $this->getParserForFilterBodyNodes();
        $this->assertEquals($expected, $invoker->invoke($parser, $input));
    }
    public function getFilterBodyNodesData()
    {
        return array(
            array(
                new Twig_Node(array(new Twig_Node_Text('   ', 0))),
                new Twig_Node(array()),
            ),
            array(
                $input = new Twig_Node(array(new Twig_Node_Set(false, new Twig_Node(), new Twig_Node(), 0))),
                $input,
            ),
        );
    }
    /**
     * @dataProvider getFilterBodyNodesDataThrowsException
     * @expectedException Twig_Error_Syntax
     */
    public function testFilterBodyNodesThrowsException($input)
    {
        list($parser, $invoker) = $this->getParserForFilterBodyNodes();
        $invoker->invoke($parser, $input);
    }
    public function getFilterBodyNodesDataThrowsException()
    {
        return array(
            array(new Twig_Node_Text('foo', 0)),
            array(new Twig_Node(array(new Twig_Node(array(new Twig_Node_Text('foo', 0)))))),
        );
    }
    protected function getParserForFilterBodyNodes()
    {
        $invoker = new ReflectionMethod('Twig_Parser', 'filterBodyNodes');
        $invoker->setAccessible(true);
        $p = new ReflectionProperty('Twig_Parser', 'stream');
        $p->setAccessible(true);
        $parser = new Twig_Parser(new Twig_Environment());
        $parser->setParent(new Twig_Node());
        $p->setValue($parser, $this->getMockBuilder('Twig_TokenStream')->disableOriginalConstructor()->getMock());
        return array($parser, $invoker);
    }
}
 |