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>