summaryrefslogtreecommitdiff
path: root/ext/xmlreader
diff options
context:
space:
mode:
authorPierre Joye <pajoye@php.net>2005-12-21 03:58:59 +0000
committerPierre Joye <pajoye@php.net>2005-12-21 03:58:59 +0000
commitf90214347e2ac0571c3766587de76265023eb489 (patch)
tree47a625d53ece4a87bc7652b48318fda446e767d7 /ext/xmlreader
parentd831a501f7666d66f043498e5b4995e5d77f04de (diff)
downloadphp-git-f90214347e2ac0571c3766587de76265023eb489.tar.gz
- MFH: add tests, ~70% coverage
Diffstat (limited to 'ext/xmlreader')
-rw-r--r--ext/xmlreader/tests/001.phpt29
-rw-r--r--ext/xmlreader/tests/002.phpt39
-rw-r--r--ext/xmlreader/tests/003.phpt83
-rw-r--r--ext/xmlreader/tests/004.phpt43
-rw-r--r--ext/xmlreader/tests/005.phpt37
-rw-r--r--ext/xmlreader/tests/006.phpt36
-rw-r--r--ext/xmlreader/tests/007.phpt57
-rw-r--r--ext/xmlreader/tests/008.phpt70
-rw-r--r--ext/xmlreader/tests/009.phpt28
-rw-r--r--ext/xmlreader/tests/010.phpt27
-rw-r--r--ext/xmlreader/tests/dtdexample.dtd8
-rw-r--r--ext/xmlreader/tests/relaxNG.rng11
-rw-r--r--ext/xmlreader/tests/relaxNG2.rng23
-rw-r--r--ext/xmlreader/tests/relaxNG3.rng8
14 files changed, 499 insertions, 0 deletions
diff --git a/ext/xmlreader/tests/001.phpt b/ext/xmlreader/tests/001.phpt
new file mode 100644
index 0000000000..ce9ade9618
--- /dev/null
+++ b/ext/xmlreader/tests/001.phpt
@@ -0,0 +1,29 @@
+--TEST--
+XMLReader: libxml2 XML Reader, string data
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books></books>';
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+// Only go through
+while ($reader->read()) {
+ echo $reader->name."\n";
+}
+$xmlstring = '';
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+?>
+===DONE===
+--EXPECTF--
+books
+books
+
+Warning: XMLReader::XML(): Empty string supplied as input in %s on line %d
+===DONE===
diff --git a/ext/xmlreader/tests/002.phpt b/ext/xmlreader/tests/002.phpt
new file mode 100644
index 0000000000..e04c6e8cd2
--- /dev/null
+++ b/ext/xmlreader/tests/002.phpt
@@ -0,0 +1,39 @@
+--TEST--
+XMLReader: libxml2 XML Reader, file data
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+$filename = dirname(__FILE__) . '/_002.xml';
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books></books>';
+file_put_contents($filename, $xmlstring);
+
+$reader = new XMLReader();
+if ($reader->open('')) exit();
+
+$reader = new XMLReader();
+if (!$reader->open($filename)) {
+ $reader->close();
+ exit();
+}
+
+// Only go through
+while ($reader->read()) {
+ echo $reader->name."\n";
+}
+unlink($filename);
+touch($filename);
+$reader = new XMLReader();
+$reader->open($filename);
+unlink($filename);
+
+?>
+===DONE===
+--EXPECTF--
+
+Warning: XMLReader::open(): Empty string supplied as input in %s on line %d
+books
+books
+===DONE===
diff --git a/ext/xmlreader/tests/003.phpt b/ext/xmlreader/tests/003.phpt
new file mode 100644
index 0000000000..3e32c7a193
--- /dev/null
+++ b/ext/xmlreader/tests/003.phpt
@@ -0,0 +1,83 @@
+--TEST--
+XMLReader: libxml2 XML Reader, attributes test
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+$filename = dirname(__FILE__) . '/_002.xml';
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books><book num="1" idx="2">book1</book></books>';
+file_put_contents($filename, $xmlstring);
+
+$reader = new XMLReader();
+if (!$reader->open($filename)) {
+ exit();
+}
+
+// Only go through
+while ($reader->read()) {
+ if ($reader->nodeType != XMLREADER::END_ELEMENT) {
+ if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) {
+ $attr = $reader->moveToFirstAttribute();
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ if ($reader->getAttribute($reader->name) == $reader->value) {
+ echo "1st attr (num) failed\n";
+ }
+
+
+ $attr = $reader->moveToNextAttribute();
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ if ($reader->getAttribute($reader->name) == $reader->value) {
+ echo "2nd attr (idx) failed\n";
+ }
+
+ // Named attribute
+ $attr = $reader->moveToAttribute('num');
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ if ($reader->getAttribute('num') == $reader->value) {
+ echo "attr num failed\n";
+ }
+
+ $attr = $reader->moveToAttribute('idx');
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ if ($reader->getAttribute('idx') == $reader->value) {
+ echo "attr idx failed\n";
+ }
+
+ // Numeric positions of attributes
+ $attr = $reader->moveToAttributeNo(0);
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ if ($reader->getAttributeNo(0) == $reader->value) {
+ echo "attr 0 failed\n";
+ }
+
+ $attr = $reader->moveToAttributeNo(1);
+ echo $reader->name . ": ";
+ echo $reader->value . "\n";
+
+ }
+ }
+}
+unlink($filename);
+?>
+===DONE===
+--EXPECT--
+num: 1
+idx: 2
+num: 1
+idx: 2
+num: 1
+idx: 2
+===DONE===
diff --git a/ext/xmlreader/tests/004.phpt b/ext/xmlreader/tests/004.phpt
new file mode 100644
index 0000000000..77c9777ba9
--- /dev/null
+++ b/ext/xmlreader/tests/004.phpt
@@ -0,0 +1,43 @@
+--TEST--
+XMLReader: libxml2 XML Reader, attributes test
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+$filename = dirname(__FILE__) . '/_002.xml';
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books><book num="1" idx="2">book1</book></books>';
+file_put_contents($filename, $xmlstring);
+
+$reader = new XMLReader();
+if (!$reader->open($filename)) {
+ exit();
+}
+
+while ($reader->read()) {
+ if ($reader->nodeType != XMLREADER::END_ELEMENT) {
+ echo $reader->name."\n";
+ if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) {
+ $attr = $reader->moveToFirstAttribute();
+ while ($attr) {
+ echo " Attribute Name: ".$reader->name."\n";
+ echo " Attribute Value: ".$reader->value."\n";
+ $attr = $reader->moveToNextAttribute();
+ }
+ }
+ }
+}
+unlink($filename);
+?>
+===DONE===
+--EXPECT--
+books
+book
+ Attribute Name: num
+ Attribute Value: 1
+ Attribute Name: idx
+ Attribute Value: 2
+#text
+===DONE===
diff --git a/ext/xmlreader/tests/005.phpt b/ext/xmlreader/tests/005.phpt
new file mode 100644
index 0000000000..e6fd02c9aa
--- /dev/null
+++ b/ext/xmlreader/tests/005.phpt
@@ -0,0 +1,37 @@
+--TEST--
+XMLReader: libxml2 XML Reader, parser property set/get
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books></books>';
+
+$reader = new XMLReader();
+
+$reader->XML($xmlstring);
+
+
+$a = $reader->setParserProperty(XMLReader::LOADDTD, false);
+$b = $reader->getParserProperty(XMLReader::LOADDTD);
+
+if (!$a && !$b) {
+ echo "ok\n";
+}
+
+$a = $reader->setParserProperty(XMLReader::SUBST_ENTITIES, true);
+$b = $reader->getParserProperty(XMLReader::SUBST_ENTITIES);
+
+if ($a && $b) {
+ echo "ok\n";
+}
+// Only go through
+while ($reader->read());
+$reader->close();
+?>
+===DONE===
+--EXPECT--
+ok
+===DONE===
diff --git a/ext/xmlreader/tests/006.phpt b/ext/xmlreader/tests/006.phpt
new file mode 100644
index 0000000000..ce9bb451af
--- /dev/null
+++ b/ext/xmlreader/tests/006.phpt
@@ -0,0 +1,36 @@
+--TEST--
+XMLReader: libxml2 XML Reader, moveToElement
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books><book num="1"></book><test /></books>';
+
+$reader = new XMLReader();
+
+$reader->XML($xmlstring);
+
+// 2 read to get on the 2nd node
+$reader->read();
+$reader->read();
+
+if ($reader->nodeType != XMLREADER::END_ELEMENT) {
+ if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) {
+ $attr = $reader->moveToFirstAttribute();
+ if ($reader->moveToElement()) {
+ if ($reader->name == 'book') {
+ echo "ok\n";
+ }
+ }
+ }
+}
+
+$reader->close();
+?>
+===DONE===
+--EXPECT--
+ok
+===DONE===
diff --git a/ext/xmlreader/tests/007.phpt b/ext/xmlreader/tests/007.phpt
new file mode 100644
index 0000000000..842f25e5f6
--- /dev/null
+++ b/ext/xmlreader/tests/007.phpt
@@ -0,0 +1,57 @@
+--TEST--
+XMLReader: libxml2 XML Reader, setRelaxNGSchema
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<TEI.2>hello</TEI.2>';
+$relaxngfile = dirname(__FILE__) . '/relaxNG.rng';
+$file = dirname(__FILE__) . '/__007.xml';
+file_put_contents($file, $xmlstring);
+
+$reader = new XMLReader();
+$reader->open($file);
+
+if ($reader->setRelaxNGSchema($relaxngfile)) {
+ while ($reader->read());
+}
+if ($reader->isValid()) {
+ print "file relaxNG: ok\n";
+} else {
+ print "file relaxNG: failed\n";
+}
+$reader->close();
+unlink($file);
+
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+if ($reader->setRelaxNGSchema($relaxngfile)) {
+ while ($reader->read());
+}
+if ($reader->isValid()) {
+ print "string relaxNG: ok\n";
+} else {
+ print "string relaxNG: failed\n";
+}
+
+$reader->close();
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+if ($reader->setRelaxNGSchema('')) {
+ echo 'failed';
+}
+$reader->close();
+?>
+===DONE===
+--EXPECTF--
+file relaxNG: ok
+string relaxNG: ok
+
+Warning: XMLReader::setRelaxNGSchema(): Schema data source is required in %s on line %d
+===DONE===
diff --git a/ext/xmlreader/tests/008.phpt b/ext/xmlreader/tests/008.phpt
new file mode 100644
index 0000000000..afd1f7cec3
--- /dev/null
+++ b/ext/xmlreader/tests/008.phpt
@@ -0,0 +1,70 @@
+--TEST--
+XMLReader: libxml2 XML Reader, DTD
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE LIST SYSTEM "dtdexample.dtd">
+<LIST>
+<MOVIE ID="x200338360">
+<TITLE>Move Title 1</TITLE>
+<ORGTITLE/><LOC>Location 1</LOC>
+<INFO/>
+</MOVIE>
+<MOVIE ID="m200338361">
+<TITLE>Move Title 2</TITLE>
+<ORGTITLE/>
+<LOC>Location 2</LOC>
+<INFO/>
+</MOVIE>
+</LIST>';
+
+$dtdfile = dirname(__FILE__) . '/dtdexample.dtd';
+$file = dirname(__FILE__) . '/__008.xml';
+file_put_contents($file, $xmlstring);
+
+
+$reader = new XMLReader();
+$reader->open($file);
+$reader->setParserProperty(XMLREADER::LOADDTD, TRUE);
+$reader->setParserProperty(XMLREADER::VALIDATE, TRUE);
+while($reader->read());
+if ($reader->isValid()) {
+ echo "file DTD: ok\n";
+}
+unlink($file);
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE LIST SYSTEM "file:///' . dirname(__FILE__). '/dtdexample.dtd">
+<LIST>
+<MOVIE ID="x200338360">
+<TITLE>Move Title 1</TITLE>
+<ORGTITLE/><LOC>Location 1</LOC>
+<INFO/>
+</MOVIE>
+<MOVIE ID="m200338361">
+<TITLE>Move Title 2</TITLE>
+<ORGTITLE/>
+<LOC>Location 2</LOC>
+<INFO/>
+</MOVIE>
+</LIST>';
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+$reader->setParserProperty(XMLREADER::LOADDTD, TRUE);
+$reader->setParserProperty(XMLREADER::VALIDATE, TRUE);
+while($reader->read());
+if ($reader->isValid()) {
+ echo "string DTD: ok\n";
+}
+?>
+===DONE===
+--EXPECTF--
+file DTD: ok
+string DTD: ok
+===DONE===
diff --git a/ext/xmlreader/tests/009.phpt b/ext/xmlreader/tests/009.phpt
new file mode 100644
index 0000000000..613ef678cb
--- /dev/null
+++ b/ext/xmlreader/tests/009.phpt
@@ -0,0 +1,28 @@
+--TEST--
+XMLReader: libxml2 XML Reader, next
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<books><book num="1"><test /></book><book num="2" /></books>';
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+// Only go through
+$reader->read();
+$reader->read();
+
+$reader->next();
+echo $reader->name;
+echo " ";
+echo $reader->getAttribute('num');
+echo "\n";
+?>
+===DONE===
+--EXPECTF--
+book 2
+===DONE===
diff --git a/ext/xmlreader/tests/010.phpt b/ext/xmlreader/tests/010.phpt
new file mode 100644
index 0000000000..a107c7441f
--- /dev/null
+++ b/ext/xmlreader/tests/010.phpt
@@ -0,0 +1,27 @@
+--TEST--
+XMLReader: libxml2 XML Reader, next
+--SKIPIF--
+<?php if (!extension_loaded("xmlreader")) print "skip"; ?>
+--FILE--
+<?php
+/* $Id$ */
+$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
+<prefix:books xmlns:prefix="uri" isbn="" prefix:isbn="12isbn">book1</prefix:books>';
+
+$reader = new XMLReader();
+$reader->XML($xmlstring);
+
+// Only go through
+$reader->read();
+$reader->read();
+
+$reader->next();
+echo $reader->name;
+echo " ";
+echo $reader->getAttributeNs('isbn', 'uri');
+echo "\n";
+?>
+===DONE===
+--EXPECTF--
+prefix:books 12isbn
+===DONE===
diff --git a/ext/xmlreader/tests/dtdexample.dtd b/ext/xmlreader/tests/dtdexample.dtd
new file mode 100644
index 0000000000..ce53f0bc18
--- /dev/null
+++ b/ext/xmlreader/tests/dtdexample.dtd
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!ELEMENT LIST (MOVIE+)>
+<!ELEMENT MOVIE (TITLE, ORGTITLE, LOC, INFO)>
+<!ATTLIST MOVIE ID ID #REQUIRED>
+<!ELEMENT TITLE (#PCDATA)>
+<!ELEMENT ORGTITLE (#PCDATA)>
+<!ELEMENT LOC (#PCDATA)>
+<!ELEMENT INFO (#PCDATA)>
diff --git a/ext/xmlreader/tests/relaxNG.rng b/ext/xmlreader/tests/relaxNG.rng
new file mode 100644
index 0000000000..f4357e04ef
--- /dev/null
+++ b/ext/xmlreader/tests/relaxNG.rng
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"
+ datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+<include href="relaxNG2.rng">
+<define name="TEI.prose"><ref name="INCLUDE"/></define>
+</include>
+</grammar>
+
+
+
diff --git a/ext/xmlreader/tests/relaxNG2.rng b/ext/xmlreader/tests/relaxNG2.rng
new file mode 100644
index 0000000000..4adae7b151
--- /dev/null
+++ b/ext/xmlreader/tests/relaxNG2.rng
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <start>
+ <ref name="TEI.2"/>
+ </start>
+ <define name="IGNORE">
+ <notAllowed/>
+ </define>
+ <define name="INCLUDE">
+ <empty/>
+ </define>
+
+
+ <include href="relaxNG3.rng"/>
+
+ <define name="TEI.2">
+ <element name="TEI.2">
+ <text/>
+ </element>
+ </define>
+
+</grammar> \ No newline at end of file
diff --git a/ext/xmlreader/tests/relaxNG3.rng b/ext/xmlreader/tests/relaxNG3.rng
new file mode 100644
index 0000000000..73e1eb6165
--- /dev/null
+++ b/ext/xmlreader/tests/relaxNG3.rng
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+
+ <define name="TEI.prose" combine="interleave">
+ <ref name="IGNORE"/>
+ </define>
+
+</grammar> \ No newline at end of file