kekrozsak/vendor/twig/extensions/test/Twig/Tests/SimpleTokenParserTest.php
2012-07-23 17:09:03 +02:00

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