+++ /dev/null
-<?php
-
-/*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * 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"',
- ),
- );
- }
-}