* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\CssSelector\Tests\Parser; use PHPUnit\Framework\TestCase; use Symfony\Component\CssSelector\Parser\Token; use Symfony\Component\CssSelector\Parser\TokenStream; class TokenStreamTest extends TestCase { public function testGetNext() { $stream = new TokenStream(); $stream->push($t1 = new Token(Token::TYPE_IDENTIFIER, 'h1', 0)); $stream->push($t2 = new Token(Token::TYPE_DELIMITER, '.', 2)); $stream->push($t3 = new Token(Token::TYPE_IDENTIFIER, 'title', 3)); $this->assertSame($t1, $stream->getNext()); $this->assertSame($t2, $stream->getNext()); $this->assertSame($t3, $stream->getNext()); } public function testGetPeek() { $stream = new TokenStream(); $stream->push($t1 = new Token(Token::TYPE_IDENTIFIER, 'h1', 0)); $stream->push($t2 = new Token(Token::TYPE_DELIMITER, '.', 2)); $stream->push($t3 = new Token(Token::TYPE_IDENTIFIER, 'title', 3)); $this->assertSame($t1, $stream->getPeek()); $this->assertSame($t1, $stream->getNext()); $this->assertSame($t2, $stream->getPeek()); $this->assertSame($t2, $stream->getPeek()); $this->assertSame($t2, $stream->getNext()); } public function testGetNextIdentifier() { $stream = new TokenStream(); $stream->push(new Token(Token::TYPE_IDENTIFIER, 'h1', 0)); $this->assertEquals('h1', $stream->getNextIdentifier()); } public function testFailToGetNextIdentifier() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\CssSelector\Exception\SyntaxErrorException'); $stream = new TokenStream(); $stream->push(new Token(Token::TYPE_DELIMITER, '.', 2)); $stream->getNextIdentifier(); } public function testGetNextIdentifierOrStar() { $stream = new TokenStream(); $stream->push(new Token(Token::TYPE_IDENTIFIER, 'h1', 0)); $this->assertEquals('h1', $stream->getNextIdentifierOrStar()); $stream->push(new Token(Token::TYPE_DELIMITER, '*', 0)); $this->assertNull($stream->getNextIdentifierOrStar()); } public function testFailToGetNextIdentifierOrStar() { $this->{method_exists($this, $_ = 'expectException') ? $_ : 'setExpectedException'}('Symfony\Component\CssSelector\Exception\SyntaxErrorException'); $stream = new TokenStream(); $stream->push(new Token(Token::TYPE_DELIMITER, '.', 2)); $stream->getNextIdentifierOrStar(); } public function testSkipWhitespace() { $stream = new TokenStream(); $stream->push($t1 = new Token(Token::TYPE_IDENTIFIER, 'h1', 0)); $stream->push($t2 = new Token(Token::TYPE_WHITESPACE, ' ', 2)); $stream->push($t3 = new Token(Token::TYPE_IDENTIFIER, 'h1', 3)); $stream->skipWhitespace(); $this->assertSame($t1, $stream->getNext()); $stream->skipWhitespace(); $this->assertSame($t3, $stream->getNext()); } } __halt_compiler();----SIGNATURE:----lvMzAM6MT64oJwnmqh57CTlum1FwZf3YkufhCwnjvu1MBi9y9+3XHVigoPVQJ9Do5575m46+DpXcPMOy0HPlc7unZiGzdoqIFQnYoDOICmwyfyo/ZFue4GEraaacI+F2XBmP2qZXT8H/GF6f7s9/61LemWqQ+l0MUUb8bpFZ1q3fb4L4dSaVciEMh4HyEQ5fKQFGM3z1QN4raKzbbZ9AEuaJJvbvBNVpjubj9WTsCyrCcqtGmO5tKJSexxp2kw1vZ1b6edvo5ItSckQRmU4UZl5AcEoQgB60Fdo5H4i++xkod3sijBndsFWSzpsrl13mJREmRXh9l8roSS6PNsqS+BKWhuekhE5nFU/Mu+ExPt1+aD3mHqBm9K2h1cO52t+aHiV0thfYsASIKQQ3sdSuVVDFT9686PTK8t6+sjjlKHiRuJZm5ojmT4vNmom12BX0Z8GasQRx8FwPpohhUKPbTvFZ5QED2TWDx/7mzRcXUfTx/YmB9QKdFZFBq8vtWyj6LCc3i6tLdLPd75SGF/3o4qF3E//AobKioHBON7LpilVf3u4wNecu2jtJtnsQF/28QeMcsX8Mm/AY1G4ANZVe9kf5A8sKMjOyPkVTWYPzwx9XrPSMue2hsz8+AbGfXp1Wq4IM6mRhanMoYu/RaXWVKR/3fVb8t1jThlfhcMtE4Pw=----ATTACHMENT:----OTg0MDM3MTU2NDM5MjcxNCAxNTc0NDA3MDcyMDE2MDE4IDY1MTEwNzkzMDM1NDQ5ODg=