Annotation of embedaddon/php/tests/classes/iterators_003.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: ZE2 iterators and break
                      3: --SKIPIF--
                      4: <?php if (version_compare(zend_version(), '2.0.0-dev', '<')) die('skip ZendEngine 2 needed'); ?>
                      5: --FILE--
                      6: <?php
                      7: class c_iter implements Iterator {
                      8: 
                      9:        private $obj;
                     10:        private $num = 0;
                     11: 
                     12:        function __construct($obj) {
                     13:                echo __METHOD__ . "\n";
                     14:                $this->obj = $obj;
                     15:        }
                     16:        function rewind() {
                     17:                echo __METHOD__ . "\n";
                     18:        }
                     19:        function valid() {
                     20:                $more = $this->num < $this->obj->max;
                     21:                echo __METHOD__ . ' = ' .($more ? 'true' : 'false') . "\n";
                     22:                return $more;
                     23:        }
                     24:        function current() {
                     25:                echo __METHOD__ . "\n";
                     26:                return $this->num;
                     27:        }
                     28:        function next() {
                     29:                echo __METHOD__ . "\n";
                     30:                $this->num++;
                     31:        }
                     32:        function key() {
                     33:                return $this->num;
                     34:        }
                     35: }
                     36:        
                     37: class c implements IteratorAggregate {
                     38: 
                     39:        public $max = 4;
                     40: 
                     41:        function getIterator() {
                     42:                echo __METHOD__ . "\n";
                     43:                return new c_iter($this);
                     44:        }
                     45: }
                     46: 
                     47: $t = new c();
                     48: 
                     49: foreach($t as $v) {
                     50:        if ($v == 0) {
                     51:                echo "continue outer\n";
                     52:                continue;
                     53:        }
                     54:        foreach($t as $w) {
                     55:                if ($w == 1) {
                     56:                        echo "continue inner\n";
                     57:                        continue;
                     58:                }
                     59:                if ($w == 2) {
                     60:                        echo "break inner\n";
                     61:                        break;
                     62:                }
                     63:                echo "double:$v:$w\n";
                     64:        }
                     65:        if ($v == 2) {
                     66:                echo "break outer\n";
                     67:                break;
                     68:        }
                     69: }
                     70: 
                     71: print "Done\n";
                     72: ?>
                     73: --EXPECT--
                     74: c::getIterator
                     75: c_iter::__construct
                     76: c_iter::rewind
                     77: c_iter::valid = true
                     78: c_iter::current
                     79: continue outer
                     80: c_iter::next
                     81: c_iter::valid = true
                     82: c_iter::current
                     83: c::getIterator
                     84: c_iter::__construct
                     85: c_iter::rewind
                     86: c_iter::valid = true
                     87: c_iter::current
                     88: double:1:0
                     89: c_iter::next
                     90: c_iter::valid = true
                     91: c_iter::current
                     92: continue inner
                     93: c_iter::next
                     94: c_iter::valid = true
                     95: c_iter::current
                     96: break inner
                     97: c_iter::next
                     98: c_iter::valid = true
                     99: c_iter::current
                    100: c::getIterator
                    101: c_iter::__construct
                    102: c_iter::rewind
                    103: c_iter::valid = true
                    104: c_iter::current
                    105: double:2:0
                    106: c_iter::next
                    107: c_iter::valid = true
                    108: c_iter::current
                    109: continue inner
                    110: c_iter::next
                    111: c_iter::valid = true
                    112: c_iter::current
                    113: break inner
                    114: break outer
                    115: Done

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