From 6e3b81e385dc4a0f7969b0847e8e4de679a77f8e Mon Sep 17 00:00:00 2001 From: Marcus Boerger Date: Thu, 8 Apr 2004 22:47:13 +0000 Subject: [PATCH] Add new test --- ext/spl/tests/iterator_aggregation.phpt | 162 ++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100755 ext/spl/tests/iterator_aggregation.phpt diff --git a/ext/spl/tests/iterator_aggregation.phpt b/ext/spl/tests/iterator_aggregation.phpt new file mode 100755 index 0000000000..2fd690294e --- /dev/null +++ b/ext/spl/tests/iterator_aggregation.phpt @@ -0,0 +1,162 @@ +--TEST-- +SPL: Iterator aggregating inner iterator's methods +--SKIPIF-- + +--FILE-- +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++; + } + + public function greaterThen($comp) + { + echo get_class($this) . '::' . __FUNCTION__ . '(' . $comp . ")\n"; + return $this->current() > $comp; + } +} + +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); +$it = new LimitIterator(new NumericArrayIterator($a), 1, 3); +foreach ($it as $v) +{ + print $v . ' is ' . ($it->greaterThen(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; +} + +echo "===SEEKABLE===\n"; +$a = array(1, 2, 3, 4, 5); +$it = new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3); +foreach($it as $v) +{ + print $v . ' is ' . ($it->greaterThen(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; +} + +echo "===STACKED===\n"; +$a = array(1, 2, 3, 4, 5); +$it = new CachingIterator(new LimitIterator(new SeekableNumericArrayIterator($a), 1, 3)); +foreach($it as $v) +{ + print $v . ' is ' . ($it->greaterThen(2) ? 'greater than 2' : 'less than or equal 2') . "\n"; +} + +?> +===DONE=== + +--EXPECT-- +NumericArrayIterator::__construct +NumericArrayIterator::rewind +NumericArrayIterator::valid(true) +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +2 is less than or equal 2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +3 is greater than 2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +4 is greater than 2 +NumericArrayIterator::next +===SEEKABLE=== +NumericArrayIterator::__construct +NumericArrayIterator::rewind +SeekableNumericArrayIterator::seek(1) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +2 is less than or equal 2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +3 is greater than 2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +LimitIterator::greaterThen(2) +4 is greater than 2 +NumericArrayIterator::next +===STACKED=== +NumericArrayIterator::__construct +NumericArrayIterator::rewind +SeekableNumericArrayIterator::seek(1) +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +CachingIterator::greaterThen(2) +2 is less than or equal 2 +NumericArrayIterator::next +NumericArrayIterator::valid(true) +NumericArrayIterator::current +NumericArrayIterator::key +CachingIterator::greaterThen(2) +3 is greater than 2 +NumericArrayIterator::next +CachingIterator::greaterThen(2) +4 is greater than 2 +===DONE=== -- 2.50.1