summaryrefslogtreecommitdiff
path: root/tests/classes/iterators_008.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/classes/iterators_008.phpt')
-rw-r--r--tests/classes/iterators_008.phpt45
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/classes/iterators_008.phpt b/tests/classes/iterators_008.phpt
new file mode 100644
index 0000000..22e6dc8
--- /dev/null
+++ b/tests/classes/iterators_008.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Ensure plain userspace superclass does not override special iterator behaviour on child class.
+--FILE--
+<?php
+Class C {}
+
+class D extends C implements Iterator {
+
+ private $counter = 2;
+
+ public function valid() {
+ echo __METHOD__ . "($this->counter)\n";
+ return $this->counter;
+ }
+
+ public function next() {
+ $this->counter--;
+ echo __METHOD__ . "($this->counter)\n";
+ }
+
+ public function rewind() {
+ echo __METHOD__ . "($this->counter)\n";
+ }
+
+ public function current() {
+ echo __METHOD__ . "($this->counter)\n";
+ }
+
+ public function key() {
+ echo __METHOD__ . "($this->counter)\n";
+ }
+
+}
+
+foreach (new D as $x) {}
+?>
+--EXPECTF--
+D::rewind(2)
+D::valid(2)
+D::current(2)
+D::next(1)
+D::valid(1)
+D::current(1)
+D::next(0)
+D::valid(0) \ No newline at end of file