Chris@14: Chris@14: * Chris@14: * For the full copyright and license information, please view the LICENSE Chris@14: * file that was distributed with this source code. Chris@14: */ Chris@14: namespace PHPUnit\Framework\MockObject\Matcher; Chris@14: Chris@14: use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; Chris@14: Chris@14: /** Chris@14: * Records invocations and provides convenience methods for checking them later Chris@14: * on. Chris@14: * This abstract class can be implemented by matchers which needs to check the Chris@14: * number of times an invocation has occurred. Chris@14: */ Chris@14: abstract class InvokedRecorder implements Invocation Chris@14: { Chris@14: /** Chris@14: * @var BaseInvocation[] Chris@14: */ Chris@14: private $invocations = []; Chris@14: Chris@14: /** Chris@14: * @return int Chris@14: */ Chris@14: public function getInvocationCount() Chris@14: { Chris@14: return \count($this->invocations); Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return BaseInvocation[] Chris@14: */ Chris@14: public function getInvocations() Chris@14: { Chris@14: return $this->invocations; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @return bool Chris@14: */ Chris@14: public function hasBeenInvoked() Chris@14: { Chris@14: return \count($this->invocations) > 0; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param BaseInvocation $invocation Chris@14: */ Chris@14: public function invoked(BaseInvocation $invocation) Chris@14: { Chris@14: $this->invocations[] = $invocation; Chris@14: } Chris@14: Chris@14: /** Chris@14: * @param BaseInvocation $invocation Chris@14: * Chris@14: * @return bool Chris@14: */ Chris@14: public function matches(BaseInvocation $invocation) Chris@14: { Chris@14: return true; Chris@14: } Chris@14: }