From 34718c58884fe5e7d645e4bf12d9c39d77cc8b4d Mon Sep 17 00:00:00 2001 From: Technosophos Date: Mon, 15 Apr 2013 17:26:04 -0500 Subject: First shot at DOCTYPE parsing and testing. --- test/HTML5/Parser/TokenizerTest.php | 51 ++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) (limited to 'test/HTML5/Parser') diff --git a/test/HTML5/Parser/TokenizerTest.php b/test/HTML5/Parser/TokenizerTest.php index 26df4b5..349b713 100644 --- a/test/HTML5/Parser/TokenizerTest.php +++ b/test/HTML5/Parser/TokenizerTest.php @@ -17,7 +17,12 @@ class TokenizerTest extends \HTML5\Tests\TestCase { */ public function assertEventEquals($type, $expects, $event) { $this->assertEquals($type, $event['name'], "Event $type for " . print_r($event, TRUE)); - $this->assertEquals($expects, $event['data'][0], "Event $type should equal $expects: " . print_r($event, TRUE)); + if (is_array($expects)) { + $this->assertEquals($expects, $event['data'], "Event $type should equal $expects: " . print_r($event, TRUE)); + } + else { + $this->assertEquals($expects, $event['data'][0], "Event $type should equal $expects: " . print_r($event, TRUE)); + } } /** @@ -205,6 +210,50 @@ class TokenizerTest extends \HTML5\Tests\TestCase { } } + public function testDoctype() { + $good = array( + '' => array('html', 0, NULL, FALSE), + "" => array('html', 0, NULL, FALSE), + "" => array('html', 0, NULL, FALSE), + '' => array('html', EventStack::DOCTYPE_PUBLIC, 'foo bar', FALSE), + "" => array('html', EventStack::DOCTYPE_PUBLIC, 'foo bar', FALSE), + '' => array('html', EventStack::DOCTYPE_PUBLIC, 'foo bar', FALSE), + "" => array('html', EventStack::DOCTYPE_PUBLIC, 'foo bar', FALSE), + '' => array('html', EventStack::DOCTYPE_SYSTEM, 'foo bar', FALSE), + "" => array('html', EventStack::DOCTYPE_SYSTEM, 'foo bar', FALSE), + '' => array('html', EventStack::DOCTYPE_SYSTEM, 'foo/bar', FALSE), + "" => array('html', EventStack::DOCTYPE_SYSTEM, 'foo bar', FALSE), + ); + + foreach ($good as $test => $expects) { + $events = $this->parse($test); + $this->assertEquals(2, $events->depth(), "Counting events for '$test'"); + $this->assertEventEquals('doctype', $expects, $events->get(0)); + } + + $bad = array( + '' => array(NULL, EventStack::DOCTYPE_NONE, NULL, TRUE), + '' => array(NULL, EventStack::DOCTYPE_NONE, NULL, TRUE), + ' array('foo', EventStack::DOCTYPE_NONE, NULL, TRUE), + ' array('foo', EventStack::DOCTYPE_NONE, NULL, TRUE), + '' => array('foo', EventStack::DOCTYPE_NONE, NULL, TRUE), + '' => array('foo', EventStack::DOCTYPE_NONE, NULL, TRUE), + ' array('foo', EventStack::DOCTYPE_NONE, NULL, TRUE), + ' array('foo', EventStack::DOCTYPE_PUBLIC, NULL, TRUE), + '' => array('foo', EventStack::DOCTYPE_PUBLIC, NULL, TRUE), + ' array('foo', EventStack::DOCTYPE_SYSTEM, NULL, TRUE), + '' => array('foo', EventStack::DOCTYPE_SYSTEM, NULL, TRUE), + ' array('html', EventStack::DOCTYPE_SYSTEM, 'foo bar', TRUE), + '' => array('html', EventStack::DOCTYPE_SYSTEM, 'foo bar', TRUE), + ); + foreach ($bad as $test => $expects) { + $events = $this->parse($test); + $this->assertEquals(3, $events->depth(), "Counting events for '$test'"); + $this->assertEventError($events->get(0)); + $this->assertEventEquals('doctype', $expects, $events->get(1)); + } + } + public function testText() { $good = array( 'a
b', -- cgit v1.2.3