import zend xmlreader tests

Esse commit está contido em:
Paul Tarjan
2013-04-23 16:20:35 -07:00
commit de Sara Golemon
commit c3901f775f
39 arquivos alterados com 665 adições e 1 exclusões
+22
Ver Arquivo
@@ -0,0 +1,22 @@
<?php
/* $Id$ */
$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
<books><book>test</book></books>';
$reader = new XMLReader();
$reader->XML($xmlstring);
$reader->read();
echo $reader->readInnerXml();
echo "\n";
$reader->close();
$reader = new XMLReader();
$reader->XML($xmlstring);
$reader->read();
echo $reader->readOuterXml();
echo "\n";
$reader->close();
?>
===DONE===
@@ -0,0 +1,3 @@
<book>test</book>
<books><book>test</book></books>
===DONE===
+39
Ver Arquivo
@@ -0,0 +1,39 @@
<?php
/* $Id$ */
$xml =<<<EOF
<?xml version="1.0" encoding="UTF-8" ?>
<items>
<item>123</item>
<item>456</item>
</items>
EOF;
$reader = new XMLReader();
$reader->XML($xml);
$reader->setSchema(dirname(__FILE__) . '/013.xsd');
while($reader->read()) {
if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'item') {
$reader->read();
var_dump($reader->value);
}
}
$reader->close();
?>
===FAIL===
<?php
$xml =<<<EOF
<?xml version="1.0" encoding="UTF-8" ?>
<foo/>
EOF;
$reader = new XMLReader();
$reader->XML($xml);
$reader->setSchema(dirname(__FILE__) . '/013.xsd');
while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
$reader->close();
?>
===DONE===
@@ -0,0 +1,5 @@
string(3) "123"
string(3) "456"
===FAIL===
HipHop Warning: %a
===DONE===
@@ -0,0 +1,19 @@
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE root [
<!ELEMENT root ANY>
<!ENTITY x "y">
]>
<root>&x;</root>
XML;
$reader = new XMLReader;
$reader->XML( $xml, NULL, LIBXML_NOENT);
while ( $reader->read() ) {
echo "{$reader->nodeType}, {$reader->name}, {$reader->value}\n";
}
$reader->close();
?>
@@ -0,0 +1,4 @@
10, root,
1, root,
3, #text, y
15, root,
+25
Ver Arquivo
@@ -0,0 +1,25 @@
<?php
$basexml = '<?xml version="1.0" encoding="UTF-8"?>
<books><book>base book</book></books>';
$xmlstring = '<?xml version="1.0" encoding="UTF-8"?>
<books><book>new book</book></books>';
$dom = new DOMDocument();
$dom->loadXML($basexml);
$reader = new XMLReader();
$reader->XML($xmlstring);
while ($reader->read()) {
if ($reader->localName == "book") {
$node = $reader->expand($dom);
if ($node->ownerDocument) {
echo $node->ownerDocument->documentElement->firstChild->textContent . "\n";
}
break;
}
}
$reader->close();
?>
===DONE===
@@ -0,0 +1,2 @@
base book
===DONE===
+18
Ver Arquivo
@@ -0,0 +1,18 @@
<?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===
@@ -0,0 +1,4 @@
books
books
HipHop Warning: %a
===DONE===
+30
Ver Arquivo
@@ -0,0 +1,30 @@
<?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";
}
$reader->close();
unlink($filename);
touch($filename);
$reader = new XMLReader();
$reader->open($filename);
$reader->close();
unlink($filename);
?>
===DONE===
@@ -0,0 +1,4 @@
HipHop Warning: %a
books
books
===DONE===
+71
Ver Arquivo
@@ -0,0 +1,71 @@
<?php
/* $Id$ */
$filename = dirname(__FILE__) . '/_003.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";
}
}
}
$reader->close();
unlink($filename);
?>
===DONE===
@@ -0,0 +1,7 @@
num: 1
idx: 2
num: 1
idx: 2
num: 1
idx: 2
===DONE===
+30
Ver Arquivo
@@ -0,0 +1,30 @@
<?php
/* $Id$ */
$filename = dirname(__FILE__) . '/_004.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();
}
}
}
}
$reader->close();
unlink($filename);
?>
===DONE===
@@ -0,0 +1,8 @@
books
book
Attribute Name: num
Attribute Value: 1
Attribute Name: idx
Attribute Value: 2
#text
===DONE===
+29
Ver Arquivo
@@ -0,0 +1,29 @@
<?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===
@@ -0,0 +1,2 @@
ok
===DONE===
+28
Ver Arquivo
@@ -0,0 +1,28 @@
<?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===
@@ -0,0 +1,2 @@
ok
===DONE===
+46
Ver Arquivo
@@ -0,0 +1,46 @@
<?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===
@@ -0,0 +1,4 @@
file relaxNG: ok
string relaxNG: ok
HipHop Warning: %a
===DONE===
+62
Ver Arquivo
@@ -0,0 +1,62 @@
<?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 = rawurlencode(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";
}
$reader->close();
unlink($file);
$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE LIST SYSTEM "file:///' . $dtdfile. '">
<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===
@@ -0,0 +1,3 @@
file DTD: ok
string DTD: ok
===DONE===
+20
Ver Arquivo
@@ -0,0 +1,20 @@
<?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===
@@ -0,0 +1,2 @@
book 2
===DONE===
+19
Ver Arquivo
@@ -0,0 +1,19 @@
<?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===
@@ -0,0 +1,2 @@
prefix:books 12isbn
===DONE===
+2
Ver Arquivo
@@ -0,0 +1,2 @@
<!ELEMENT foo EMPTY>
<!ATTLIST foo bar CDATA '' baz CDATA ''>
+58
Ver Arquivo
@@ -0,0 +1,58 @@
<?php
/* $Id$ */
$xmlstring =<<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<foo bar=""/>
EOF;
$reader = new XMLReader();
$reader->XML($xmlstring);
$reader->read();
var_dump($reader->getAttribute('bar'));
var_dump($reader->getAttribute('baz'));
$reader->close();
$xmlstring =<<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo SYSTEM "012.dtd">
<foo bar=""/>
EOF;
$xmlstring = str_replace('012.dtd', dirname(__FILE__).'/012.dtd', $xmlstring);
if (DIRECTORY_SEPARATOR == '\\') {
$xmlstring = str_replace('\\',"/", $xmlstring);
}
$reader = new XMLReader();
$reader->XML($xmlstring);
$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
var_dump($reader->getAttribute('bar'));
var_dump($reader->getAttribute('baz'));
$reader->close();
echo "\nUsing URI:\n";
$reader = new XMLReader();
$file = dirname(__FILE__) . '/012.xml';
if (DIRECTORY_SEPARATOR == '\\') {
$file = str_replace('\\',"/", $file);
}
$reader->open($file);
//$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
var_dump($reader->getAttribute('bar'));
var_dump($reader->getAttribute('baz'));
$reader->close();
$reader = new XMLReader();
$reader->open(dirname(__FILE__) . '/012.xml');
$reader->setParserProperty(XMLReader::DEFAULTATTRS, true);
while($reader->read() && $reader->nodeType != XMLReader::ELEMENT);
var_dump($reader->getAttribute('bar'));
var_dump($reader->getAttribute('baz'));
$reader->close();
?>
===DONE===
@@ -0,0 +1,11 @@
string(0) ""
NULL
string(0) ""
string(0) ""
Using URI:
string(0) ""
NULL
string(0) ""
string(0) ""
===DONE===
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo SYSTEM "012.dtd">
<foo bar=""/>
@@ -0,0 +1,16 @@
<?php
class Test extends XMLReader
{
private $testArr = array();
public function __construct()
{
$this->testArr[] = 1;
var_dump($this->testArr);
}
}
$t = new test;
echo "Done\n";
?>
@@ -0,0 +1,5 @@
array(1) {
[0]=>
int(1)
}
Done
@@ -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)>
@@ -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>
@@ -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>
@@ -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>
+10 -1
Ver Arquivo
@@ -116,7 +116,6 @@ no_import = (
'/ext/posix',
'/ext/spl',
'/ext/sqlite3',
'/ext/xmlreader',
'/ext/xmlwriter',
'/ext/zlib',
@@ -224,6 +223,12 @@ other_files = (
'/ext-soap-soap12/soap12-test.inc',
'/ext-soap-soap12/soap12-test.wsdl',
'/ext-xml/xmltest.xml',
'/ext-xmlreader/012.dtd',
'/ext-xmlreader/012.xml',
'/ext-xmlreader/dtdexample.dtd',
'/ext-xmlreader/relaxNG.rng',
'/ext-xmlreader/relaxNG2.rng',
'/ext-xmlreader/relaxNG3.rng',
'/tests/quicktester.inc',
)
@@ -394,6 +399,10 @@ def walk(filename, source):
test = test.replace("testfile.bz2", "bug51997.bz2")
if 'ext-bz2/with_files.php' in full_dest_filename:
test = test.replace("testfile.bz2", "with_files.bz2")
if 'ext-xmlreader/003.php' in full_dest_filename:
test = test.replace("_002.xml", "_003.xml")
if 'ext-xmlreader/004.php' in full_dest_filename:
test = test.replace("_002.xml", "_004.xml")
file(full_dest_filename, 'w').write(test)