diff options
Diffstat (limited to 'tests/lang/foreachLoopIteratorAggregate.002.phpt')
-rw-r--r-- | tests/lang/foreachLoopIteratorAggregate.002.phpt | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/lang/foreachLoopIteratorAggregate.002.phpt b/tests/lang/foreachLoopIteratorAggregate.002.phpt new file mode 100644 index 0000000..eef4302 --- /dev/null +++ b/tests/lang/foreachLoopIteratorAggregate.002.phpt @@ -0,0 +1,53 @@ +--TEST-- +IteratorAggregate::getIterator bad return type +--FILE-- +<?php + +class bad1 implements IteratorAggregate { + function getIterator() { + return null; + } +} + +class bad2 implements IteratorAggregate { + function getIterator() { + return new stdClass; + } +} + +class bad3 implements IteratorAggregate { + function getIterator() { + return 1; + } +} + +class bad4 implements IteratorAggregate { + function getIterator() { + return array(1,2,3); + } +} + + +function f($className) { + try { + foreach (new $className as $k=>$v) { + echo "$k => $v\n"; + } + } catch (Exception $e) { + echo $e->getLine() . ": " . $e->getMessage() ."\n"; + } +} + +f("bad1"); +f("bad2"); +f("bad3"); +f("bad4"); + +?> +===DONE=== +--EXPECTF-- +30: Objects returned by bad1::getIterator() must be traversable or implement interface Iterator +30: Objects returned by bad2::getIterator() must be traversable or implement interface Iterator +30: Objects returned by bad3::getIterator() must be traversable or implement interface Iterator +30: Objects returned by bad4::getIterator() must be traversable or implement interface Iterator +===DONE===
\ No newline at end of file |