saveHTML(); return $out; } public function testSaveHTML() { $html = 'test'; $dom = \HTML5::parse($html); $this->assertTrue($dom instanceof \DOMDocument, "Canary"); $ser = new \HTML5\Serializer($dom, FALSE); $out = $ser->saveHTML(); $this->assertTrue(count($out) >= count($html), 'Byte counts'); $this->assertRegExp('//', $out, 'Has DOCTYPE.'); $this->assertRegExp('/test<\/body>/', $out, 'Has body text.'); } public function testSave() { $html = 'test'; $dom = \HTML5::parse($html); $this->assertTrue($dom instanceof \DOMDocument, "Canary"); $ser = new \HTML5\Serializer($dom, FALSE); $out = fopen("php://temp", "w"); $ser->save($out); rewind($out); $res = stream_get_contents($out); $this->assertTrue(count($res) >= count($html)); } public function testElements() { // Should have content. $res = $this->cycle('
FOO
'); $this->assertRegExp('|
FOO
|', $res); // Should be empty $res = $this->cycle(''); $this->assertRegExp('||', $res); // Should have no closing tag. $res = $this->cycle('
'); $this->assertRegExp('|
|', $res); } public function testAttributes() { $res = $this->cycle('
FOO
'); $this->assertRegExp('|
FOO
|', $res); // XXX: Note that spec does NOT require attrs in the same order. $res = $this->cycle('
FOO
'); $this->assertRegExp('|
FOO
|', $res); $res = $this->cycle('
FOO
'); $this->assertRegExp('|
FOO
|', $res); } public function testPCData() { $res = $this->cycle('This is a test.'); $this->assertRegExp('|This is a test.|', $res); $res = $this->cycle('This is a test.'); // Check that newlines are there, but don't count spaces. $this->assertRegExp('|This\n\s*is\n\s*a\n\s*test.|', $res); $res = $this->cycle('This is a test.'); $this->assertRegExp('|This is a test.|', $res); } public function testUnescaped() { $res = $this->cycle(''); $this->assertRegExp('|2 < 1|', $res); $res = $this->cycle(''); $this->assertRegExp('|div>div>div|', $res); } public function testEntities() { $res = $this->cycle('Apples & bananas.'); $this->assertRegExp('|Apples & bananas.|', $res); } public function testComment() { $res = $this->cycle('ab'); $this->assertRegExp('||', $res); } // FAILS because the parser converts CDATA to a comment. Issue #2. public function testCDATA() { $res = $this->cycle('a a test. ]]>b'); $this->assertRegExp('| a test. ]]>|', $res); } }