parser tests for interpolated strings

This commit is contained in:
Arnaud Le Blanc
2011-11-12 16:55:07 +01:00
parent 098634e0b7
commit 773fff59ed
+58
View File
@@ -121,4 +121,62 @@ class Twig_Tests_ExpressionParserTest extends PHPUnit_Framework_TestCase
),
);
}
/**
* @dataProvider getTestsForString
*/
public function testStringExpression($template, $expected)
{
$env = new Twig_Environment(new Twig_Loader_String(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
$stream = $env->tokenize($template, 'index');
$parser = new Twig_Parser($env);
$this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr'));
}
public function getTestsForString()
{
return array(
array(
'{{ "foo" }}', new Twig_Node_Expression_Constant('foo', 1),
),
array(
'{{ "foo #{bar}" }}', new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Constant('foo ', 1),
new Twig_Node_Expression_Name('bar', 1),
1
),
),
array(
'{{ "foo #{bar} baz" }}', new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Constant('foo ', 1),
new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Name('bar', 1),
new Twig_Node_Expression_Constant(' baz', 1),
1
),
1
),
),
array(
'{{ "foo #{"foo #{bar} baz"} baz" }}', new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Constant('foo ', 1),
new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Constant('foo ', 1),
new Twig_Node_Expression_Binary_Concat(
new Twig_Node_Expression_Name('bar', 1),
new Twig_Node_Expression_Constant(' baz', 1),
1
),
1
),
new Twig_Node_Expression_Constant(' baz', 1),
1
),
1
),
),
);
}
}