summaryrefslogtreecommitdiff
path: root/ext/spl/tests/iterator_007.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/tests/iterator_007.phpt')
-rw-r--r--ext/spl/tests/iterator_007.phpt166
1 files changed, 166 insertions, 0 deletions
diff --git a/ext/spl/tests/iterator_007.phpt b/ext/spl/tests/iterator_007.phpt
new file mode 100644
index 0000000..d26c01e
--- /dev/null
+++ b/ext/spl/tests/iterator_007.phpt
@@ -0,0 +1,166 @@
+--TEST--
+SPL: NoRewindIterator
+--FILE--
+<?php
+
+class ArrayIteratorEx extends ArrayIterator
+{
+ function rewind()
+ {
+ echo __METHOD__ . "\n";
+ parent::rewind();
+ }
+ function valid()
+ {
+ echo __METHOD__ . "\n";
+ return parent::valid();
+ }
+ function current()
+ {
+ echo __METHOD__ . "\n";
+ return parent::current();
+ }
+ function key()
+ {
+ echo __METHOD__ . "\n";
+ return parent::key();
+ }
+ function next()
+ {
+ echo __METHOD__ . "\n";
+ parent::next();
+ }
+}
+
+class NoRewindIteratorEx extends NoRewindIterator
+{
+ function rewind()
+ {
+ echo __METHOD__ . "\n";
+ parent::rewind();
+ }
+ function valid()
+ {
+ echo __METHOD__ . "\n";
+ return parent::valid();
+ }
+ function current()
+ {
+ echo __METHOD__ . "\n";
+ return parent::current();
+ }
+ function key()
+ {
+ echo __METHOD__ . "\n";
+ return parent::key();
+ }
+ function next()
+ {
+ echo __METHOD__ . "\n";
+ parent::next();
+ }
+}
+
+$it = new NoRewindIteratorEx(new ArrayIteratorEx(range(0,3)));
+
+echo "===0===\n";
+foreach ($it->getInnerIterator() as $v) {
+ var_dump($v);
+}
+
+echo "===1===\n";
+foreach ($it as $v) {
+ var_dump($v);
+}
+
+$pos =0;
+
+$it = new NoRewindIteratorEx(new ArrayIteratorEx(range(0,3)));
+
+echo "===2===\n";
+foreach ($it as $v) {
+ var_dump($v);
+ if ($pos++ > 1) {
+ break;
+ }
+}
+
+echo "===3===\n";
+foreach ($it as $v) {
+ var_dump($v);
+}
+
+echo "===4===\n";
+foreach ($it as $v) {
+ var_dump($v);
+}
+?>
+===DONE===
+<?php exit(0); ?>
+--EXPECT--
+===0===
+ArrayIteratorEx::rewind
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+int(0)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+int(1)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+int(2)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+ArrayIteratorEx::current
+int(3)
+ArrayIteratorEx::next
+ArrayIteratorEx::valid
+===1===
+NoRewindIteratorEx::rewind
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+===2===
+NoRewindIteratorEx::rewind
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+NoRewindIteratorEx::current
+ArrayIteratorEx::current
+int(0)
+NoRewindIteratorEx::next
+ArrayIteratorEx::next
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+NoRewindIteratorEx::current
+ArrayIteratorEx::current
+int(1)
+NoRewindIteratorEx::next
+ArrayIteratorEx::next
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+NoRewindIteratorEx::current
+ArrayIteratorEx::current
+int(2)
+===3===
+NoRewindIteratorEx::rewind
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+NoRewindIteratorEx::current
+int(2)
+NoRewindIteratorEx::next
+ArrayIteratorEx::next
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+NoRewindIteratorEx::current
+ArrayIteratorEx::current
+int(3)
+NoRewindIteratorEx::next
+ArrayIteratorEx::next
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+===4===
+NoRewindIteratorEx::rewind
+NoRewindIteratorEx::valid
+ArrayIteratorEx::valid
+===DONE===