diff options
author | Anatol Belski <ab@php.net> | 2015-05-29 21:16:56 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2015-05-29 21:16:56 +0200 |
commit | 5683b6fa3962f483a407ca17d49397b203ed4145 (patch) | |
tree | cb8ab75f98544ed9cdd452130c85df6a2942417c /ext/simplexml/tests | |
parent | c4e9651b587e1ebcf3e2de7a2d3d586c0cc3e0c4 (diff) | |
download | php-git-5683b6fa3962f483a407ca17d49397b203ed4145.tar.gz |
Refactored the fix for bug #66084, by cmb@php.net
Diffstat (limited to 'ext/simplexml/tests')
-rw-r--r-- | ext/simplexml/tests/bug61335.phpt | 19 | ||||
-rw-r--r-- | ext/simplexml/tests/bug62639.phpt | 63 | ||||
-rw-r--r-- | ext/simplexml/tests/bug67116.phpt | 93 | ||||
-rw-r--r-- | ext/simplexml/tests/bug67572.phpt | 33 | ||||
-rw-r--r-- | ext/simplexml/tests/bug69169.phpt | 70 | ||||
-rw-r--r-- | ext/simplexml/tests/bug69491.phpt | 20 |
6 files changed, 298 insertions, 0 deletions
diff --git a/ext/simplexml/tests/bug61335.phpt b/ext/simplexml/tests/bug61335.phpt new file mode 100644 index 0000000000..d2b9477ceb --- /dev/null +++ b/ext/simplexml/tests/bug61335.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #61335 - Access to array node returns wrong truth value +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php +$rec1 = simplexml_load_string("<foo><bar>aa</bar>\n</foo>"); +$rec2 = simplexml_load_string("<foo><bar>aa</bar></foo>"); + +if ($rec1->bar[0]) echo "NONEMPTY1\n"; +if ($rec1->bar[0] . "") echo "NONEMPTY2\n"; +if ($rec2->bar[0]) echo "NONEMPTY3\n"; +?> +--EXPECT-- +NONEMPTY1 +NONEMPTY2 +NONEMPTY3 diff --git a/ext/simplexml/tests/bug62639.phpt b/ext/simplexml/tests/bug62639.phpt new file mode 100644 index 0000000000..4a4e157b76 --- /dev/null +++ b/ext/simplexml/tests/bug62639.phpt @@ -0,0 +1,63 @@ +--TEST-- +Bug #62639 (XML structure broken) +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php + +class A extends SimpleXMLElement +{ +} + +$xml1 = <<<XML +<?xml version="1.0"?> +<a> + <b> + <c> + <value attr="Some Attr">Some Value</value> + </c> + </b> +</a> +XML; + +$a1 = new A($xml1); + +foreach ($a1->b->c->children() as $key => $value) { + var_dump($value); +} + +$xml2 = <<<XML +<?xml version="1.0"?> +<a> + <b> + <c><value attr="Some Attr">Some Value</value></c> + </b> +</a> +XML; + +$a2 = new A($xml2); + +foreach ($a2->b->c->children() as $key => $value) { + var_dump($value); +}?> +--EXPECT-- +object(A)#2 (2) { + ["@attributes"]=> + array(1) { + ["attr"]=> + string(9) "Some Attr" + } + [0]=> + string(10) "Some Value" +} +object(A)#3 (2) { + ["@attributes"]=> + array(1) { + ["attr"]=> + string(9) "Some Attr" + } + [0]=> + string(10) "Some Value" +}
\ No newline at end of file diff --git a/ext/simplexml/tests/bug67116.phpt b/ext/simplexml/tests/bug67116.phpt new file mode 100644 index 0000000000..774e43c99b --- /dev/null +++ b/ext/simplexml/tests/bug67116.phpt @@ -0,0 +1,93 @@ +--TEST-- +Bug #67116 (Inconsistent parsing of Nodes w/o linefeed) +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php + +$xml = <<<XML +<?xml version="1.0" encoding="UTF-8"?> +<aa> + <bs> + <b>b</b> + </bs> + <cs><c>b</c></cs> + <ds><d id="d"></d></ds> + <es> + <e id="e"></e> + </es> + <fs><f id="f"></f><f id="f"></f></fs> +</aa> +XML; +$sxe = simplexml_load_string($xml); +print_r($sxe); + +?> +--EXPECT-- +SimpleXMLElement Object +( + [bs] => SimpleXMLElement Object + ( + [b] => b + ) + + [cs] => SimpleXMLElement Object + ( + [c] => b + ) + + [ds] => SimpleXMLElement Object + ( + [d] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [id] => d + ) + + ) + + ) + + [es] => SimpleXMLElement Object + ( + [e] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [id] => e + ) + + ) + + ) + + [fs] => SimpleXMLElement Object + ( + [f] => Array + ( + [0] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [id] => f + ) + + ) + + [1] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [id] => f + ) + + ) + + ) + + ) + +) diff --git a/ext/simplexml/tests/bug67572.phpt b/ext/simplexml/tests/bug67572.phpt new file mode 100644 index 0000000000..4631f16142 --- /dev/null +++ b/ext/simplexml/tests/bug67572.phpt @@ -0,0 +1,33 @@ +--TEST-- +Bug #67572 - SimpleXMLElement not parsing \n correctly +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php +$foo = 'bar'; +print "regular string ... "; +var_dump(empty($foo)); + +$xml = simplexml_load_string("<xml><something>somevalue</something></xml>"); +$xml2 = simplexml_load_string("<xml>\n<something>somevalue</something>\n</xml>"); + +foreach($xml as $key => $value) { + print "$key = $value ... "; + var_dump(empty($value)); + var_dump($value == false); +} + +foreach($xml2 as $key => $value) { + print "$key = $value ... "; + var_dump(empty($value)); + var_dump($value == false); +} +?> +--EXPECT-- +regular string ... bool(false) +something = somevalue ... bool(false) +bool(false) +something = somevalue ... bool(false) +bool(false) diff --git a/ext/simplexml/tests/bug69169.phpt b/ext/simplexml/tests/bug69169.phpt new file mode 100644 index 0000000000..08cf299290 --- /dev/null +++ b/ext/simplexml/tests/bug69169.phpt @@ -0,0 +1,70 @@ +--TEST-- +Bug #69169 (simplexml_load_string parse wrongly when xml given in one row) +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php +$a = '<?xml version="1.0" encoding="UTF-8"?> +<root a="b"> + <row b="y"> + <item s="t" /> + </row> + <row p="c"> + <item y="n" /> + </row> +</root>'; +$b = str_replace(array("\n", "\r", "\t"), "", $a); +$simple_xml = simplexml_load_string($b); +print_r($simple_xml); +?> +--EXPECT-- +SimpleXMLElement Object +( + [@attributes] => Array + ( + [a] => b + ) + + [row] => Array + ( + [0] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [b] => y + ) + + [item] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [s] => t + ) + + ) + + ) + + [1] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [p] => c + ) + + [item] => SimpleXMLElement Object + ( + [@attributes] => Array + ( + [y] => n + ) + + ) + + ) + + ) + +) diff --git a/ext/simplexml/tests/bug69491.phpt b/ext/simplexml/tests/bug69491.phpt new file mode 100644 index 0000000000..b48a40bf95 --- /dev/null +++ b/ext/simplexml/tests/bug69491.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #69491 (simplexml doesn't correctly parse empty nodes on same line as another node) +--SKIPIF-- +<?php +if (!extension_loaded("simplexml")) die("skip SimpleXML not available"); +?> +--FILE-- +<?php +var_dump(simplexml_load_string('<a> + <b><c/></b> +</a>'));?> +--EXPECT-- +object(SimpleXMLElement)#1 (1) { + ["b"]=> + object(SimpleXMLElement)#2 (1) { + ["c"]=> + object(SimpleXMLElement)#3 (0) { + } + } +} |