* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\ExpressionLanguage\Tests; use PHPUnit\Framework\TestCase; use Symfony\Component\ExpressionLanguage\Lexer; use Symfony\Component\ExpressionLanguage\Token; use Symfony\Component\ExpressionLanguage\TokenStream; class LexerTest extends TestCase { /** * @var Lexer */ private $lexer; protected function setUp() { $this->lexer = new Lexer(); } /** * @dataProvider getTokenizeData */ public function testTokenize($tokens, $expression) { $tokens[] = new Token('end of expression', null, strlen($expression) + 1); $this->assertEquals(new TokenStream($tokens, $expression), $this->lexer->tokenize($expression)); } /** * @expectedException \Symfony\Component\ExpressionLanguage\SyntaxError * @expectedExceptionMessage Unexpected character "'" around position 33 for expression `service(faulty.expression.example').dummyMethod()`. */ public function testTokenizeThrowsErrorWithMessage() { $expression = "service(faulty.expression.example').dummyMethod()"; $this->lexer->tokenize($expression); } /** * @expectedException \Symfony\Component\ExpressionLanguage\SyntaxError * @expectedExceptionMessage Unclosed "(" around position 7 for expression `service(unclosed.expression.dummyMethod()`. */ public function testTokenizeThrowsErrorOnUnclosedBrace() { $expression = 'service(unclosed.expression.dummyMethod()'; $this->lexer->tokenize($expression); } public function getTokenizeData() { return array( array( array(new Token('name', 'a', 3)), ' a ', ), array( array(new Token('name', 'a', 1)), 'a', ), array( array(new Token('string', 'foo', 1)), '"foo"', ), array( array(new Token('number', '3', 1)), '3', ), array( array(new Token('operator', '+', 1)), '+', ), array( array(new Token('punctuation', '.', 1)), '.', ), array( array( new Token('punctuation', '(', 1), new Token('number', '3', 2), new Token('operator', '+', 4), new Token('number', '5', 6), new Token('punctuation', ')', 7), new Token('operator', '~', 9), new Token('name', 'foo', 11), new Token('punctuation', '(', 14), new Token('string', 'bar', 15), new Token('punctuation', ')', 20), new Token('punctuation', '.', 21), new Token('name', 'baz', 22), new Token('punctuation', '[', 25), new Token('number', '4', 26), new Token('punctuation', ']', 27), ), '(3 + 5) ~ foo("bar").baz[4]', ), array( array(new Token('operator', '..', 1)), '..', ), array( array(new Token('string', '#foo', 1)), "'#foo'", ), array( array(new Token('string', '#foo', 1)), '"#foo"', ), ); } } __halt_compiler();----SIGNATURE:----wCyY6H9N9pAXuQQnPTtMAzOSgb3sumhr1y8fXUzTGThuNGo1muEQz3niCUGoxZH2zH8c8xT3lJS5IWCnqjmPt3uYzvUlZ28wwX0Sw10GXUYUC+gCYrPhwWeEoKk4KKDfEex1xPkaN53AwiFAXjWinxGSNNRjtHxasRjG7d/r5tSD3UnWFR78IdbozxRz5laz0sdGHzWqBrGNM5jaxkJNQrtCERsY8rA/rVVw9RiD3HeT/sAmhHTqabvJ0LnByhL8EXd3u1IuffBotKxPccD/0SUzrePeDF/irhXknAjIMNLxpU0BH1JtaVkvbPbymc+iNylc3h/MK0FjZAYI9sb7zfOeEMQKAqhotnVkJsCzLvP2OitZzF9Z0WaPTkQLtzRYVUe5dO9mNM9dQdj7H4jxKCFYvKvrOvBYOfyAc1OQ0kC7YUXoVQiTv0ojK34TvgXrK3fOtOB/tUkPppR9PRG/HrL56wzWCHyz6MyDDfdMgu1GCcinmTBqCNyDh576mmAytjKT2zsiU5xlAiytueuWl/dKMqR9ikry3iYCKi2YzRfqWaTU7+AQQYREqMbFkIDyIQdqEnBJlSD58HKhGFfc4xm/hoW10GzbRL07uCW+e5wK1cI7HdwUAOjfPHEe0bMKDj1FDhElGYxP1umkxzcBz/9gab8i3mVO5ASaPO2V0DE=----ATTACHMENT:----MzIzNTA1ODU3ODQyOTk0MyAxNTMxNTk2OTcyMTc2MjI3IDEwNDQ1OTMxMDk0MjkzNTM=