Annotation of embedaddon/php/tests/lang/foreachLoopIteratorAggregate.004.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: Duplicate of zend test tests/classes/iterators_002.phpt without expected output from destructor
                      3: --FILE--
                      4: <?php
                      5: class c_iter implements Iterator {
                      6: 
                      7:        private $obj;
                      8:        private $num = 0;
                      9: 
                     10:        function __construct($obj) {
                     11:                echo __METHOD__ . "\n";
                     12:                $this->obj = $obj;
                     13:        }
                     14:        function rewind() {
                     15:                echo __METHOD__ . "\n";
                     16:                $this->num = 0;
                     17:        }
                     18:        function valid() {
                     19:                $more = $this->num < $this->obj->max;
                     20:                echo __METHOD__ . ' = ' .($more ? 'true' : 'false') . "\n";
                     21:                return $more;
                     22:        }
                     23:        function current() {
                     24:                echo __METHOD__ . "\n";
                     25:                return $this->num;
                     26:        }
                     27:        function next() {
                     28:                echo __METHOD__ . "\n";
                     29:                $this->num++;
                     30:        }
                     31:        function key() {
                     32:                echo __METHOD__ . "\n";
                     33:                switch($this->num) {
                     34:                        case 0: return "1st";
                     35:                        case 1: return "2nd";
                     36:                        case 2: return "3rd";
                     37:                        default: return "???";
                     38:                }
                     39:        }
                     40:        function __destruct() {
                     41:        }
                     42: }
                     43:        
                     44: class c implements IteratorAggregate {
                     45: 
                     46:        public $max = 3;
                     47: 
                     48:        function getIterator() {
                     49:                echo __METHOD__ . "\n";
                     50:                return new c_iter($this);
                     51:        }
                     52:        function __destruct() {
                     53:        }
                     54: }
                     55: 
                     56: $t = new c();
                     57: 
                     58: foreach($t as $k => $v) {
                     59:        foreach($t as $w) {
                     60:                echo "double:$v:$w\n";
                     61:                break;
                     62:        }
                     63: }
                     64: 
                     65: unset($t);
                     66: 
                     67: ?>
                     68: ===DONE===
                     69: --EXPECT--
                     70: c::getIterator
                     71: c_iter::__construct
                     72: c_iter::rewind
                     73: c_iter::valid = true
                     74: c_iter::current
                     75: c_iter::key
                     76: c::getIterator
                     77: c_iter::__construct
                     78: c_iter::rewind
                     79: c_iter::valid = true
                     80: c_iter::current
                     81: double:0:0
                     82: c_iter::next
                     83: c_iter::valid = true
                     84: c_iter::current
                     85: c_iter::key
                     86: c::getIterator
                     87: c_iter::__construct
                     88: c_iter::rewind
                     89: c_iter::valid = true
                     90: c_iter::current
                     91: double:1:0
                     92: c_iter::next
                     93: c_iter::valid = true
                     94: c_iter::current
                     95: c_iter::key
                     96: c::getIterator
                     97: c_iter::__construct
                     98: c_iter::rewind
                     99: c_iter::valid = true
                    100: c_iter::current
                    101: double:2:0
                    102: c_iter::next
                    103: c_iter::valid = false
                    104: ===DONE===

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>