Annotation of embedaddon/php/ext/spl/tests/iterator_004.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: SPL: SeekableIterator and string keys
                      3: --FILE--
                      4: <?php
                      5: 
                      6: class NumericArrayIterator implements Iterator
                      7: {
                      8:        protected $a;
                      9:        protected $i;
                     10: 
                     11:        public function __construct($a)
                     12:        {
                     13:                echo __METHOD__ . "\n";
                     14:                $this->a = $a;
                     15:        }
                     16: 
                     17:        public function rewind()
                     18:        {
                     19:                echo __METHOD__ . "\n";
                     20:                $this->i = 0;
                     21:        }
                     22: 
                     23:        public function valid()
                     24:        {
                     25:                $ret = $this->i < count($this->a);
                     26:                echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n";
                     27:                return $ret;
                     28:        }
                     29: 
                     30:        public function key()
                     31:        {
                     32:                echo __METHOD__ . "\n";
                     33:                return $this->i;
                     34:        }
                     35: 
                     36:        public function current()
                     37:        {
                     38:                echo __METHOD__ . "\n";
                     39:                return $this->a[$this->i];
                     40:        }
                     41: 
                     42:        public function next()
                     43:        {
                     44:                echo __METHOD__ . "\n";
                     45:                $this->i++;
                     46:        }
                     47: }
                     48: 
                     49: class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator
                     50: {
                     51:        public function seek($index)
                     52:        {
                     53:                if ($index < count($this->a)) {
                     54:                        $this->i = $index;
                     55:                }
                     56:                echo __METHOD__ . '(' . $index . ")\n";
                     57:        }
                     58: }
                     59: 
                     60: $a = array(1, 2, 3, 4, 5);
                     61: foreach (new LimitIterator(new NumericArrayIterator($a), 1, 3) as $v)
                     62: {
                     63:        print "$v\n";
                     64: }
                     65: 
                     66: echo "===SEEKABLE===\n";
                     67: $a = array(1, 2, 3, 4, 5);
                     68: foreach(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3) as $v)
                     69: {
                     70:        print "$v\n";
                     71: }
                     72: 
                     73: echo "===SEEKING===\n";
                     74: $a = array(1, 2, 3, 4, 5);
                     75: $l = new LimitIterator(new SeekableNumericArrayIterator($a));
                     76: for($i = 1; $i < 4; $i++)
                     77: {
                     78:        $l->seek($i);
                     79:        print $l->current() . "\n";
                     80: }
                     81: 
                     82: ?>
                     83: ===DONE===
                     84: <?php exit(0); ?>
                     85: --EXPECT--
                     86: NumericArrayIterator::__construct
                     87: NumericArrayIterator::rewind
                     88: NumericArrayIterator::valid(true)
                     89: NumericArrayIterator::next
                     90: NumericArrayIterator::valid(true)
                     91: NumericArrayIterator::valid(true)
                     92: NumericArrayIterator::current
                     93: NumericArrayIterator::key
                     94: 2
                     95: NumericArrayIterator::next
                     96: NumericArrayIterator::valid(true)
                     97: NumericArrayIterator::current
                     98: NumericArrayIterator::key
                     99: 3
                    100: NumericArrayIterator::next
                    101: NumericArrayIterator::valid(true)
                    102: NumericArrayIterator::current
                    103: NumericArrayIterator::key
                    104: 4
                    105: NumericArrayIterator::next
                    106: ===SEEKABLE===
                    107: NumericArrayIterator::__construct
                    108: NumericArrayIterator::rewind
                    109: SeekableNumericArrayIterator::seek(1)
                    110: NumericArrayIterator::valid(true)
                    111: NumericArrayIterator::current
                    112: NumericArrayIterator::key
                    113: 2
                    114: NumericArrayIterator::next
                    115: NumericArrayIterator::valid(true)
                    116: NumericArrayIterator::current
                    117: NumericArrayIterator::key
                    118: 3
                    119: NumericArrayIterator::next
                    120: NumericArrayIterator::valid(true)
                    121: NumericArrayIterator::current
                    122: NumericArrayIterator::key
                    123: 4
                    124: NumericArrayIterator::next
                    125: ===SEEKING===
                    126: NumericArrayIterator::__construct
                    127: SeekableNumericArrayIterator::seek(1)
                    128: NumericArrayIterator::valid(true)
                    129: NumericArrayIterator::current
                    130: NumericArrayIterator::key
                    131: 2
                    132: SeekableNumericArrayIterator::seek(2)
                    133: NumericArrayIterator::valid(true)
                    134: NumericArrayIterator::current
                    135: NumericArrayIterator::key
                    136: 3
                    137: SeekableNumericArrayIterator::seek(3)
                    138: NumericArrayIterator::valid(true)
                    139: NumericArrayIterator::current
                    140: NumericArrayIterator::key
                    141: 4
                    142: ===DONE===

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