--- /dev/null
+<?php
+
+class IncludeFiles extends ArrayIterator
+{
+ function __construct($path, $classes)
+ {
+ parent::__construct();
+ foreach($classes as $c)
+ {
+ $this->append($path . '/' . strtolower($c) . '.inc');
+ }
+ }
+}
+
+$classes = array(
+ 'EmptyIterator',
+ 'InfiniteIterator',
+);
+
+foreach (new IncludeFiles(dirname(__FILE__). '/..', $classes) as $file)
+{
+ require_once($file);
+}
+
+?>
\ No newline at end of file
--- /dev/null
+--TEST--
+SPL: EmptyIterator
+--FILE--
+<?php
+
+require_once('examples.inc');
+
+echo "===EmptyIterator===\n";
+
+foreach(new LimitIterator(new EmptyIterator(), 0, 3) as $key => $val)
+{
+ echo "$key=>$val\n";
+}
+
+?>
+===DONE===
+<?php exit(0);
+--EXPECTF--
+===EmptyIterator===
+===DONE===
--- /dev/null
+--TEST--
+SPL: InfiniteIterator
+--FILE--
+<?php
+
+require_once('examples.inc');
+
+echo "===EmptyIterator===\n";
+
+foreach(new LimitIterator(new InfiniteIterator(new EmptyIterator()), 0, 3) as $key=>$val)
+{
+ echo "$key=>$val\n";
+}
+
+echo "===InfiniteIterator===\n";
+
+$it = new ArrayIterator(array(0 => 'A', 1 => 'B', 2 => 'C', 3 => 'D'));
+$it = new InfiniteIterator($it);
+$it = new LimitIterator($it, 2, 5);
+foreach($it as $val=>$key)
+{
+ echo "$val=>$key\n";
+}
+
+echo "===Infinite/LimitIterator===\n";
+
+$it = new ArrayIterator(array(0 => 'A', 1 => 'B', 2 => 'C', 3 => 'D'));
+$it = new LimitIterator($it, 1, 2);
+$it = new InfiniteIterator($it);
+$it = new LimitIterator($it, 2, 5);
+foreach($it as $val=>$key)
+{
+ echo "$val=>$key\n";
+}
+
+?>
+===DONE===
+<?php exit(0);
+--EXPECTF--
+===EmptyIterator===
+===InfiniteIterator===
+2=>C
+3=>D
+0=>A
+1=>B
+2=>C
+===Infinite/LimitIterator===
+1=>B
+2=>C
+1=>B
+2=>C
+1=>B
+===DONE===