当前路径:vendor/phpunit/phpunit/src/Framework/MockObject/Rule/ConsecutiveParameters.php <?php declare(strict_types=1); /* * 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. */ namespace PHPUnit\Framework\MockObject\Rule; use PHPUnit\Framework\Constraint\Constraint; use PHPUnit\Framework\Constraint\IsEqual; use PHPUnit\Framework\ExpectationFailedException; use PHPUnit\Framework\InvalidParameterGroupException; use PHPUnit\Framework\MockObject\Invocation as BaseInvocation; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class ConsecutiveParameters implements ParametersRule { /** * @var array */ private $parameterGroups = []; /** * @var array */ private $invocations = []; /** * @throws \PHPUnit\Framework\Exception */ public function __construct(array $parameterGroups) { foreach ($parameterGroups as $index => $parameters) { if (!\is_iterable($parameters)) { throw new InvalidParameterGroupException( \sprintf( 'Parameter group #%d must be an array or Traversable, got %s', $index, \gettype($parameters) ) ); } foreach ($parameters as $parameter) { if (!$parameter instanceof Constraint) { $parameter = new IsEqual($parameter); } $this->parameterGroups[$index][] = $parameter; } } } public function toString(): string { return 'with consecutive parameters'; } /** * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ public function apply(BaseInvocation $invocation): void { $this->invocations[] = $invocation; $callIndex = \count($this->invocations) - 1; $this->verifyInvocation($invocation, $callIndex); } /** * @throws \PHPUnit\Framework\ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ public function verify(): void { foreach ($this->invocations as $callIndex => $invocation) { $this->verifyInvocation($invocation, $callIndex); } } /** * Verify a single invocation * * @param int $callIndex * * @throws ExpectationFailedException * @throws \SebastianBergmann\RecursionContext\InvalidArgumentException */ private function verifyInvocation(BaseInvocation $invocation, $callIndex): void { if (!isset($this->parameterGroups[$callIndex])) { // no parameter assertion for this call index return; } if ($invocation === null) { throw new ExpectationFailedException( 'Mocked method does not exist.' ); } $parameters = $this->parameterGroups[$callIndex]; if (\count($invocation->getParameters()) < \count($parameters)) { throw new ExpectationFailedException( \sprintf( 'Parameter count for invocation %s is too low.', $invocation->toString() ) ); } foreach ($parameters as $i => $parameter) { $parameter->evaluate( $invocation->getParameters()[$i], \sprintf( 'Parameter %s for invocation #%d %s does not match expected ' . 'value.', $i, $callIndex, $invocation->toString() ) ); } } }
相关源码
- 可旋转的彩色立方体C#源代码2021-10-29
- 在线考试系统2021-10-15
- EduSoho开源网校系统源码2019-06-27
- 仿拼多多小程序商城源码2019-06-06
- PHP5网站运行监测系统源码2017-04-14
关于我们 | 顾问团队 | 发展历程 | 联系我们 | 源码上传
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号
联系电话(Tel):4008-010-151(免长途)
地址:北京市海淀区大恒科技大厦五层 邮编:100080
Floor 5th,Daheng Building,Zhongguancun,Beijing,China,100080
51Aspx.com 版权所有 CopyRight © 2006-2023. 京ICP备09089570号 | 京公网安备11010702000869号