summaryrefslogtreecommitdiff
path: root/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php')
-rw-r--r--vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php102
1 files changed, 102 insertions, 0 deletions
diff --git a/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php
new file mode 100644
index 000000000..188326c91
--- /dev/null
+++ b/vendor/phpunit/phpunit/src/Framework/MockObject/Rule/InvokedCount.php
@@ -0,0 +1,102 @@
+<?php declare(strict_types=1);
+/*
+ * This file is part of PHPUnit.
+ *
+ * (c) Sebastian Bergmann <[email protected]>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace PHPUnit\Framework\MockObject\Rule;
+
+use function sprintf;
+use PHPUnit\Framework\ExpectationFailedException;
+use PHPUnit\Framework\MockObject\Invocation as BaseInvocation;
+
+/**
+ * @internal This class is not covered by the backward compatibility promise for PHPUnit
+ */
+final class InvokedCount extends InvocationOrder
+{
+ /**
+ * @var int
+ */
+ private $expectedCount;
+
+ /**
+ * @param int $expectedCount
+ */
+ public function __construct($expectedCount)
+ {
+ $this->expectedCount = $expectedCount;
+ }
+
+ public function isNever(): bool
+ {
+ return $this->expectedCount === 0;
+ }
+
+ public function toString(): string
+ {
+ return 'invoked ' . $this->expectedCount . ' time(s)';
+ }
+
+ public function matches(BaseInvocation $invocation): bool
+ {
+ return true;
+ }
+
+ /**
+ * Verifies that the current expectation is valid. If everything is OK the
+ * code should just return, if not it must throw an exception.
+ *
+ * @throws ExpectationFailedException
+ */
+ public function verify(): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count !== $this->expectedCount) {
+ throw new ExpectationFailedException(
+ sprintf(
+ 'Method was expected to be called %d times, ' .
+ 'actually called %d times.',
+ $this->expectedCount,
+ $count
+ )
+ );
+ }
+ }
+
+ /**
+ * @throws ExpectationFailedException
+ */
+ protected function invokedDo(BaseInvocation $invocation): void
+ {
+ $count = $this->getInvocationCount();
+
+ if ($count > $this->expectedCount) {
+ $message = $invocation->toString() . ' ';
+
+ switch ($this->expectedCount) {
+ case 0:
+ $message .= 'was not expected to be called.';
+
+ break;
+
+ case 1:
+ $message .= 'was not expected to be called more than once.';
+
+ break;
+
+ default:
+ $message .= sprintf(
+ 'was not expected to be called more than %d times.',
+ $this->expectedCount
+ );
+ }
+
+ throw new ExpectationFailedException($message);
+ }
+ }
+}