Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

ConsecutiveCalls.php

Namespace

PHPUnit\Framework\MockObject\Stub

File

vendor/phpunit/phpunit/src/Framework/MockObject/Runtime/Stub/ConsecutiveCalls.php

View source
<?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\Stub;

use function array_shift;
use function count;
use PHPUnit\Framework\MockObject\Invocation;
use PHPUnit\Framework\MockObject\NoMoreReturnValuesConfiguredException;

/**
 * @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
 *
 * @internal This class is not covered by the backward compatibility promise for PHPUnit
 */
final class ConsecutiveCalls implements Stub {
    private array $stack;
    private int $numberOfConfiguredReturnValues;
    public function __construct(array $stack) {
        $this->stack = $stack;
        $this->numberOfConfiguredReturnValues = count($stack);
    }
    
    /**
     * @throws NoMoreReturnValuesConfiguredException
     */
    public function invoke(Invocation $invocation) : mixed {
        if (empty($this->stack)) {
            throw new NoMoreReturnValuesConfiguredException($invocation, $this->numberOfConfiguredReturnValues);
        }
        $value = array_shift($this->stack);
        if ($value instanceof Stub) {
            $value = $value->invoke($invocation);
        }
        return $value;
    }

}

Classes

Title Deprecated Summary
ConsecutiveCalls @no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
RSS feed
Powered by Drupal