Annotation of embedaddon/php/tests/classes/iterators_003.phpt, revision 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>