Annotation of embedaddon/php/tests/lang/foreachLoopIteratorAggregate.002.phpt, revision 1.1
1.1 ! misho 1: --TEST--
! 2: IteratorAggregate::getIterator bad return type
! 3: --FILE--
! 4: <?php
! 5:
! 6: class bad1 implements IteratorAggregate {
! 7: function getIterator() {
! 8: return null;
! 9: }
! 10: }
! 11:
! 12: class bad2 implements IteratorAggregate {
! 13: function getIterator() {
! 14: return new stdClass;
! 15: }
! 16: }
! 17:
! 18: class bad3 implements IteratorAggregate {
! 19: function getIterator() {
! 20: return 1;
! 21: }
! 22: }
! 23:
! 24: class bad4 implements IteratorAggregate {
! 25: function getIterator() {
! 26: return array(1,2,3);
! 27: }
! 28: }
! 29:
! 30:
! 31: function f($className) {
! 32: try {
! 33: foreach (new $className as $k=>$v) {
! 34: echo "$k => $v\n";
! 35: }
! 36: } catch (Exception $e) {
! 37: echo $e->getLine() . ": " . $e->getMessage() ."\n";
! 38: }
! 39: }
! 40:
! 41: f("bad1");
! 42: f("bad2");
! 43: f("bad3");
! 44: f("bad4");
! 45:
! 46: ?>
! 47: ===DONE===
! 48: --EXPECTF--
! 49: 30: Objects returned by bad1::getIterator() must be traversable or implement interface Iterator
! 50: 30: Objects returned by bad2::getIterator() must be traversable or implement interface Iterator
! 51: 30: Objects returned by bad3::getIterator() must be traversable or implement interface Iterator
! 52: 30: Objects returned by bad4::getIterator() must be traversable or implement interface Iterator
! 53: ===DONE===
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>