]> granicus.if.org Git - php/commitdiff
- Add new test
authorMarcus Boerger <helly@php.net>
Thu, 4 Nov 2004 22:07:18 +0000 (22:07 +0000)
committerMarcus Boerger <helly@php.net>
Thu, 4 Nov 2004 22:07:18 +0000 (22:07 +0000)
ext/spl/tests/iterator_015.phpt [new file with mode: 0755]

diff --git a/ext/spl/tests/iterator_015.phpt b/ext/spl/tests/iterator_015.phpt
new file mode 100755 (executable)
index 0000000..a617e64
--- /dev/null
@@ -0,0 +1,75 @@
+--TEST--
+SPL: RecursiveIteratorIterator and beginChildren/endChildren
+--FILE--
+<?php
+
+class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
+{
+       function hasChildren()
+       {
+               return is_array($this->current());
+       }
+       
+       function getChildren()
+       {
+               return new RecursiveArrayIterator($this->current());
+       }
+}
+
+class RecursiveArrayIteratorIterator extends RecursiveIteratorIterator
+{
+       function rewind()
+       {
+               echo "<ul>\n";
+               parent::rewind();
+       }
+       function beginChildren()
+       {
+               echo str_repeat('  ',$this->getDepth())."<ul>\n";
+       }
+
+       function endChildren()
+       {
+               echo str_repeat('  ',$this->getDepth()+1)."</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 RecursiveArrayIterator($arr);
+$rit = new RecursiveArrayIteratorIterator($obj);
+foreach($rit as $k=>$v)
+{
+       echo str_repeat('  ',$rit->getDepth()+1)."$k=>$v\n";
+}
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECTF--
+<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===