assertEquals('foo', $stream->getFilename()); $this->assertEquals('{{ foo }}', $stream->getSource()); $this->assertEquals('foo', $stream->getSourceContext()->getName()); $this->assertEquals('{{ foo }}', $stream->getSourceContext()->getCode()); } public function testNext() { $stream = new TokenStream(self::$tokens); $repr = []; while (!$stream->isEOF()) { $token = $stream->next(); $repr[] = $token->getValue(); } $this->assertEquals('1, 2, 3, 4, 5, 6, 7', implode(', ', $repr), '->next() advances the pointer and returns the current token'); } /** * @expectedException \Twig\Error\SyntaxError * @expectedExceptionMessage Unexpected end of template */ public function testEndOfTemplateNext() { $stream = new TokenStream([ new Token(Token::BLOCK_START_TYPE, 1, 1), ]); while (!$stream->isEOF()) { $stream->next(); } } /** * @expectedException \Twig\Error\SyntaxError * @expectedExceptionMessage Unexpected end of template */ public function testEndOfTemplateLook() { $stream = new TokenStream([ new Token(Token::BLOCK_START_TYPE, 1, 1), ]); while (!$stream->isEOF()) { $stream->look(); $stream->next(); } } }