diff options
Diffstat (limited to 'ext/xmlreader/tests')
26 files changed, 505 insertions, 19 deletions
diff --git a/ext/xmlreader/tests/002.phpt b/ext/xmlreader/tests/002.phpt index 6101d6cc48..b2d50731ee 100644 --- a/ext/xmlreader/tests/002.phpt +++ b/ext/xmlreader/tests/002.phpt @@ -4,7 +4,7 @@ XMLReader: libxml2 XML Reader, file data <?php if (!extension_loaded("xmlreader")) print "skip"; ?> --FILE-- <?php -$filename = dirname(__FILE__) . '/_002.xml'; +$filename = __DIR__ . '/_002.xml'; $xmlstring = '<?xml version="1.0" encoding="UTF-8"?> <books></books>'; file_put_contents($filename, $xmlstring); diff --git a/ext/xmlreader/tests/003-get-errors.phpt b/ext/xmlreader/tests/003-get-errors.phpt new file mode 100644 index 0000000000..9e5aa7e38f --- /dev/null +++ b/ext/xmlreader/tests/003-get-errors.phpt @@ -0,0 +1,77 @@ +--TEST-- +XMLReader: libxml2 XML Reader, Get an attribute, with invalid arguments +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1" idx="2">book1</book></books>'; +$filename = __DIR__ . '/003-get-errors.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find the book node + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + echo $reader->name . "\n"; + + $attr = $reader->moveToNextAttribute(); + var_dump($attr); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call with an empty string argument + $attr = $reader->getAttribute(''); + var_dump($attr); + // Ensure that node pointer has not changed position + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call by name for an attribute that doesn't exist + $attr = $reader->getAttribute('isbn'); + var_dump($attr); // NULL expected + // Ensure that node pointer has not changed position + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call by number for an attribute that doesn't exist + $attr = $reader->getAttributeNo(911); + var_dump($attr); // NULL expected + // Ensure that node pointer has not changed position + echo $reader->name . ": "; + echo $reader->value . "\n"; + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/003-get-errors.xml'); +?> +--EXPECTF-- +book +bool(true) +num: 1 + +Warning: XMLReader::getAttribute(): Argument cannot be an empty string in %s on line %d +bool(false) +num: 1 +NULL +num: 1 +NULL +num: 1 +===DONE=== diff --git a/ext/xmlreader/tests/003-mb.phpt b/ext/xmlreader/tests/003-mb.phpt index 905f8fd03e..6d3282e6a5 100644 --- a/ext/xmlreader/tests/003-mb.phpt +++ b/ext/xmlreader/tests/003-mb.phpt @@ -4,7 +4,7 @@ XMLReader: libxml2 XML Reader, attributes test <?php if (!extension_loaded("xmlreader")) print "skip"; ?> --FILE-- <?php -$filename = dirname(__FILE__) . '/私はガラスを食べられます_003.xml'; +$filename = __DIR__ . '/私はガラスを食べられます_003.xml'; $xmlstring = '<?xml version="1.0" encoding="UTF-8"?> <books><book num="1" idx="2">book1</book></books>'; diff --git a/ext/xmlreader/tests/003-move-errors.phpt b/ext/xmlreader/tests/003-move-errors.phpt new file mode 100644 index 0000000000..0f21a2747b --- /dev/null +++ b/ext/xmlreader/tests/003-move-errors.phpt @@ -0,0 +1,76 @@ +--TEST-- +XMLReader: libxml2 XML Reader, Move cursor to an attribute, with invalid arguments +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1" idx="2">book1</book></books>'; +$filename = __DIR__ . '/003-move-errors.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find the book node + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + echo $reader->name . "\n"; + + $attr = $reader->moveToNextAttribute(); + var_dump($attr); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call with an empty string argument + $attr = $reader->moveToAttribute(''); + var_dump($attr); + // Ensure that node pointer has not changed position + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call by name for an attribute that doesn't exist + $attr = $reader->moveToAttribute('isbn'); + var_dump($attr); + // Ensure that node pointer has not changed position + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Test for call by number for an attribute that doesn't exist + $attr = $reader->moveToAttributeNo(911); + var_dump($attr); + // Oddly, node pointer moves back to the element in this case + echo $reader->name . "\n"; + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/003-move-errors.xml'); +?> +--EXPECTF-- +book +bool(true) +num: 1 + +Warning: XMLReader::moveToAttribute(): Attribute Name is required in %s on line %d +bool(false) +num: 1 +bool(false) +num: 1 +bool(false) +book +===DONE=== diff --git a/ext/xmlreader/tests/003.phpt b/ext/xmlreader/tests/003.phpt index 3dc8caf55a..ae255220b3 100644 --- a/ext/xmlreader/tests/003.phpt +++ b/ext/xmlreader/tests/003.phpt @@ -4,7 +4,7 @@ XMLReader: libxml2 XML Reader, attributes test <?php if (!extension_loaded("xmlreader")) print "skip"; ?> --FILE-- <?php -$filename = dirname(__FILE__) . '/_003.xml'; +$filename = __DIR__ . '/_003.xml'; $xmlstring = '<?xml version="1.0" encoding="UTF-8"?> <books><book num="1" idx="2">book1</book></books>'; @@ -66,6 +66,9 @@ while ($reader->read()) { echo $reader->name . ": "; echo $reader->value . "\n"; + var_dump($reader->moveToAttributeNo(20)); + var_dump($reader->moveToAttribute('missing-attribute')); + var_dump($reader->moveToAttribute('')); } } } @@ -73,11 +76,16 @@ $reader->close(); unlink($filename); ?> ===DONE=== ---EXPECT-- +--EXPECTF-- num: 1 idx: 2 num: 1 idx: 2 num: 1 idx: 2 +bool(false) +bool(false) + +Warning: XMLReader::moveToAttribute(): Attribute Name is required in %s on line %d +bool(false) ===DONE=== diff --git a/ext/xmlreader/tests/004.phpt b/ext/xmlreader/tests/004.phpt index 9298945847..915a14bccf 100644 --- a/ext/xmlreader/tests/004.phpt +++ b/ext/xmlreader/tests/004.phpt @@ -4,7 +4,7 @@ XMLReader: libxml2 XML Reader, attributes test <?php if (!extension_loaded("xmlreader")) print "skip"; ?> --FILE-- <?php -$filename = dirname(__FILE__) . '/_004.xml'; +$filename = __DIR__ . '/_004.xml'; $xmlstring = '<?xml version="1.0" encoding="UTF-8"?> <books><book num="1" idx="2">book1</book></books>'; diff --git a/ext/xmlreader/tests/007.phpt b/ext/xmlreader/tests/007.phpt index acbb574721..88e8800054 100644 --- a/ext/xmlreader/tests/007.phpt +++ b/ext/xmlreader/tests/007.phpt @@ -6,8 +6,8 @@ XMLReader: libxml2 XML Reader, setRelaxNGSchema <?php $xmlstring = '<TEI.2>hello</TEI.2>'; -$relaxngfile = dirname(__FILE__) . '/relaxNG.rng'; -$file = dirname(__FILE__) . '/_007.xml'; +$relaxngfile = __DIR__ . '/relaxNG.rng'; +$file = __DIR__ . '/_007.xml'; file_put_contents($file, $xmlstring); $reader = new XMLReader(); diff --git a/ext/xmlreader/tests/008.phpt b/ext/xmlreader/tests/008.phpt index fd3da46184..ceb0972376 100644 --- a/ext/xmlreader/tests/008.phpt +++ b/ext/xmlreader/tests/008.phpt @@ -21,8 +21,8 @@ $xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?> </MOVIE> </LIST>'; -$dtdfile = rawurlencode(dirname(__FILE__)) . '/dtdexample.dtd'; -$file = dirname(__FILE__) . '/_008.xml'; +$dtdfile = rawurlencode(__DIR__) . '/dtdexample.dtd'; +$file = __DIR__ . '/_008.xml'; file_put_contents($file, $xmlstring); diff --git a/ext/xmlreader/tests/012.dtd b/ext/xmlreader/tests/012.dtd index b65412af0e..b65412af0e 100755..100644 --- a/ext/xmlreader/tests/012.dtd +++ b/ext/xmlreader/tests/012.dtd diff --git a/ext/xmlreader/tests/012.phpt b/ext/xmlreader/tests/012.phpt index 50b761c235..ba4455ade7 100644 --- a/ext/xmlreader/tests/012.phpt +++ b/ext/xmlreader/tests/012.phpt @@ -23,7 +23,7 @@ $xmlstring =<<<EOF <foo bar=""/> EOF; -$xmlstring = str_replace('012.dtd', dirname(__FILE__).'/012.dtd', $xmlstring); +$xmlstring = str_replace('012.dtd', __DIR__.'/012.dtd', $xmlstring); if (DIRECTORY_SEPARATOR == '\\') { $xmlstring = str_replace('\\',"/", $xmlstring); } @@ -37,7 +37,7 @@ $reader->close(); echo "\nUsing URI:\n"; $reader = new XMLReader(); -$file = dirname(__FILE__) . '/012.xml'; +$file = __DIR__ . '/012.xml'; if (DIRECTORY_SEPARATOR == '\\') { $file = str_replace('\\',"/", $file); } @@ -51,7 +51,7 @@ var_dump($reader->getAttribute('baz')); $reader->close(); $reader = new XMLReader(); -$reader->open(dirname(__FILE__) . '/012.xml'); +$reader->open(__DIR__ . '/012.xml'); $reader->setParserProperty(XMLReader::DEFAULTATTRS, true); while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); var_dump($reader->getAttribute('bar')); diff --git a/ext/xmlreader/tests/012.xml b/ext/xmlreader/tests/012.xml index 5012bd5eff..5012bd5eff 100755..100644 --- a/ext/xmlreader/tests/012.xml +++ b/ext/xmlreader/tests/012.xml diff --git a/ext/xmlreader/tests/013.phpt b/ext/xmlreader/tests/013.phpt index 09bef8df0c..bceccced6b 100644 --- a/ext/xmlreader/tests/013.phpt +++ b/ext/xmlreader/tests/013.phpt @@ -16,7 +16,7 @@ EOF; $reader = new XMLReader(); $reader->XML($xml); -$reader->setSchema(dirname(__FILE__) . '/013.xsd'); +$reader->setSchema(__DIR__ . '/013.xsd'); while($reader->read()) { if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'item') { $reader->read(); @@ -36,7 +36,7 @@ EOF; $reader = new XMLReader(); $reader->XML($xml); -$reader->setSchema(dirname(__FILE__) . '/013.xsd'); +$reader->setSchema(__DIR__ . '/013.xsd'); while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); $reader->close(); diff --git a/ext/xmlreader/tests/013.xsd b/ext/xmlreader/tests/013.xsd index 50b000b6fc..50b000b6fc 100755..100644 --- a/ext/xmlreader/tests/013.xsd +++ b/ext/xmlreader/tests/013.xsd diff --git a/ext/xmlreader/tests/014.phpt b/ext/xmlreader/tests/014.phpt new file mode 100644 index 0000000000..5969da62f2 --- /dev/null +++ b/ext/xmlreader/tests/014.phpt @@ -0,0 +1,51 @@ +--TEST-- +XMLReader: libxml2 XML Reader, read-only element values can not be modified +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1" idx="2">book1</book></books>'; +$filename = __DIR__ . '/_014.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find a node to try modifying + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + // Try to set the value of the element from book1 to movie1 + $reader->value = 'movie1'; + // Try to set the value of the first "num" attribute from "1" to "num attribute 1" + $attr = $reader->moveToFirstAttribute(); + $reader->value = 'num attribute 1'; + // Try to set the name of the first attribute from "num" to "number" + $reader->name = 'number'; + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/_014.xml'); +?> +--EXPECTF-- +Warning: main(): Cannot write to read-only property in %s on line %d + +Warning: main(): Cannot write to read-only property in %s on line %d + +Warning: main(): Cannot write to read-only property in %s on line %d +===DONE=== diff --git a/ext/xmlreader/tests/015-get-errors.phpt b/ext/xmlreader/tests/015-get-errors.phpt new file mode 100644 index 0000000000..06f7eef53b --- /dev/null +++ b/ext/xmlreader/tests/015-get-errors.phpt @@ -0,0 +1,49 @@ +--TEST-- +XMLReader: libxml2 XML Reader, Move cursor to a named attribute within a namespace, with invalid arguments +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books xmlns:ns1="http://www.ns1.namespace.org/" xmlns:ns2="http://www.ns2.namespace.org/"><book ns1:num="1" ns2:idx="2" ns1:idx="3" ns2:isbn="4">book1</book></books>'; +$filename = __DIR__ . '/015-get-errors.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find the book node + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + $attr = $reader->moveToNextAttribute(); + + // Test for missing namespace argument + $attr = $reader->getAttributeNs('idx', null); + var_dump($attr); + echo $reader->name . ": "; + echo $reader->value . "\n"; + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/015-get-errors.xml'); +?> +--EXPECTF-- +Warning: XMLReader::getAttributeNs(): Attribute Name and Namespace URI cannot be empty in %s on line %d +bool(false) +ns1:num: 1 +===DONE=== diff --git a/ext/xmlreader/tests/015-move-errors.phpt b/ext/xmlreader/tests/015-move-errors.phpt new file mode 100644 index 0000000000..ab2472258f --- /dev/null +++ b/ext/xmlreader/tests/015-move-errors.phpt @@ -0,0 +1,42 @@ +--TEST-- +XMLReader: libxml2 XML Reader, Move cursor to a named attribute within a namespace, with invalid arguments +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books xmlns:ns1="http://www.ns1.namespace.org/" xmlns:ns2="http://www.ns2.namespace.org/"><book ns1:num="1" ns2:idx="2" ns1:idx="3" ns2:isbn="4">book1</book></books>'; +$filename = __DIR__ . '/015-move-errors.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find the book node + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + // Test for missing namespace argument + $attr = $reader->moveToAttributeNs('idx', null); + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/015-move-errors.xml'); +?> +--EXPECTF-- +Warning: XMLReader::moveToAttributeNs(): Attribute Name and Namespace URI cannot be empty in %s on line %d +===DONE=== diff --git a/ext/xmlreader/tests/015.phpt b/ext/xmlreader/tests/015.phpt new file mode 100644 index 0000000000..b60d1395c8 --- /dev/null +++ b/ext/xmlreader/tests/015.phpt @@ -0,0 +1,66 @@ +--TEST-- +XMLReader: libxml2 XML Reader, Move cursor to a named attribute within a namespace +--CREDITS-- +Mark Baker mark@lange.demon.co.uk at the PHPNW2017 Conference for PHP Testfest 2017 +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +// Set up test data in a new file +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books xmlns:ns1="http://www.ns1.namespace.org/" xmlns:ns2="http://www.ns2.namespace.org/"><book ns1:num="1" ns2:idx="2" ns1:idx="3" ns2:isbn="4">book1</book></books>'; +$filename = __DIR__ . '/015.xml'; +file_put_contents($filename, $xmlstring); + +// Load test data into a new XML Reader +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit('XML could not be read'); +} + +// Parse the data +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + // Find the book node + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->name == 'book') { + $attr = $reader->moveToFirstAttribute(); + $attr = $reader->moveToAttributeNs('idx', 'http://www.ns1.namespace.org/'); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + $attr = $reader->moveToAttributeNs('idx', 'http://www.ns2.namespace.org/'); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + $attr = $reader->moveToAttributeNs('isbn', 'http://www.ns2.namespace.org/'); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + // Try moving to an attribute that doesn't exist + $attr = $reader->moveToAttributeNs('elephpant', 'http://www.ns2.namespace.org/'); + // That move should return a result of false, because there is no elephpant attribute (in any namespace) + if (!$attr) { + echo "Attribute does not exist\n"; + } + // Node pointer should still be aat the last valid node + echo $reader->name . ": "; + echo $reader->value . "\n"; + } + } +} + +// clean up +$reader->close(); +?> +===DONE=== +--CLEAN-- +<?php +unlink(__DIR__.'/015.xml'); +?> +--EXPECT-- +ns1:idx: 3 +ns2:idx: 2 +ns2:isbn: 4 +Attribute does not exist +ns2:isbn: 4 +===DONE=== diff --git a/ext/xmlreader/tests/bug42139.phpt b/ext/xmlreader/tests/bug42139.phpt index 424e8e75c1..a3efb59d0b 100644 --- a/ext/xmlreader/tests/bug42139.phpt +++ b/ext/xmlreader/tests/bug42139.phpt @@ -1,9 +1,7 @@ --TEST-- Bug #42139 (XMLReader option constants are broken using XML()) --SKIPIF-- -<?php if (!extension_loaded("xmlreader")) print "skip"; -if (LIBXML_VERSION < 20628) die("skip: libxml2 2.6.28+ required"); -?> +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> --FILE-- <?php diff --git a/ext/xmlreader/tests/bug70309.phpt b/ext/xmlreader/tests/bug70309.phpt index aa49051593..199ad5df5f 100644 --- a/ext/xmlreader/tests/bug70309.phpt +++ b/ext/xmlreader/tests/bug70309.phpt @@ -4,6 +4,7 @@ XMLReader: Bug #70309 XmlReader read generates extra output <?php if (substr(PHP_OS, 0, 3) != 'WIN') die('skip.. only for Windows'); ?> <?php if (!extension_loaded("xmlreader")) print "skip"; ?> <?php if (getenv("SKIP_SLOW_TESTS")) die("skip slow test"); ?> +<?php if (getenv("SKIP_ONLINE_TESTS")) die("skip online test"); ?> --FILE-- <?php diff --git a/ext/xmlreader/tests/bug71805.phpt b/ext/xmlreader/tests/bug71805.phpt index 3d1713ace5..6f54b1347a 100644 --- a/ext/xmlreader/tests/bug71805.phpt +++ b/ext/xmlreader/tests/bug71805.phpt @@ -5,8 +5,8 @@ XMLReader: Bug #71805 XML files can generate UTF-8 error even if they are UTF-8 --FILE-- <?php -TestXML(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'XMLReaderGood_bug71805.xml'); -TestXML(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'XMLReaderBad_bug71805.xml'); +TestXML(__DIR__ . DIRECTORY_SEPARATOR . 'XMLReaderGood_bug71805.xml'); +TestXML(__DIR__ . DIRECTORY_SEPARATOR . 'XMLReaderBad_bug71805.xml'); function TestXML($file) { $XR = new XMLReader; diff --git a/ext/xmlreader/tests/next_basic.phpt b/ext/xmlreader/tests/next_basic.phpt new file mode 100644 index 0000000000..e0663c23d3 --- /dev/null +++ b/ext/xmlreader/tests/next_basic.phpt @@ -0,0 +1,42 @@ +--TEST-- +XMLReader: next basic +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip XMLReader extension required"; ?> +--FILE-- +<?php + +$xml = '<?xml version="1.0" encoding="UTF-8"?><nodes><node1><sub /></node1> +<node2><sub /></node2><node3><sub /></node3><node4><sub /></node4></nodes>'; + +$reader = new XMLReader(); +$reader->read(); +$reader->next(); +$reader->close(); + +$reader->XML($xml); +$reader->read(); +$reader->read(); +echo $reader->name . PHP_EOL; +var_dump($reader->next('node3')); +echo $reader->name . PHP_EOL; +var_dump($reader->next()); +echo $reader->name . PHP_EOL; +var_dump($reader->next('node5')); +echo $reader->name . PHP_EOL; +var_dump($reader->next()); +echo $reader->name . PHP_EOL; +$reader->close(); + +?> +--EXPECTF-- +Warning: XMLReader::read(): Load Data before trying to read in %s on line %d + +Warning: XMLReader::next(): Load Data before trying to read in %s on line %d +node1 +bool(true) +node3 +bool(true) +node4 +bool(false) + +bool(false) diff --git a/ext/xmlreader/tests/open_error.phpt b/ext/xmlreader/tests/open_error.phpt new file mode 100644 index 0000000000..0199f509b6 --- /dev/null +++ b/ext/xmlreader/tests/open_error.phpt @@ -0,0 +1,13 @@ +--TEST-- +XMLReader: open error +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip XMLReader extension required"; ?> +--FILE-- +<?php +$reader = new XMLReader(); +var_dump($reader->open(__DIR__.'/missing-file.xml')); +$reader->close(); +?> +--EXPECTF-- +Warning: XMLReader::open(): Unable to open source data in %s on line %d +bool(false) diff --git a/ext/xmlreader/tests/readString_basic.phpt b/ext/xmlreader/tests/readString_basic.phpt new file mode 100644 index 0000000000..6f3f51dc02 --- /dev/null +++ b/ext/xmlreader/tests/readString_basic.phpt @@ -0,0 +1,16 @@ +--TEST-- +XMLReader: readString basic +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip XMLReader extension required"; ?> +--FILE-- +<?php + +$xml = '<?xml version="1.0" encoding="UTF-8"?><books><book>Book1</book><book>Book2</book></books>'; + +$reader = new XMLReader(); +$reader->xml($xml); +$reader->read(); +echo $reader->readString(); +?> +--EXPECT-- +Book1Book2 diff --git a/ext/xmlreader/tests/schema-empty.xsd b/ext/xmlreader/tests/schema-empty.xsd new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/ext/xmlreader/tests/schema-empty.xsd diff --git a/ext/xmlreader/tests/setParserProperty_error.phpt b/ext/xmlreader/tests/setParserProperty_error.phpt new file mode 100644 index 0000000000..755a4e4772 --- /dev/null +++ b/ext/xmlreader/tests/setParserProperty_error.phpt @@ -0,0 +1,18 @@ +--TEST-- +XMLReader: setParserProperty Error +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip XMLReader extension required"; ?> +--FILE-- +<?php + +$xml = '<?xml version="1.0" encoding="UTF-8"?><books><book>new book</book></books>'; + +$invalidProperty = -1; +$reader = new XMLReader(); +$reader->XML($xml); +var_dump($reader->setParserProperty(-1, true)); +$reader->close(); +?> +--EXPECTF-- +Warning: XMLReader::setParserProperty(): Invalid parser property in %s on line %d +bool(false) diff --git a/ext/xmlreader/tests/setSchema_error.phpt b/ext/xmlreader/tests/setSchema_error.phpt new file mode 100644 index 0000000000..31bd4d6e3e --- /dev/null +++ b/ext/xmlreader/tests/setSchema_error.phpt @@ -0,0 +1,29 @@ +--TEST-- +XMLReader: setSchema Error +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip XMLReader extension required"; ?> +--FILE-- +<?php + +$reader = new XMLReader(); +var_dump($reader->setSchema('')); +$reader->close(); + +$reader = new XMLReader(); +var_dump($reader->setSchema('schema-missing-file.xsd')); +$reader->close(); + +$reader = new XMLReader(); +var_dump($reader->setSchema('schema-empty.xsd')); +$reader->close(); +?> +--EXPECTF-- + +Warning: XMLReader::setSchema(): Schema data source is required in %s on line %d +bool(false) + +Warning: XMLReader::setSchema(): Unable to set schema. This must be set prior to reading or schema contains errors. in %s on line %d +bool(false) + +Warning: XMLReader::setSchema(): Unable to set schema. This must be set prior to reading or schema contains errors. in %s on line %d +bool(false) |