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>