diff options
Diffstat (limited to 'test/HTML5/Parser/FileInputStreamTest.php')
-rw-r--r-- | test/HTML5/Parser/FileInputStreamTest.php | 322 |
1 files changed, 183 insertions, 139 deletions
diff --git a/test/HTML5/Parser/FileInputStreamTest.php b/test/HTML5/Parser/FileInputStreamTest.php index 4efcbe1..71dd828 100644 --- a/test/HTML5/Parser/FileInputStreamTest.php +++ b/test/HTML5/Parser/FileInputStreamTest.php @@ -3,133 +3,176 @@ namespace Masterminds\HTML5\Tests\Parser; use Masterminds\HTML5\Parser\FileInputStream; -class FileInputStreamTest extends \Masterminds\HTML5\Tests\TestCase { - - function testConstruct() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertInstanceOf('\Masterminds\HTML5\Parser\FileInputStream', $s); - } - - public function testNext() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $s->next(); - $this->assertEquals('!', $s->current()); - $s->next(); - $this->assertEquals('d', $s->current()); - } - - public function testKey() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals(0, $s->key()); - - $s->next(); - $this->assertEquals(1, $s->key()); - } - - public function testPeek() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals('!', $s->peek()); - - $s->next(); - $this->assertEquals('d', $s->peek()); - } - - public function testCurrent() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals('<', $s->current()); - - $s->next(); - $this->assertEquals('!', $s->current()); - - $s->next(); - $this->assertEquals('d', $s->current()); - } - - public function testColumnOffset() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - $this->assertEquals(0, $s->columnOffset()); - $s->next(); - $this->assertEquals(1, $s->columnOffset()); - $s->next(); - $this->assertEquals(2, $s->columnOffset()); - $s->next(); - $this->assertEquals(3, $s->columnOffset()); - - // Make sure we get to the second line - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); - $this->assertEquals(0, $s->columnOffset()); - - $s->next(); - $canary = $s->current(); // h - $this->assertEquals('h', $canary); - $this->assertEquals(1, $s->columnOffset()); - } - - public function testCurrentLine() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals(1, $s->currentLine()); - - // Make sure we get to the second line - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $this->assertEquals(2, $s->currentLine()); - - // Make sure we get to the third line - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); $s->next(); $s->next(); $s->next(); - $s->next(); - $this->assertEquals(3, $s->currentLine()); - } - - public function testRemainingChars() { - $text = file_get_contents(__DIR__ . '/FileInputStreamTest.html'); - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - $this->assertEquals($text, $s->remainingChars()); - - $text = substr(file_get_contents(__DIR__ . '/FileInputStreamTest.html'), 1); - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - $s->next(); // Pop one. - $this->assertEquals($text, $s->remainingChars()); - } - - public function testCharsUnitl() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals('', $s->charsUntil('<')); - // Pointer at '<', moves to ' ' - $this->assertEquals('<!doctype', $s->charsUntil(' ', 20)); - - // Pointer at ' ', moves to '>' - $this->assertEquals(' html', $s->charsUntil('>')); - - // Pointer at '>', moves to '\n'. - $this->assertEquals('>', $s->charsUntil("\n")); - - // Pointer at '\n', move forward then to the next'\n'. - $s->next(); - $this->assertEquals('<html lang="en">', $s->charsUntil("\n")); - - // Ony get one of the spaces. - $this->assertEquals("\n ", $s->charsUntil('<', 2)); - - // Get the other space. - $this->assertEquals(" ", $s->charsUntil('<')); - - // This should scan to the end of the file. - $text = "<head> +class FileInputStreamTest extends \Masterminds\HTML5\Tests\TestCase +{ + + public function testConstruct() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertInstanceOf('\Masterminds\HTML5\Parser\FileInputStream', $s); + } + + public function testNext() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $s->next(); + $this->assertEquals('!', $s->current()); + $s->next(); + $this->assertEquals('d', $s->current()); + } + + public function testKey() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals(0, $s->key()); + + $s->next(); + $this->assertEquals(1, $s->key()); + } + + public function testPeek() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals('!', $s->peek()); + + $s->next(); + $this->assertEquals('d', $s->peek()); + } + + public function testCurrent() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals('<', $s->current()); + + $s->next(); + $this->assertEquals('!', $s->current()); + + $s->next(); + $this->assertEquals('d', $s->current()); + } + + public function testColumnOffset() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + $this->assertEquals(0, $s->columnOffset()); + $s->next(); + $this->assertEquals(1, $s->columnOffset()); + $s->next(); + $this->assertEquals(2, $s->columnOffset()); + $s->next(); + $this->assertEquals(3, $s->columnOffset()); + + // Make sure we get to the second line + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $this->assertEquals(0, $s->columnOffset()); + + $s->next(); + $canary = $s->current(); // h + $this->assertEquals('h', $canary); + $this->assertEquals(1, $s->columnOffset()); + } + + public function testCurrentLine() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals(1, $s->currentLine()); + + // Make sure we get to the second line + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $this->assertEquals(2, $s->currentLine()); + + // Make sure we get to the third line + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $s->next(); + $this->assertEquals(3, $s->currentLine()); + } + + public function testRemainingChars() + { + $text = file_get_contents(__DIR__ . '/FileInputStreamTest.html'); + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + $this->assertEquals($text, $s->remainingChars()); + + $text = substr(file_get_contents(__DIR__ . '/FileInputStreamTest.html'), 1); + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + $s->next(); // Pop one. + $this->assertEquals($text, $s->remainingChars()); + } + + public function testCharsUnitl() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals('', $s->charsUntil('<')); + // Pointer at '<', moves to ' ' + $this->assertEquals('<!doctype', $s->charsUntil(' ', 20)); + + // Pointer at ' ', moves to '>' + $this->assertEquals(' html', $s->charsUntil('>')); + + // Pointer at '>', moves to '\n'. + $this->assertEquals('>', $s->charsUntil("\n")); + + // Pointer at '\n', move forward then to the next'\n'. + $s->next(); + $this->assertEquals('<html lang="en">', $s->charsUntil("\n")); + + // Ony get one of the spaces. + $this->assertEquals("\n ", $s->charsUntil('<', 2)); + + // Get the other space. + $this->assertEquals(" ", $s->charsUntil('<')); + + // This should scan to the end of the file. + $text = "<head> <meta charset=\"utf-8\"> <title>Test</title> </head> @@ -137,15 +180,16 @@ class FileInputStreamTest extends \Masterminds\HTML5\Tests\TestCase { <p>This is a test.</p> </body> </html>"; - $this->assertEquals($text, $s->charsUntil("\t")); - } - - public function testCharsWhile() { - $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); - - $this->assertEquals('<!', $s->charsWhile('!<')); - $this->assertEquals('', $s->charsWhile('>')); - $this->assertEquals('doctype', $s->charsWhile('odcyept')); - $this->assertEquals(' htm', $s->charsWhile('html ', 4)); - } -}
\ No newline at end of file + $this->assertEquals($text, $s->charsUntil("\t")); + } + + public function testCharsWhile() + { + $s = new FileInputStream(__DIR__ . '/FileInputStreamTest.html'); + + $this->assertEquals('<!', $s->charsWhile('!<')); + $this->assertEquals('', $s->charsWhile('>')); + $this->assertEquals('doctype', $s->charsWhile('odcyept')); + $this->assertEquals(' htm', $s->charsWhile('html ', 4)); + } +} |