Viewing file: EmulativeTest.php (4.48 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace PhpParser\Lexer;
use PhpParser\LexerTest; use PhpParser\Parser\Tokens;
require_once __DIR__ . '/../LexerTest.php';
class EmulativeTest extends LexerTest { protected function getLexer(array $options = array()) { return new Emulative($options); }
/** * @dataProvider provideTestReplaceKeywords */ public function testReplaceKeywords($keyword, $expectedToken) { $lexer = $this->getLexer(); $lexer->startLexing('<?php ' . $keyword);
$this->assertSame($expectedToken, $lexer->getNextToken()); $this->assertSame(0, $lexer->getNextToken()); }
/** * @dataProvider provideTestReplaceKeywords */ public function testNoReplaceKeywordsAfterObjectOperator($keyword) { $lexer = $this->getLexer(); $lexer->startLexing('<?php ->' . $keyword);
$this->assertSame(Tokens::T_OBJECT_OPERATOR, $lexer->getNextToken()); $this->assertSame(Tokens::T_STRING, $lexer->getNextToken()); $this->assertSame(0, $lexer->getNextToken()); }
public function provideTestReplaceKeywords() { return array( // PHP 5.5 array('finally', Tokens::T_FINALLY), array('yield', Tokens::T_YIELD),
// PHP 5.4 array('callable', Tokens::T_CALLABLE), array('insteadof', Tokens::T_INSTEADOF), array('trait', Tokens::T_TRAIT), array('__TRAIT__', Tokens::T_TRAIT_C),
// PHP 5.3 array('__DIR__', Tokens::T_DIR), array('goto', Tokens::T_GOTO), array('namespace', Tokens::T_NAMESPACE), array('__NAMESPACE__', Tokens::T_NS_C), ); }
/** * @dataProvider provideTestLexNewFeatures */ public function testLexNewFeatures($code, array $expectedTokens) { $lexer = $this->getLexer(); $lexer->startLexing('<?php ' . $code);
foreach ($expectedTokens as $expectedToken) { list($expectedTokenType, $expectedTokenText) = $expectedToken; $this->assertSame($expectedTokenType, $lexer->getNextToken($text)); $this->assertSame($expectedTokenText, $text); } $this->assertSame(0, $lexer->getNextToken()); }
/** * @dataProvider provideTestLexNewFeatures */ public function testLeaveStuffAloneInStrings($code) { $stringifiedToken = '"' . addcslashes($code, '"\\') . '"';
$lexer = $this->getLexer(); $lexer->startLexing('<?php ' . $stringifiedToken);
$this->assertSame(Tokens::T_CONSTANT_ENCAPSED_STRING, $lexer->getNextToken($text)); $this->assertSame($stringifiedToken, $text); $this->assertSame(0, $lexer->getNextToken()); }
public function provideTestLexNewFeatures() { return array( array('yield from', array( array(Tokens::T_YIELD_FROM, 'yield from'), )), array("yield\r\nfrom", array( array(Tokens::T_YIELD_FROM, "yield\r\nfrom"), )), array('...', array( array(Tokens::T_ELLIPSIS, '...'), )), array('**', array( array(Tokens::T_POW, '**'), )), array('**=', array( array(Tokens::T_POW_EQUAL, '**='), )), array('??', array( array(Tokens::T_COALESCE, '??'), )), array('<=>', array( array(Tokens::T_SPACESHIP, '<=>'), )), array('0b1010110', array( array(Tokens::T_LNUMBER, '0b1010110'), )), array('0b1011010101001010110101010010101011010101010101101011001110111100', array( array(Tokens::T_DNUMBER, '0b1011010101001010110101010010101011010101010101101011001110111100'), )), array('\\', array( array(Tokens::T_NS_SEPARATOR, '\\'), )), array("<<<'NOWDOC'\nNOWDOC;\n", array( array(Tokens::T_START_HEREDOC, "<<<'NOWDOC'\n"), array(Tokens::T_END_HEREDOC, 'NOWDOC'), array(ord(';'), ';'), )), array("<<<'NOWDOC'\nFoobar\nNOWDOC;\n", array( array(Tokens::T_START_HEREDOC, "<<<'NOWDOC'\n"), array(Tokens::T_ENCAPSED_AND_WHITESPACE, "Foobar\n"), array(Tokens::T_END_HEREDOC, 'NOWDOC'), array(ord(';'), ';'), )), ); } }
|