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

1.1       misho       1: --TEST--
                      2: SPL: Iterator aggregating inner iterator's methods
                      3: --FILE--
                      4: <?php
                      5: 
                      6: class NumericArrayIterator implements Iterator
                      7: {
                      8:        protected $a;
                      9:        protected $i = 0;
                     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:        public function greaterThan($comp)
                     49:        {
                     50:                echo get_class($this) . '::' . __FUNCTION__ . '(' . $comp . ")\n";
                     51:                return $this->current() > $comp;
                     52:        }
                     53: }
                     54: 
                     55: class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator
                     56: {
                     57:        public function seek($index)
                     58:        {
                     59:                if ($index < count($this->a)) {
                     60:                        $this->i = $index;
                     61:                }
                     62:                echo __METHOD__ . '(' . $index . ")\n";
                     63:        }
                     64: }
                     65: 
                     66: $a = array(1, 2, 3, 4, 5);
                     67: $it = new LimitIterator(new NumericArrayIterator($a), 1, 3);
                     68: foreach ($it as $v)
                     69: {
                     70:        print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n";
                     71: }
                     72: 
                     73: echo "===SEEKABLE===\n";
                     74: $a = array(1, 2, 3, 4, 5);
                     75: $it = new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3);
                     76: foreach($it as $v)
                     77: {
                     78:        print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n";
                     79: }
                     80: 
                     81: echo "===STACKED===\n";
                     82: echo "Shows '2 is greater than 2' because the test is actually done with the current value which is 3.\n";
                     83: $a = array(1, 2, 3, 4, 5);
                     84: $it = new CachingIterator(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3));
                     85: foreach($it as $v)
                     86: {
                     87:        print $v . ' is ' . ($it->greaterThan(2) ? 'greater than 2' : 'less than or equal 2') . "\n";
                     88: }
                     89: 
                     90: ?>
                     91: ===DONE===
                     92: <?php exit(0); ?>
                     93: --EXPECT--
                     94: NumericArrayIterator::__construct
                     95: NumericArrayIterator::rewind
                     96: NumericArrayIterator::valid(true)
                     97: NumericArrayIterator::next
                     98: NumericArrayIterator::valid(true)
                     99: NumericArrayIterator::valid(true)
                    100: NumericArrayIterator::current
                    101: NumericArrayIterator::key
                    102: NumericArrayIterator::greaterThan(2)
                    103: NumericArrayIterator::current
                    104: 2 is less than or equal 2
                    105: NumericArrayIterator::next
                    106: NumericArrayIterator::valid(true)
                    107: NumericArrayIterator::current
                    108: NumericArrayIterator::key
                    109: NumericArrayIterator::greaterThan(2)
                    110: NumericArrayIterator::current
                    111: 3 is greater than 2
                    112: NumericArrayIterator::next
                    113: NumericArrayIterator::valid(true)
                    114: NumericArrayIterator::current
                    115: NumericArrayIterator::key
                    116: NumericArrayIterator::greaterThan(2)
                    117: NumericArrayIterator::current
                    118: 4 is greater than 2
                    119: NumericArrayIterator::next
                    120: ===SEEKABLE===
                    121: NumericArrayIterator::__construct
                    122: NumericArrayIterator::rewind
                    123: SeekableNumericArrayIterator::seek(1)
                    124: NumericArrayIterator::valid(true)
                    125: NumericArrayIterator::current
                    126: NumericArrayIterator::key
                    127: SeekableNumericArrayIterator::greaterThan(2)
                    128: NumericArrayIterator::current
                    129: 2 is less than or equal 2
                    130: NumericArrayIterator::next
                    131: NumericArrayIterator::valid(true)
                    132: NumericArrayIterator::current
                    133: NumericArrayIterator::key
                    134: SeekableNumericArrayIterator::greaterThan(2)
                    135: NumericArrayIterator::current
                    136: 3 is greater than 2
                    137: NumericArrayIterator::next
                    138: NumericArrayIterator::valid(true)
                    139: NumericArrayIterator::current
                    140: NumericArrayIterator::key
                    141: SeekableNumericArrayIterator::greaterThan(2)
                    142: NumericArrayIterator::current
                    143: 4 is greater than 2
                    144: NumericArrayIterator::next
                    145: ===STACKED===
                    146: Shows '2 is greater than 2' because the test is actually done with the current value which is 3.
                    147: NumericArrayIterator::__construct
                    148: NumericArrayIterator::rewind
                    149: SeekableNumericArrayIterator::seek(1)
                    150: NumericArrayIterator::valid(true)
                    151: NumericArrayIterator::current
                    152: NumericArrayIterator::key
                    153: NumericArrayIterator::next
                    154: NumericArrayIterator::valid(true)
                    155: NumericArrayIterator::current
                    156: NumericArrayIterator::key
                    157: SeekableNumericArrayIterator::greaterThan(2)
                    158: NumericArrayIterator::current
                    159: 2 is greater than 2
                    160: NumericArrayIterator::next
                    161: NumericArrayIterator::valid(true)
                    162: NumericArrayIterator::current
                    163: NumericArrayIterator::key
                    164: SeekableNumericArrayIterator::greaterThan(2)
                    165: NumericArrayIterator::current
                    166: 3 is greater than 2
                    167: NumericArrayIterator::next
                    168: SeekableNumericArrayIterator::greaterThan(2)
                    169: NumericArrayIterator::current
                    170: 4 is greater than 2
                    171: ===DONE===

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