Annotation of embedaddon/php/tests/lang/foreachLoopIteratorAggregate.002.phpt, revision 1.1.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>