* * 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:----NeDyB7LFoGwFgSSeGA81B8bQQvEEvRBBtPCCtaUrqhksYURGY6LvujK2Oj6AR4RUTdvdP7nyqDKB+8rSrVLudLnYBdBDG7r1r4D7LiGnx8blcI2ia0XRSyAdgPTwgZX+Zt1ghZVZa8AqNeJOTeUSzov+vr23HcQ0OwZIbeC9GRXnYKOyIggjw57pHe6cgQ8trVUzhffaw8kOOKFbJl70KQKzxC8AeIsbFiBu7zg7qzAorO+prQvHTGx2uRvSw9ao3uqphL+aX+fsSH1R+fXQID8snqJmSmAGzqLCYsU4h1Nvugg65nwIkQKasr6gfb94fUaVxheezpGkusAvMMcrBH185DdiuUTDVFwfLXacQ9yMk/ArlRLWCRZOLI+DNp+G1cqkStp6rf56vjH999mJlBUDp78foFrNCEJuWo0ismCHx4qO44IyPwoY4BtSJVnVcb+8HhU3kCLmEiyzR3QkVh2H5vWbh3RZM4nGA4fyQf8Krc64pVhas67tnlckDYMQmPhPOhTYnQfQPTHP0iAXtgQ19MpyD1HqNMZomVMswK0Az/KnUD44iWPiD9Ytvd2KEAhhyvdutx9sNqlxnM6j5kc0pJnD3aSg1bCOOOmUGg1VBZHFm4eVBMsH3QbZboc7Ci9uPPOY6zQqfqXwCyZuy0m8JKlRl0CdKEFGnFj/VZU=----ATTACHMENT:----ODcwMTI5MjA5NjM1OTE3NyAyNTQ0MTY1MDg0MjI5NDY3IDQwMDUwOTc0MTU5NDI3Njg=