mirror of
https://github.com/php/php-src.git
synced 2026-04-29 03:03:26 +02:00
Backported 5.3 tests to 5.2 and added more RecursiveIteratorIterator tests
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
--TEST--
|
||||
SPL: FilterIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myFilterIterator extends FilterIterator {
|
||||
function accept() {
|
||||
|
||||
}
|
||||
}
|
||||
try {
|
||||
$it = new myFilterIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,23 @@
|
||||
--TEST--
|
||||
SPL: ArrayIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
/**
|
||||
* From Docs: Construct a new array iterator from anything that has a hash table.
|
||||
* NULL, NOTHING is not a hash table ;)
|
||||
*/
|
||||
class myArrayIterator extends ArrayIterator {
|
||||
}
|
||||
try {
|
||||
$it = new myArrayIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
echo 'no Exception thrown'
|
||||
?>
|
||||
--EXPECT--
|
||||
no Exception thrown
|
||||
@@ -0,0 +1,26 @@
|
||||
--TEST--
|
||||
SPL: Iterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myIterator implements Iterator {
|
||||
|
||||
function current() {}
|
||||
function next() {}
|
||||
function key() {}
|
||||
function valid() {}
|
||||
function rewind() {}
|
||||
|
||||
}
|
||||
try {
|
||||
$it = new myIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
echo 'no Exception thrown';
|
||||
?>
|
||||
--EXPECT--
|
||||
no Exception thrown
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
SPL: CachingIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myCachingIterator extends CachingIterator {
|
||||
|
||||
}
|
||||
try {
|
||||
$it = new myCachingIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
SPL: RecursiveCachingIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myRecursiveCachingIterator extends RecursiveCachingIterator {
|
||||
|
||||
}
|
||||
try {
|
||||
$it = new myRecursiveCachingIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
SPL: ParentIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myParentIterator extends ParentIterator {
|
||||
|
||||
}
|
||||
try {
|
||||
$it = new myParentIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myRecursiveIteratorIterator extends RecursiveIteratorIterator {
|
||||
|
||||
}
|
||||
|
||||
try {
|
||||
$it = new myRecursiveIteratorIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
SPL: LimitIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myLimitIterator extends LimitIterator {
|
||||
|
||||
}
|
||||
try {
|
||||
$it = new myLimitIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
SPL: CachingIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myCachingIterator extends CachingIterator {}
|
||||
try {
|
||||
$it = new myCachingIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
SPL: RecursiveCachingIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myRecursiveCachingIterator extends RecursiveCachingIterator {}
|
||||
try {
|
||||
$it = new myRecursiveCachingIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
SPL: NoRewindIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myNoRewindIterator extends NoRewindIterator {}
|
||||
try {
|
||||
$it = new myNoRewindIterator();
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
InvalidArgumentException thrown
|
||||
@@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
SPL: AppendIterator::__construct(void)
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--CREDITS--
|
||||
Sebastian Schürmann
|
||||
--FILE--
|
||||
<?php
|
||||
class myAppendIterator extends AppendIterator {}
|
||||
try {
|
||||
$it = new myAppendIterator();
|
||||
echo "no exception";
|
||||
} catch (InvalidArgumentException $e) {
|
||||
echo 'InvalidArgumentException thrown';
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
no exception
|
||||
@@ -0,0 +1,19 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator cannot be used with foreach by reference
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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
|
||||
@@ -0,0 +1,22 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Ensure that non-overriden methods execute problem free.
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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
|
||||
@@ -0,0 +1,34 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Test where the case is RS_SELF and mode is CHILD_FIRST
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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,38 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in beginchildren which should be handled in next()
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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,38 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in callHasChildren which should be handled in next()
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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,44 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in endchildren which should be handled in next()
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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,38 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator - Exception thrown in nextelement which should be handled in next()
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--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
|
||||
Reference in New Issue
Block a user