--- /dev/null
+--TEST--
+SPL: RegexIterator::getFlags() and setFlags() basic tests
+--SKIPIF--
+<?php extension_loaded('spl') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+--FILE--
+<?php
+
+$array = array('foo', 'bar', 'baz');
+$iterator = new ArrayIterator($array);
+$regexIterator = new RegexIterator($iterator, "/f/", null, RegexIterator::USE_KEY);
+
+var_dump($regexIterator->getFlags() === RegexIterator::USE_KEY);
+
+// Test a change in flags, there's only one class constant so it has to be another int value
+$regexIterator->setFlags(3);
+var_dump($regexIterator->getFlags() === RegexIterator::USE_KEY);
+$regexIterator->setFlags(RegexIterator::USE_KEY);
+var_dump($regexIterator->getFlags() === RegexIterator::USE_KEY);
+
+?>
+--EXPECT--
+bool(true)
+bool(false)
+bool(true)
--- /dev/null
+--TEST--
+SPL: RegexIterator::getMode() and setMode() basic tests
+--SKIPIF--
+<?php extension_loaded('spl') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+--FILE--
+<?php
+
+$array = array('foo', 'bar', 'baz');
+$iterator = new ArrayIterator($array);
+$regexIterator = new RegexIterator($iterator, "/f/");
+
+var_dump($regexIterator->getMode() === RegexIterator::MATCH);
+
+$regexIterator->setMode(RegexIterator::MATCH);
+var_dump($regexIterator->getMode() === RegexIterator::MATCH);
+
+$regexIterator->setMode(RegexIterator::GET_MATCH);
+var_dump($regexIterator->getMode() === RegexIterator::GET_MATCH);
+
+$regexIterator->setMode(RegexIterator::ALL_MATCHES);
+var_dump($regexIterator->getMode() === RegexIterator::ALL_MATCHES);
+
+$regexIterator->setMode(RegexIterator::SPLIT);
+var_dump($regexIterator->getMode() === RegexIterator::SPLIT);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+bool(true)
+bool(true)
--- /dev/null
+--TEST--
+SPL: RegexIterator::setMode() error tests
+--SKIPIF--
+<?php extension_loaded('spl') or die('skip'); ?>
+--CREDITS--
+Felix De Vliegher <felix.devliegher@gmail.com>
+--FILE--
+<?php
+
+$array = array('foo', 'bar', 'baz');
+$regexIterator = new RegexIterator(new ArrayIterator($array), "/f/");
+
+var_dump($regexIterator->getMode());
+
+try {
+ $regexIterator->setMode(7);
+} catch (InvalidArgumentException $e) {
+ var_dump($e->getMessage());
+ var_dump($e->getCode());
+}
+
+$regexIterator->setMode('foo');
+
+?>
+--EXPECTF--
+int(0)
+string(14) "Illegal mode 7"
+int(0)
+
+Warning: RegexIterator::setMode() expects parameter 1 to be long, string given in %s on line %d