summaryrefslogtreecommitdiff
path: root/ext/spl/tests/iterator_016.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/tests/iterator_016.phpt')
-rw-r--r--ext/spl/tests/iterator_016.phpt76
1 files changed, 76 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_016.phpt b/ext/spl/tests/iterator_016.phpt
new file mode 100644
index 0000000..f231c6e
--- /dev/null
+++ b/ext/spl/tests/iterator_016.phpt
@@ -0,0 +1,76 @@
+--TEST--
+SPL: RecursiveIteratorIterator and beginChildren/endChildren
+--FILE--
+<?php
+
+class Menu extends ArrayObject
+{
+ function getIterator()
+ {
+ echo __METHOD__ . "\n";
+ return new RecursiveArrayIterator($this);
+ }
+}
+
+class MenuOutput extends RecursiveIteratorIterator
+{
+ function __construct(Menu $it)
+ {
+ parent::__construct($it);
+ }
+ function rewind()
+ {
+ echo "<ul>\n";
+ parent::rewind();
+ }
+ function beginChildren()
+ {
+ echo str_repeat(' ',$this->getDepth())."<ul>\n";
+ }
+
+ function endChildren()
+ {
+ echo str_repeat(' ',$this->getDepth())."</ul>\n";
+ }
+ function valid()
+ {
+ if (!parent::valid()) {
+ echo "<ul>\n";
+ return false;
+ }
+ return true;
+ }
+}
+
+$arr = array("a", array("ba", array("bba", "bbb"), array(array("bcaa"))), array("ca"), "d");
+$obj = new Menu($arr);
+$rit = new MenuOutput($obj);
+foreach($rit as $k=>$v)
+{
+ echo str_repeat(' ',$rit->getDepth()+1)."$k=>$v\n";
+}
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+Menu::getIterator
+<ul>
+ 0=>a
+ <ul>
+ 0=>ba
+ <ul>
+ 0=>bba
+ 1=>bbb
+ </ul>
+ <ul>
+ <ul>
+ 0=>bcaa
+ </ul>
+ </ul>
+ </ul>
+ <ul>
+ 0=>ca
+ </ul>
+ 3=>d
+<ul>
+===DONE===