mirror of
https://github.com/php/php-src.git
synced 2024-11-24 18:34:21 +08:00
Backported 5.3 tests to 5.2 and added more RecursiveIteratorIterator tests
This commit is contained in:
parent
c4819e9ff3
commit
d06e06007a
17
ext/spl/tests/iterator_069.phpt
Normal file
17
ext/spl/tests/iterator_069.phpt
Normal file
@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator cannot be used with foreach by reference
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(array(1,2));
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
$recItIt = new RecursiveIteratorIterator($recArrIt);
|
||||
|
||||
foreach ($recItIt as &$val) echo "$val\n";
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
Fatal error: An iterator cannot be used with foreach by reference in %s on line %d
|
20
ext/spl/tests/iterator_070.phpt
Normal file
20
ext/spl/tests/iterator_070.phpt
Normal file
@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Ensure that non-overriden methods execute problem free.
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$array = array();
|
||||
$recArrIt = new RecursiveArrayIterator($array);
|
||||
|
||||
$recItIt = new RecursiveIteratorIterator($recArrIt);
|
||||
|
||||
var_dump($recItIt->beginIteration());
|
||||
var_dump($recItIt->endIteration());
|
||||
var_dump($recItIt->nextElement());
|
||||
|
||||
?>
|
||||
|
||||
--EXPECTF--
|
||||
NULL
|
||||
NULL
|
||||
NULL
|
32
ext/spl/tests/iterator_071.phpt
Normal file
32
ext/spl/tests/iterator_071.phpt
Normal file
@ -0,0 +1,32 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Test where the case is RS_SELF and mode is CHILD_FIRST
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(array(1,2),2);
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
function nextelement() {
|
||||
echo __METHOD__."\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::CHILD_FIRST);
|
||||
|
||||
foreach ($recItIt as $key => $val) echo "$key\n";
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
MyRecursiveIteratorIterator::nextelement
|
||||
0
|
||||
MyRecursiveIteratorIterator::nextelement
|
||||
1
|
||||
MyRecursiveIteratorIterator::nextelement
|
||||
0
|
||||
MyRecursiveIteratorIterator::nextelement
|
||||
1
|
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in beginchildren which should be handled in next()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(array(1,2),2);
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
function beginchildren() {
|
||||
throw new Exception;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
|
||||
|
||||
var_dump($recItIt->next());
|
||||
|
||||
$recItIt2 = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY);
|
||||
|
||||
var_dump($recItIt2->next());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
NULL
|
||||
|
||||
Fatal error: Uncaught exception 'Exception' in %s
|
||||
Stack trace:
|
||||
#0 [internal function]: MyRecursiveIteratorIterator->beginchildren()
|
||||
#1 %s: RecursiveIteratorIterator->next()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in callHasChildren which should be handled in next()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(1,2);
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
function callHasChildren() {
|
||||
throw new Exception;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
|
||||
|
||||
var_dump($recItIt->next());
|
||||
|
||||
$recItIt2 = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY);
|
||||
|
||||
var_dump($recItIt2->next());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
NULL
|
||||
|
||||
Fatal error: Uncaught exception 'Exception' in %s
|
||||
Stack trace:
|
||||
#0 [internal function]: MyRecursiveIteratorIterator->callHasChildren()
|
||||
#1 %s: RecursiveIteratorIterator->next()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
@ -0,0 +1,42 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in endchildren which should be handled in next()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(array(1,2));
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
function endchildren() {
|
||||
throw new Exception;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
|
||||
|
||||
foreach ($recItIt as $val) echo "$val\n";
|
||||
|
||||
$recItIt2 = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY);
|
||||
|
||||
echo "===NEXT LOOP===\n";
|
||||
|
||||
foreach ($recItIt2 as $val) echo "$val\n";
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
1
|
||||
2
|
||||
===NEXT LOOP===
|
||||
1
|
||||
2
|
||||
|
||||
Fatal error: Uncaught exception 'Exception' in %s
|
||||
Stack trace:
|
||||
#0 [internal function]: MyRecursiveIteratorIterator->endchildren()
|
||||
#1 %s: RecursiveIteratorIterator->next()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in nextelement which should be handled in next()
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$arr = array(1,2);
|
||||
$arrOb = new ArrayObject($arr);
|
||||
|
||||
$recArrIt = new RecursiveArrayIterator($arrOb->getIterator());
|
||||
|
||||
class MyRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
function nextelement() {
|
||||
throw new Exception;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY, RecursiveIteratorIterator::CATCH_GET_CHILD);
|
||||
|
||||
var_dump($recItIt->next());
|
||||
|
||||
$recItIt = new MyRecursiveIteratorIterator($recArrIt, RecursiveIteratorIterator::LEAVES_ONLY);
|
||||
|
||||
var_dump($recItIt->next());
|
||||
|
||||
?>
|
||||
--EXPECTF--
|
||||
NULL
|
||||
|
||||
Fatal error: Uncaught exception 'Exception' in %s
|
||||
Stack trace:
|
||||
#0 [internal function]: MyRecursiveIteratorIterator->nextelement()
|
||||
#1 %s: RecursiveIteratorIterator->next()
|
||||
#2 {main}
|
||||
thrown in %s on line %d
|
Loading…
Reference in New Issue
Block a user