diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
|---|---|---|
| committer | <> | 2013-04-03 16:25:08 +0000 |
| commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
| tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/spl/tests/iterator_004.phpt | |
| download | php2-master.tar.gz | |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/spl/tests/iterator_004.phpt')
| -rw-r--r-- | ext/spl/tests/iterator_004.phpt | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_004.phpt b/ext/spl/tests/iterator_004.phpt new file mode 100644 index 0000000..e07cd32 --- /dev/null +++ b/ext/spl/tests/iterator_004.phpt @@ -0,0 +1,142 @@ +--TEST-- +SPL: SeekableIterator and string keys +--FILE-- +<?php + +class NumericArrayIterator implements Iterator +{ + protected $a; + protected $i; + + public function __construct($a) + { + echo __METHOD__ . "\n"; + $this->a = $a; + } + + public function rewind() + { + echo __METHOD__ . "\n"; + $this->i = 0; + } + + public function valid() + { + $ret = $this->i < count($this->a); + echo __METHOD__ . '(' . ($ret ? 'true' : 'false') . ")\n"; + return $ret; + } + + public function key() + { + echo __METHOD__ . "\n"; + return $this->i; + } + + public function current() + { + echo __METHOD__ . "\n"; + return $this->a[$this->i]; + } + + public function next() + { + echo __METHOD__ . "\n"; + $this->i++; + } +} + +class SeekableNumericArrayIterator extends NumericArrayIterator implements SeekableIterator +{ + public function seek($index) + { + if ($index < count($this->a)) { + $this->i = $index; + } + echo __METHOD__ . '(' . $index . ")\n"; + } +} + +$a = array(1, 2, 3, 4, 5); +foreach (new LimitIterator(new NumericArrayIterator($a), 1, 3) as $v) +{ + print "$v\n"; +} + +echo "===SEEKABLE===\n"; +$a = array(1, 2, 3, 4, 5); +foreach(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3) as $v) +{ + print "$v\n"; +} + +echo "===SEEKING===\n"; +$a = array(1, 2, 3, 4, 5); +$l = new LimitIterator(new SeekableNumericArrayIterator($a)); +for($i = 1; $i < 4; $i++) +{ + $l->seek($i); + print $l->current() . "\n"; +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECT-- +NumericArrayIterator::__construct +NumericArrayIterator::rewind +NumericArrayIterator::valid(true) +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +3 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +4 +NumericArrayIterator::next +===SEEKABLE=== +NumericArrayIterator::__construct +NumericArrayIterator::rewind +SeekableNumericArrayIterator::seek(1) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +3 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +4 +NumericArrayIterator::next +===SEEKING=== +NumericArrayIterator::__construct +SeekableNumericArrayIterator::seek(1) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +2 +SeekableNumericArrayIterator::seek(2) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +3 +SeekableNumericArrayIterator::seek(3) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +4 +===DONE=== |
