]> granicus.if.org Git - php/commitdiff
working on test coverage for ext/dom, here's 17 more tests
authorKnut Urdalen <knut@php.net>
Tue, 28 Jun 2011 20:17:15 +0000 (20:17 +0000)
committerKnut Urdalen <knut@php.net>
Tue, 28 Jun 2011 20:17:15 +0000 (20:17 +0000)
17 files changed:
ext/dom/tests/DOMDocument_loadHTML_error1.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_loadHTML_error2.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidateSource_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidateSource_error1.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidateSource_error2.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidate_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidate_basic.rng [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidate_error1.phpt [new file with mode: 0644]
ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt [new file with mode: 0644]
ext/dom/tests/DOMImplementation_createDocumentType_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMImplementation_createDocument_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMImplementation_hasFeature_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMNode_C14NFile_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMNode_C14N_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMNode_getLineNo_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMNode_getNodePath_basic.phpt [new file with mode: 0644]
ext/dom/tests/DOMNode_insertBefore_error1.phpt [new file with mode: 0644]

diff --git a/ext/dom/tests/DOMDocument_loadHTML_error1.phpt b/ext/dom/tests/DOMDocument_loadHTML_error1.phpt
new file mode 100644 (file)
index 0000000..c7b5e61
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+DOMDocument::loadHTML() should fail if no parameter is given
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$doc = new DOMDocument();
+$doc->loadHTML();
+?>
+--EXPECTF--
+Warning: DOMDocument::loadHTML() expects exactly 1 parameter, 0 given in %s on line %d
diff --git a/ext/dom/tests/DOMDocument_loadHTML_error2.phpt b/ext/dom/tests/DOMDocument_loadHTML_error2.phpt
new file mode 100644 (file)
index 0000000..3167c01
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+DOMDocument::loadHTML() should fail if empty string provided as input
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$doc = new DOMDocument();
+$doc->loadHTML('');
+?>
+--EXPECTF--
+Warning: DOMDocument::loadHTML(): Empty string supplied as input in %s on line %d
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidateSource_basic.phpt b/ext/dom/tests/DOMDocument_relaxNGValidateSource_basic.phpt
new file mode 100644 (file)
index 0000000..93b9cf7
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+DOMDocument::relaxNGValidateSource()
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = <<< RNG
+<?xml version="1.0" encoding="UTF-8"?> 
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
+  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> 
+  <start> 
+    <element name="apple"> 
+      <element name="pear"> 
+        <data type="NCName"/> 
+      </element> 
+    </element> 
+  </start> 
+</grammar>
+RNG;
+
+$good_xml = <<< GOOD_XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear> 
+</apple>
+GOOD_XML;
+
+$doc = new DOMDocument();
+$doc->loadXML($good_xml);
+$result = $doc->relaxNGValidateSource($rng);
+var_dump($result);
+
+?>
+--EXPECTF--
+bool(true)
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidateSource_error1.phpt b/ext/dom/tests/DOMDocument_relaxNGValidateSource_error1.phpt
new file mode 100644 (file)
index 0000000..7da71a5
--- /dev/null
@@ -0,0 +1,41 @@
+--TEST--
+DOMDocument::relaxNGValidateSource() should fail if document doesn't validate
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = <<< RNG
+<?xml version="1.0" encoding="UTF-8"?> 
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
+  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> 
+  <start> 
+    <element name="apple"> 
+      <element name="pear"> 
+        <data type="NCName"/> 
+      </element> 
+    </element> 
+  </start> 
+</grammar>
+RNG;
+
+$bad_xml = <<< BAD_XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear> 
+  <pear>Pear</pear> 
+</apple>
+BAD_XML;
+
+$doc = new DOMDocument();
+$doc->loadXML($bad_xml);
+$result = $doc->relaxNGValidateSource($rng);
+var_dump($result);
+
+?>
+--EXPECTF--
+Warning: DOMDocument::relaxNGValidateSource(): Did not expect element pear there in %s on line %d
+bool(false)
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidateSource_error2.phpt b/ext/dom/tests/DOMDocument_relaxNGValidateSource_error2.phpt
new file mode 100644 (file)
index 0000000..d689934
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+DOMDocument::relaxNGValidateSource() should fail on invalid RNG schema
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = <<< RNG
+<?xml version="1.0" encoding="UTF-8"?> 
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
+  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+  <start>
+       <element name="apple">
+    </element>
+  </start>
+</grammar>
+RNG;
+
+$xml = <<< XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear>
+</apple>
+XML;
+
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$result = $doc->relaxNGValidateSource($rng);
+var_dump($result);
+
+?>
+--EXPECTF--
+Warning: DOMDocument::relaxNGValidateSource(): xmlRelaxNGParseElement: element has no content in %s on line %d
+
+Warning: DOMDocument::relaxNGValidateSource(): Invalid RelaxNG in %s on line %d
+bool(false)
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidate_basic.phpt b/ext/dom/tests/DOMDocument_relaxNGValidate_basic.phpt
new file mode 100644 (file)
index 0000000..76a6442
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+DOMDocument::relaxNGValidate()
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = dirname(__FILE__).'/DOMDocument_relaxNGValidate_basic.rng';
+$xml = <<< XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear> 
+</apple>
+XML;
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$result = $doc->relaxNGValidate($rng);
+var_dump($result);
+?>
+--EXPECTF--
+bool(true)
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidate_basic.rng b/ext/dom/tests/DOMDocument_relaxNGValidate_basic.rng
new file mode 100644 (file)
index 0000000..35e3518
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?> 
+<grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" 
+  datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> 
+  <start> 
+    <element name="apple"> 
+      <element name="pear"> 
+        <data type="NCName"/> 
+      </element> 
+    </element> 
+  </start> 
+</grammar>
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidate_error1.phpt b/ext/dom/tests/DOMDocument_relaxNGValidate_error1.phpt
new file mode 100644 (file)
index 0000000..82957c3
--- /dev/null
@@ -0,0 +1,26 @@
+--TEST--
+DOMDocument::relaxNGValidate() should fail if document doesn't validate
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = dirname(__FILE__).'/DOMDocument_relaxNGValidate_basic.rng';
+$xml = <<< XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear> 
+  <pear>Pear</pear> 
+</apple>
+XML;
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$result = $doc->relaxNGValidate($rng);
+var_dump($result);
+?>
+--EXPECTF--
+Warning: DOMDocument::relaxNGValidate(): Did not expect element pear there in %s on line %d
+bool(false)
diff --git a/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt b/ext/dom/tests/DOMDocument_relaxNGValidate_error2.phpt
new file mode 100644 (file)
index 0000000..8574921
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+DOMDocument::relaxNGValidate() should fail on invalid RelaxNG file source
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$rng = dirname(__FILE__).'/foo.rng';
+$xml = <<< XML
+<?xml version="1.0"?> 
+<apple> 
+  <pear>Pear</pear> 
+  <pear>Pear</pear> 
+</apple>
+XML;
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$result = $doc->relaxNGValidate($rng);
+var_dump($result);
+?>
+--EXPECTF--
+
diff --git a/ext/dom/tests/DOMImplementation_createDocumentType_basic.phpt b/ext/dom/tests/DOMImplementation_createDocumentType_basic.phpt
new file mode 100644 (file)
index 0000000..3b19ea4
--- /dev/null
@@ -0,0 +1,18 @@
+--TEST--
+DOMImplementation::createDocumentType()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$imp = new DOMImplementation();
+$doctype = $imp->createDocumentType("html", 
+       "-//W3C//DTD XHTML 1.0 Strict//EN", 
+       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd");
+$doc = $imp->createDocument(null, 'html', $doctype);
+echo $doc->saveHTML();
+?>
+--EXPECTF--
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html></html>
diff --git a/ext/dom/tests/DOMImplementation_createDocument_basic.phpt b/ext/dom/tests/DOMImplementation_createDocument_basic.phpt
new file mode 100644 (file)
index 0000000..78d20ae
--- /dev/null
@@ -0,0 +1,14 @@
+--TEST--
+DOMImplementation::createDocument()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$x = new DOMImplementation();
+$doc = $x->createDocument(null, 'html');
+echo $doc->saveHTML();
+?>
+--EXPECTF--
+<html></html>
diff --git a/ext/dom/tests/DOMImplementation_hasFeature_basic.phpt b/ext/dom/tests/DOMImplementation_hasFeature_basic.phpt
new file mode 100644 (file)
index 0000000..b53e912
--- /dev/null
@@ -0,0 +1,15 @@
+--TEST--
+DOMImplementation::hasFeature()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$imp = new DOMImplementation();
+var_dump($imp->hasFeature('Core', '1.0'));
+var_dump($imp->hasFeature('XML', '2.0'));
+?>
+--EXPECTF--
+bool(true)
+bool(true)
diff --git a/ext/dom/tests/DOMNode_C14NFile_basic.phpt b/ext/dom/tests/DOMNode_C14NFile_basic.phpt
new file mode 100644 (file)
index 0000000..6af6e3e
--- /dev/null
@@ -0,0 +1,38 @@
+--TEST--
+DOMNode::C14NFile()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$xml = <<< XML
+<?xml version="1.0" ?>
+<books>
+ <book>
+  <title>The Grapes of Wrath</title>
+  <author>John Steinbeck</author>
+ </book>
+ <book>
+  <title>The Pearl</title>
+  <author>John Steinbeck</author>
+ </book>
+</books>
+XML;
+
+$output = dirname(__FILE__).'/DOMNode_C14NFile_basic.tmp';
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$node = $doc->getElementsByTagName('title')->item(0);
+var_dump($node->C14NFile($output));
+$content = file_get_contents($output);
+var_dump($content);
+?>
+--CLEAN--
+<?php
+$output = dirname(__FILE__).'/DOMNode_C14NFile_basic.tmp';
+unlink($output);
+?>
+--EXPECTF--
+int(34)
+string(34) "<title>The Grapes of Wrath</title>"
diff --git a/ext/dom/tests/DOMNode_C14N_basic.phpt b/ext/dom/tests/DOMNode_C14N_basic.phpt
new file mode 100644 (file)
index 0000000..52a47a1
--- /dev/null
@@ -0,0 +1,29 @@
+--TEST--
+DOMNode::C14N()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$xml = <<< XML
+<?xml version="1.0" ?>
+<books>
+ <book>
+  <title>The Grapes of Wrath</title>
+  <author>John Steinbeck</author>
+ </book>
+ <book>
+  <title>The Pearl</title>
+  <author>John Steinbeck</author>
+ </book>
+</books>
+XML;
+
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+$node = $doc->getElementsByTagName('title')->item(0);
+var_dump($node->C14N());
+?>
+--EXPECTF--
+string(34) "<title>The Grapes of Wrath</title>"
diff --git a/ext/dom/tests/DOMNode_getLineNo_basic.phpt b/ext/dom/tests/DOMNode_getLineNo_basic.phpt
new file mode 100644 (file)
index 0000000..3f57681
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+DOMNode::getLineNo()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$file = dirname(__FILE__).'/book.xml';
+$doc = new DOMDocument();
+$doc->load($file);
+$nodes = $doc->getElementsByTagName('title');
+foreach($nodes as $node) {
+       var_dump($node->getLineNo());
+}
+?>
+--EXPECTF--
+int(4)
+int(8)
diff --git a/ext/dom/tests/DOMNode_getNodePath_basic.phpt b/ext/dom/tests/DOMNode_getNodePath_basic.phpt
new file mode 100644 (file)
index 0000000..7c14ffa
--- /dev/null
@@ -0,0 +1,19 @@
+--TEST--
+DOMNode::getNodePath()
+--SKIPIF--
+<?php
+include('skipif.inc');
+?>
+--FILE--
+<?php
+$file = dirname(__FILE__).'/book.xml';
+$doc = new DOMDocument();
+$doc->load($file);
+$nodes = $doc->getElementsByTagName('title');
+foreach($nodes as $node) {
+       var_dump($node->getNodePath());
+}
+?>
+--EXPECTF--
+string(20) "/books/book[1]/title"
+string(20) "/books/book[2]/title"
diff --git a/ext/dom/tests/DOMNode_insertBefore_error1.phpt b/ext/dom/tests/DOMNode_insertBefore_error1.phpt
new file mode 100644 (file)
index 0000000..d655479
--- /dev/null
@@ -0,0 +1,24 @@
+--TEST--
+DOMNode::insertBefore() should fail if node belongs to another document
+--CREDITS--
+Knut Urdalen <knut@php.net>
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$doc1 = new DOMDocument();
+$doc2 = new DOMDocument();
+
+$node_in_doc1 = $doc1->createElement("foo");
+$node_in_doc2 = $doc2->createElement("bar");
+
+try {
+       $node_in_doc2->insertBefore($node_in_doc1);
+} catch(DOMException $e) {
+       echo $e->getMessage();
+}
+
+?>
+--EXPECTF--
+Wrong Document Error