]> granicus.if.org Git - php/commitdiff
- Commite manually if not conatined in bunch commit
authorMarcus Boerger <helly@php.net>
Sun, 18 Sep 2005 17:16:17 +0000 (17:16 +0000)
committerMarcus Boerger <helly@php.net>
Sun, 18 Sep 2005 17:16:17 +0000 (17:16 +0000)
ext/spl/tests/array_009a.phpt [new file with mode: 0755]
ext/spl/tests/iterator_024.phpt [new file with mode: 0755]

diff --git a/ext/spl/tests/array_009a.phpt b/ext/spl/tests/array_009a.phpt
new file mode 100755 (executable)
index 0000000..aebac08
--- /dev/null
@@ -0,0 +1,39 @@
+--TEST--
+SPL: ArrayIterator implementing RecursiveIterator
+--SKIPIF--
+<?php if (!extension_loaded("spl")) print "skip"; ?>
+--FILE--
+<?php
+
+class MyRecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
+{
+       function hasChildren()
+       {
+               return is_array($this->current());
+       }
+       
+       function getChildren()
+       {
+               return new MyRecursiveArrayIterator($this->current());
+       }
+}
+
+$array = array(1, 2 => array(21, 22 => array(221, 222), 23 => array(231)), 3);
+
+$dir = new RecursiveIteratorIterator(new MyRecursiveArrayIterator($array), RecursiveIteratorIterator::LEAVES_ONLY);
+
+foreach ($dir as $file) {
+       print "$file\n";
+}
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+1
+21
+221
+222
+231
+3
+===DONE===
diff --git a/ext/spl/tests/iterator_024.phpt b/ext/spl/tests/iterator_024.phpt
new file mode 100755 (executable)
index 0000000..0c7dea1
--- /dev/null
@@ -0,0 +1,49 @@
+--TEST--
+SPL: RecursiveIteratorIterator with custom iterator class
+--FILE--
+<?php
+
+$ar = array(1, 2, array(31, 32, array(331)), 4);
+
+foreach(new RecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")) as $v) echo "$v\n";
+
+$it = new ArrayObject($ar);
+var_dump($it->getIteratorClass());
+
+try
+{
+       foreach(new RecursiveIteratorIterator(new ArrayObject($ar)) as $v) echo "$v\n";
+}
+catch (InvalidArgumentException $e)
+{
+       echo $e->getMessage() . "\n";
+}
+
+echo "===MANUAL===\n";
+
+$it->setIteratorClass("RecursiveArrayIterator");
+var_dump($it->getIteratorClass());
+foreach(new RecursiveIteratorIterator($it) as $v) echo "$v\n";
+
+
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+1
+2
+31
+32
+331
+4
+string(13) "ArrayIterator"
+An instance of RecursiveIterator or IteratorAggregate creating it is required
+===MANUAL===
+string(22) "RecursiveArrayIterator"
+1
+2
+31
+32
+331
+4
+===DONE===