113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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_SimpleTokenParserTest extends PHPUnit_Framework_TestCase
 | 
						|
{
 | 
						|
    /**
 | 
						|
     * @dataProvider getTests
 | 
						|
     */
 | 
						|
    public function testParseGrammar($str, $grammar)
 | 
						|
    {
 | 
						|
        $this->assertEquals($grammar, Twig_Extensions_SimpleTokenParser::parseGrammar($str), '::parseGrammar() parses a grammar');
 | 
						|
    }
 | 
						|
 | 
						|
    public function testParseGrammarExceptions()
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            Twig_Extensions_SimpleTokenParser::parseGrammar('<foo:foo>');
 | 
						|
            $this->fail();
 | 
						|
        } catch (Exception $e) {
 | 
						|
            $this->assertEquals('Twig_Error_Runtime', get_class($e));
 | 
						|
        }
 | 
						|
 | 
						|
        try {
 | 
						|
            Twig_Extensions_SimpleTokenParser::parseGrammar('<foo:foo');
 | 
						|
            $this->fail();
 | 
						|
        } catch (Exception $e) {
 | 
						|
            $this->assertEquals('Twig_Error_Runtime', get_class($e));
 | 
						|
        }
 | 
						|
 | 
						|
        try {
 | 
						|
            Twig_Extensions_SimpleTokenParser::parseGrammar('<foo:foo> (with');
 | 
						|
            $this->fail();
 | 
						|
        } catch (Exception $e) {
 | 
						|
            $this->assertEquals('Twig_Error_Runtime', get_class($e));
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public function getTests()
 | 
						|
    {
 | 
						|
        return array(
 | 
						|
            array('', new Twig_Extensions_Grammar_Tag()),
 | 
						|
            array('const', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Constant('const')
 | 
						|
            )),
 | 
						|
            array('   const   ', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Constant('const')
 | 
						|
            )),
 | 
						|
            array('<expr>', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr')
 | 
						|
            )),
 | 
						|
            array('<expr:expression>', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr')
 | 
						|
            )),
 | 
						|
            array('   <expr:expression>   ', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr')
 | 
						|
            )),
 | 
						|
            array('<nb:number>', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Number('nb')
 | 
						|
            )),
 | 
						|
            array('<bool:boolean>', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Boolean('bool')
 | 
						|
            )),
 | 
						|
            array('<content:body>', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Body('content')
 | 
						|
            )),
 | 
						|
            array('<expr:expression> [with <arguments:array>]', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr'),
 | 
						|
                new Twig_Extensions_Grammar_Optional(
 | 
						|
                    new Twig_Extensions_Grammar_Constant('with'),
 | 
						|
                    new Twig_Extensions_Grammar_Array('arguments')
 | 
						|
                )
 | 
						|
            )),
 | 
						|
            array('  <expr:expression>   [  with   <arguments:array> ]  ', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr'),
 | 
						|
                new Twig_Extensions_Grammar_Optional(
 | 
						|
                    new Twig_Extensions_Grammar_Constant('with'),
 | 
						|
                    new Twig_Extensions_Grammar_Array('arguments')
 | 
						|
                )
 | 
						|
            )),
 | 
						|
            array('<expr:expression> [with <arguments:array> [or <optional:expression>]]', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr'),
 | 
						|
                new Twig_Extensions_Grammar_Optional(
 | 
						|
                    new Twig_Extensions_Grammar_Constant('with'),
 | 
						|
                    new Twig_Extensions_Grammar_Array('arguments'),
 | 
						|
                    new Twig_Extensions_Grammar_Optional(
 | 
						|
                        new Twig_Extensions_Grammar_Constant('or'),
 | 
						|
                        new Twig_Extensions_Grammar_Expression('optional')
 | 
						|
                    )
 | 
						|
                )
 | 
						|
            )),
 | 
						|
            array('<expr:expression> [with <arguments:array> [, <optional:expression>]]', new Twig_Extensions_Grammar_Tag(
 | 
						|
                new Twig_Extensions_Grammar_Expression('expr'),
 | 
						|
                new Twig_Extensions_Grammar_Optional(
 | 
						|
                    new Twig_Extensions_Grammar_Constant('with'),
 | 
						|
                    new Twig_Extensions_Grammar_Array('arguments'),
 | 
						|
                    new Twig_Extensions_Grammar_Optional(
 | 
						|
                        new Twig_Extensions_Grammar_Constant(',', Twig_Token::PUNCTUATION_TYPE),
 | 
						|
                        new Twig_Extensions_Grammar_Expression('optional')
 | 
						|
                    )
 | 
						|
                )
 | 
						|
            )),
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 |