From d1ea5d11c015bbad698af0dd300eb658fa532c5e Mon Sep 17 00:00:00 2001 From: Matt Farina Date: Tue, 16 Apr 2013 21:40:35 -0400 Subject: Stubbed out the TraverserTest and moved the SerielizerTest to the Serielizer subdirectory. --- test/HTML5/Serializer/SerializerTest.php | 125 +++++++++++++++++++++++++++++++ test/HTML5/Serializer/TraverserTest.php | 10 +++ 2 files changed, 135 insertions(+) create mode 100644 test/HTML5/Serializer/SerializerTest.php create mode 100644 test/HTML5/Serializer/TraverserTest.php (limited to 'test/HTML5/Serializer') diff --git a/test/HTML5/Serializer/SerializerTest.php b/test/HTML5/Serializer/SerializerTest.php new file mode 100644 index 0000000..a06fd50 --- /dev/null +++ b/test/HTML5/Serializer/SerializerTest.php @@ -0,0 +1,125 @@ +saveHTML(); + + return $out; + } + + public function testSaveHTML() { + $html = 'test'; + + $dom = \HTML5::parse($html); + $this->assertTrue($dom instanceof \DOMDocument, "Canary"); + + $ser = new 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 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); + } +} diff --git a/test/HTML5/Serializer/TraverserTest.php b/test/HTML5/Serializer/TraverserTest.php new file mode 100644 index 0000000..c7e43d8 --- /dev/null +++ b/test/HTML5/Serializer/TraverserTest.php @@ -0,0 +1,10 @@ +