Version 1
[yaffs-website] / vendor / phpunit / phpunit-mock-objects / src / Framework / MockObject / Matcher / Parameters.php
diff --git a/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php b/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Matcher/Parameters.php
new file mode 100644 (file)
index 0000000..cd8aa85
--- /dev/null
@@ -0,0 +1,127 @@
+<?php
+/*
+ * This file is part of the PHPUnit_MockObject package.
+ *
+ * (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.
+ */
+
+/**
+ * Invocation matcher which looks for specific parameters in the invocations.
+ *
+ * Checks the parameters of all incoming invocations, the parameter list is
+ * checked against the defined constraints in $parameters. If the constraint
+ * is met it will return true in matches().
+ *
+ * @since Class available since Release 1.0.0
+ */
+class PHPUnit_Framework_MockObject_Matcher_Parameters extends PHPUnit_Framework_MockObject_Matcher_StatelessInvocation
+{
+    /**
+     * @var PHPUnit_Framework_Constraint[]
+     */
+    protected $parameters = array();
+
+    /**
+     * @var PHPUnit_Framework_MockObject_Invocation
+     */
+    protected $invocation;
+
+    /**
+     * @param array $parameters
+     */
+    public function __construct(array $parameters)
+    {
+        foreach ($parameters as $parameter) {
+            if (!($parameter instanceof PHPUnit_Framework_Constraint)) {
+                $parameter = new PHPUnit_Framework_Constraint_IsEqual(
+                    $parameter
+                );
+            }
+
+            $this->parameters[] = $parameter;
+        }
+    }
+
+    /**
+     * @return string
+     */
+    public function toString()
+    {
+        $text = 'with parameter';
+
+        foreach ($this->parameters as $index => $parameter) {
+            if ($index > 0) {
+                $text .= ' and';
+            }
+
+            $text .= ' ' . $index . ' ' . $parameter->toString();
+        }
+
+        return $text;
+    }
+
+    /**
+     * @param  PHPUnit_Framework_MockObject_Invocation $invocation
+     * @return bool
+     */
+    public function matches(PHPUnit_Framework_MockObject_Invocation $invocation)
+    {
+        $this->invocation = $invocation;
+
+        return $this->verify();
+    }
+
+    /**
+     * Checks if the invocation $invocation matches the current rules. If it
+     * does the matcher will get the invoked() method called which should check
+     * if an expectation is met.
+     *
+     * @param  PHPUnit_Framework_MockObject_Invocation      $invocation
+     *                                                                  Object containing information on a mocked or stubbed method which
+     *                                                                  was invoked.
+     * @return bool
+     * @throws PHPUnit_Framework_ExpectationFailedException
+     */
+    public function verify()
+    {
+        if ($this->invocation === null) {
+            throw new PHPUnit_Framework_ExpectationFailedException(
+                'Mocked method does not exist.'
+            );
+        }
+
+        if (count($this->invocation->parameters) < count($this->parameters)) {
+            $message = 'Parameter count for invocation %s is too low.';
+
+            // The user called `->with($this->anything())`, but may have meant
+            // `->withAnyParameters()`.
+            //
+            // @see https://github.com/sebastianbergmann/phpunit-mock-objects/issues/199
+            if (count($this->parameters) === 1 &&
+                get_class($this->parameters[0]) === 'PHPUnit_Framework_Constraint_IsAnything') {
+                $message .= "\nTo allow 0 or more parameters with any value, omit ->with() or use ->withAnyParameters() instead.";
+            }
+
+            throw new PHPUnit_Framework_ExpectationFailedException(
+                sprintf($message, $this->invocation->toString())
+            );
+        }
+
+        foreach ($this->parameters as $i => $parameter) {
+            $parameter->evaluate(
+                $this->invocation->parameters[$i],
+                sprintf(
+                    'Parameter %s for invocation %s does not match expected ' .
+                    'value.',
+                    $i,
+                    $this->invocation->toString()
+                )
+            );
+        }
+
+        return true;
+    }
+}