Version 1
[yaffs-website] / vendor / phpunit / phpunit / src / Runner / Filter / Group.php
diff --git a/vendor/phpunit/phpunit/src/Runner/Filter/Group.php b/vendor/phpunit/phpunit/src/Runner/Filter/Group.php
new file mode 100644 (file)
index 0000000..9257b3b
--- /dev/null
@@ -0,0 +1,59 @@
+<?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
+ */
+abstract class PHPUnit_Runner_Filter_GroupFilterIterator extends RecursiveFilterIterator
+{
+    /**
+     * @var array
+     */
+    protected $groupTests = array();
+
+    /**
+     * @param RecursiveIterator           $iterator
+     * @param array                       $groups
+     * @param PHPUnit_Framework_TestSuite $suite
+     */
+    public function __construct(RecursiveIterator $iterator, array $groups, PHPUnit_Framework_TestSuite $suite)
+    {
+        parent::__construct($iterator);
+
+        foreach ($suite->getGroupDetails() as $group => $tests) {
+            if (in_array($group, $groups)) {
+                $testHashes = array_map(
+                    function ($test) {
+                        return spl_object_hash($test);
+                    },
+                    $tests
+                );
+
+                $this->groupTests = array_merge($this->groupTests, $testHashes);
+            }
+        }
+    }
+
+    /**
+     * @return bool
+     */
+    public function accept()
+    {
+        $test = $this->getInnerIterator()->current();
+
+        if ($test instanceof PHPUnit_Framework_TestSuite) {
+            return true;
+        }
+
+        return $this->doAccept(spl_object_hash($test));
+    }
+
+    abstract protected function doAccept($hash);
+}