Eloquent\Phony\Verification\IterableVerifier::checkProduced PHP Method

checkProduced() public method

When called with no arguments, this method simply checks that the subject produced any value. With a single argument, it checks that a value matching the argument was produced. With two arguments, it checks that a key and value matching the respective arguments were produced together.
public checkProduced ( mixed $keyOrValue = null, mixed $value = null ) : Eloquent\Phony\Event\EventCollection | null
$keyOrValue mixed The key or value.
$value mixed The value.
return Eloquent\Phony\Event\EventCollection | null The result.
    public function checkProduced($keyOrValue = null, $value = null)
    {
        $cardinality = $this->resetCardinality();
        $argumentCount = func_num_args();
        if (0 === $argumentCount) {
            $checkKey = false;
            $checkValue = false;
        } elseif (1 === $argumentCount) {
            $checkKey = false;
            $checkValue = true;
            $value = $this->matcherFactory->adapt($keyOrValue);
        } else {
            $checkKey = true;
            $checkValue = true;
            $key = $this->matcherFactory->adapt($keyOrValue);
            $value = $this->matcherFactory->adapt($value);
        }
        $isCall = $this->subject instanceof Call;
        $matchingEvents = array();
        $matchCount = 0;
        $eventCount = 0;
        foreach ($this->calls as $call) {
            $isMatchingCall = false;
            foreach ($call->iterableEvents() as $event) {
                if ($event instanceof ProducedEvent) {
                    ++$eventCount;
                    if ($checkKey && !$key->matches($event->key())) {
                        continue;
                    }
                    if ($checkValue && !$value->matches($event->value())) {
                        continue;
                    }
                    $matchingEvents[] = $event;
                    $isMatchingCall = true;
                    if ($isCall) {
                        ++$matchCount;
                    }
                }
            }
            if (!$isCall && $isMatchingCall) {
                ++$matchCount;
            }
        }
        if ($isCall) {
            $totalCount = $eventCount;
        } else {
            $totalCount = $this->callCount;
        }
        if ($cardinality->matches($matchCount, $totalCount)) {
            return $this->assertionRecorder->createSuccess($matchingEvents);
        }
    }