diff options
Diffstat (limited to 'ext/xmlreader/tests')
-rw-r--r-- | ext/xmlreader/tests/003-get-errors.phpt | 77 | ||||
-rw-r--r-- | ext/xmlreader/tests/003-move-errors.phpt | 76 | ||||
-rw-r--r--[-rwxr-xr-x] | ext/xmlreader/tests/012.dtd | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | ext/xmlreader/tests/012.xml | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | ext/xmlreader/tests/013.xsd | 0 | ||||
-rw-r--r-- | ext/xmlreader/tests/014.phpt | 51 | ||||
-rw-r--r-- | ext/xmlreader/tests/015-get-errors.phpt | 49 | ||||
-rw-r--r-- | ext/xmlreader/tests/015-move-errors.phpt | 42 | ||||
-rw-r--r-- | ext/xmlreader/tests/015.phpt | 66 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug42139.phpt | 4 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug70309.phpt | 1 |
11 files changed, 363 insertions, 3 deletions
diff --git a/ext/xmlreader/tests/003-get-errors.phpt b/ext/xmlreader/tests/003-get-errors.phpt new file mode 100644 index 0000000000..61addaca15 --- /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 = dirname(__FILE__) . '/_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 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__.'/_014.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-move-errors.phpt b/ext/xmlreader/tests/003-move-errors.phpt new file mode 100644 index 0000000000..641324b54e --- /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 = dirname(__FILE__) . '/_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 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__.'/_014.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/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.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.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..cdc041a38e --- /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 = dirname(__FILE__) . '/_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..0eeed280da --- /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 = dirname(__FILE__) . '/_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 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__.'/_014.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..b54a243070 --- /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 = dirname(__FILE__) . '/_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 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__.'/_014.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..4945927740 --- /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 = dirname(__FILE__) . '/_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 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__.'/_014.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 |