Security update for permissions_by_term
[yaffs-website] / vendor / behat / behat / src / Behat / Testwork / Call / CallResults.php
diff --git a/vendor/behat/behat/src/Behat/Testwork/Call/CallResults.php b/vendor/behat/behat/src/Behat/Testwork/Call/CallResults.php
new file mode 100644 (file)
index 0000000..f79ea0c
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+
+/*
+ * This file is part of the Behat Testwork.
+ * (c) Konstantin Kudryashov <ever.zet@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Behat\Testwork\Call;
+
+use ArrayIterator;
+use Countable;
+use Iterator;
+use IteratorAggregate;
+
+/**
+ * Aggregates multiple call results into a collection and provides an informational API on top of that.
+ *
+ * @author Konstantin Kudryashov <ever.zet@gmail.com>
+ */
+final class CallResults implements Countable, IteratorAggregate
+{
+    /**
+     * @var CallResult[]
+     */
+    private $results;
+
+    /**
+     * Initializes call results collection.
+     *
+     * @param CallResult[] $results
+     */
+    public function __construct(array $results = array())
+    {
+        $this->results = $results;
+    }
+
+    /**
+     * Merges results from provided collection into the current one.
+     *
+     * @param CallResults $first
+     * @param CallResults $second
+     *
+     * @return CallResults
+     */
+    public static function merge(CallResults $first, CallResults $second)
+    {
+        return new static(array_merge($first->toArray(), $second->toArray()));
+    }
+
+    /**
+     * Checks if any call in collection throws an exception.
+     *
+     * @return Boolean
+     */
+    public function hasExceptions()
+    {
+        foreach ($this->results as $result) {
+            if ($result->hasException()) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Checks if any call in collection produces an output.
+     *
+     * @return Boolean
+     */
+    public function hasStdOuts()
+    {
+        foreach ($this->results as $result) {
+            if ($result->hasStdOut()) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
+     * Returns amount of results.
+     *
+     * @return integer
+     */
+    public function count()
+    {
+        return count($this->results);
+    }
+
+    /**
+     * Returns collection iterator.
+     *
+     * @return Iterator
+     */
+    public function getIterator()
+    {
+        return new ArrayIterator($this->results);
+    }
+
+    /**
+     * Returns call results array.
+     *
+     * @return CallResult[]
+     */
+    public function toArray()
+    {
+        return $this->results;
+    }
+}