assertEquals($expectedLexer->current(), $resultLexer->current()); $expectedLexer->next(); $resultLexer->next(); } } public function testNext(): void { $expectedTokens = ['/', 'bookstore', '/', 'book', '[', 'price', '>', '35.00', ']']; $resultLexer = new Xpath\Lexer($expectedTokens); for ($i = 0; $i < \count($expectedTokens); $i++) { $this->assertEquals($expectedTokens[$i], $resultLexer->current()); $resultLexer->next(); } } public function testCount(): void { $resultLexer = new Xpath\Lexer([]); $this->assertCount(0, $resultLexer); $resultLexer = new Xpath\Lexer(['//', '*', '[', '@', 'id', '=', '"i"', ']']); $this->assertCount(8, $resultLexer); } public function testSeek(): void { $expectedTokens = ['name', '(', '"some_name"', ')']; $resultLexer = new Xpath\Lexer($expectedTokens); $this->assertEquals($expectedTokens[0], $resultLexer->current()); for ($i = 0; $i < \count($expectedTokens); $i++) { $resultLexer->seek($i); $this->assertEquals($expectedTokens[$i], $resultLexer->current()); } } public function testBack(): void { $expectedTokens = ['..', '/', 'contents', '/', 'child', '::', 'sections']; $resultLexer = new Xpath\Lexer($expectedTokens); for ($i = 0; $i < \count($expectedTokens); $i++) { $resultLexer->next(); } $resultLexer->prev(); $this->assertEquals($expectedTokens[\count($expectedTokens) - 1], $resultLexer->current()); } public function testIterate(): void { $expectedTokens = ['..', '/', 'contents', '/', 'child', '::', 'sections']; $index = 0; $resultLexer = new Xpath\Lexer($expectedTokens); foreach ($resultLexer as $resultToken) { $this->assertEquals($expectedTokens[$index], $resultToken); $this->assertEquals($index, $resultLexer->key()); $index++; } } public function testInsert(): void { $expectedTokens = ['//', '*', '[', '@', 'id', '=', '"i"', ']', '/', 'book']; $resultLexer = new Xpath\Lexer(['//', '*', '[', '@', 'id', '=', '"i"', ']']); $resultLexer->insert(['/', 'book'], 8); $this->assertCount(10, $resultLexer); $this->assertEquals($expectedTokens[8], $resultLexer->peek(8)); $this->assertEquals($expectedTokens[9], $resultLexer->peek(9)); } }