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')
|
||
|
)
|
||
|
)
|
||
|
)),
|
||
|
);
|
||
|
}
|
||
|
}
|