diff options
-rwxr-xr-x | ext/spl/tests/iterator_025.phpt | 92 | ||||
-rwxr-xr-x | ext/spl/tests/iterator_026.phpt | 34 | ||||
-rwxr-xr-x | ext/spl/tests/iterator_028.phpt | 170 |
3 files changed, 296 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_025.phpt b/ext/spl/tests/iterator_025.phpt new file mode 100755 index 0000000000..e582b1f39e --- /dev/null +++ b/ext/spl/tests/iterator_025.phpt @@ -0,0 +1,92 @@ +--TEST-- +SPL: RecursiveIteratorIterator and begin/endIteration() +--FILE-- +<?php + +class MyRecursiveIteratorIterator extends RecursiveIteratorIterator +{ + function beginIteration() + { + echo __METHOD__ . "()\n"; + } + + function endIteration() + { + echo __METHOD__ . "()\n"; + } +} + +$ar = array(1, 2, array(31, 32, array(331)), 4); + +$it = new MyRecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")); + +foreach($it as $v) echo "$v\n"; + +echo "===MORE===\n"; + +foreach($it as $v) echo "$v\n"; + +echo "===MORE===\n"; + +$it->rewind(); +foreach($it as $v) echo "$v\n"; +var_dump($it->valid()); + +echo "===MANUAL===\n"; + +$it->rewind(); +while($it->valid()) +{ + echo $it->current() . "\n"; + $it->next(); + break; +} +$it->rewind(); +while($it->valid()) +{ + echo $it->current() . "\n"; + $it->next(); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECT-- +MyRecursiveIteratorIterator::beginIteration() +1 +2 +31 +32 +331 +4 +MyRecursiveIteratorIterator::endIteration() +===MORE=== +MyRecursiveIteratorIterator::beginIteration() +1 +2 +31 +32 +331 +4 +MyRecursiveIteratorIterator::endIteration() +===MORE=== +MyRecursiveIteratorIterator::beginIteration() +1 +2 +31 +32 +331 +4 +MyRecursiveIteratorIterator::endIteration() +bool(false) +===MANUAL=== +MyRecursiveIteratorIterator::beginIteration() +1 +1 +2 +31 +32 +331 +4 +MyRecursiveIteratorIterator::endIteration() +===DONE=== diff --git a/ext/spl/tests/iterator_026.phpt b/ext/spl/tests/iterator_026.phpt new file mode 100755 index 0000000000..8df96f0d2c --- /dev/null +++ b/ext/spl/tests/iterator_026.phpt @@ -0,0 +1,34 @@ +--TEST-- +SPL: CachingIterator::hasNext() +--FILE-- +<?php + +$ar = array(1, 2, array(31, 32, array(331)), 4); + +$it = new RecursiveArrayIterator($ar); +$it = new RecursiveCachingIterator($it); +$it = new RecursiveIteratorIterator($it); + +foreach($it as $k=>$v) +{ + echo "$k=>$v\n"; + echo "hasNext: " . ($it->getInnerIterator()->hasNext() ? "yes" : "no") . "\n"; +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECT-- +0=>1 +hasNext: yes +1=>2 +hasNext: yes +0=>31 +hasNext: yes +1=>32 +hasNext: yes +0=>331 +hasNext: no +3=>4 +hasNext: no +===DONE=== diff --git a/ext/spl/tests/iterator_028.phpt b/ext/spl/tests/iterator_028.phpt new file mode 100755 index 0000000000..7ec76d8144 --- /dev/null +++ b/ext/spl/tests/iterator_028.phpt @@ -0,0 +1,170 @@ +--TEST-- +SPL: RecursiveIteratorIterator and setMaxDepth() +--FILE-- +<?php + +$ar = array(1, 2, array(31, 32, array(331, array(3321, array(33221)))), 4); + +$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($ar)); + +echo "===?===\n"; +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===2===\n"; +$it->setMaxDepth(2); +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===X===\n"; +$it->setMaxDepth(); +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===3===\n"; +$it->setMaxDepth(3); +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===5===\n"; +$it->setMaxDepth(5); +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===0===\n"; +$it->setMaxDepth(0); +var_dump($it->getMaxDepth()); +foreach($it as $v) echo $it->getDepth() . ": $v\n"; + +echo "===-1===\n"; +$it->setMaxDepth(-1); +var_dump($it->getMaxDepth()); +try +{ + $it->setMaxDepth(4); + $it->setMaxDepth(-2); +} +catch(Exception $e) +{ + var_dump($e->getMessage()); +} +var_dump($it->getMaxDepth()); +?> +===DONE=== +<?php exit(0); ?> +--EXPECT-- +===?=== +bool(false) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===2=== +int(2) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +0: 4 +===X=== +bool(false) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===3=== +int(3) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +0: 4 +===5=== +int(5) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===0=== +int(0) +0: 1 +0: 2 +0: 4 +===-1=== +bool(false) +string(33) "Parameter max_depth must be >= -1" +int(4) +===DONE=== +--UEXPECT-- +===?=== +bool(false) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===2=== +int(2) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +0: 4 +===X=== +bool(false) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===3=== +int(3) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +0: 4 +===5=== +int(5) +0: 1 +0: 2 +1: 31 +1: 32 +2: 331 +3: 3321 +4: 33221 +0: 4 +===0=== +int(0) +0: 1 +0: 2 +0: 4 +===-1=== +bool(false) +unicode(33) "Parameter max_depth must be >= -1" +int(4) +===DONE=== |