Version 1
[yaffs-website] / vendor / phpunit / phpunit / src / Runner / Filter / Factory.php
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php b/vendor/phpunit/phpunit/src/Runner/Filter/Factory.php
new file mode 100644 (file)
index 0000000..f4fa9d9
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <sebastian@phpunit.de>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+/**
+ * @since Class available since Release 4.0.0
+ */
+class PHPUnit_Runner_Filter_Factory
+{
+    /**
+     * @var array
+     */
+    private $filters = array();
+
+    /**
+     * @param ReflectionClass $filter
+     * @param mixed           $args
+     */
+    public function addFilter(ReflectionClass $filter, $args)
+    {
+        if (!$filter->isSubclassOf('RecursiveFilterIterator')) {
+            throw new InvalidArgumentException(
+                sprintf(
+                    'Class "%s" does not extend RecursiveFilterIterator',
+                    $filter->name
+                )
+            );
+        }
+
+        $this->filters[] = array($filter, $args);
+    }
+
+    /**
+     * @return FilterIterator
+     */
+    public function factory(Iterator $iterator, PHPUnit_Framework_TestSuite $suite)
+    {
+        foreach ($this->filters as $filter) {
+            list($class, $args) = $filter;
+            $iterator           = $class->newInstance($iterator, $args, $suite);
+        }
+
+        return $iterator;
+    }
+}