Example #1
0
 /**
  * Get the static instance of this factory.
  *
  * @return CallFactory The static factory.
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self(CallEventFactory::instance(), Invoker::instance());
     }
     return self::$instance;
 }
Example #2
0
 /**
  * Get the static instance of this factory.
  *
  * @return HandleFactory The static factory.
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self(StubFactory::instance(), StubVerifierFactory::instance(), AssertionRenderer::instance(), ExceptionAssertionRecorder::instance(), Invoker::instance());
     }
     return self::$instance;
 }
 /**
  * Get the static instance of this factory.
  *
  * @return GeneratorAnswerBuilderFactory The static factory.
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self(InvocableInspector::instance(), Invoker::instance(), FeatureDetector::instance());
     }
     return self::$instance;
 }
Example #4
0
 /**
  * Get the static instance of this factory.
  *
  * @return SpyFactory The static factory.
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self(Sequencer::sequence('spy-label'), CallFactory::instance(), Invoker::instance(), GeneratorSpyFactory::instance(), IterableSpyFactory::instance());
     }
     return self::$instance;
 }
Example #5
0
 /**
  * Get the static instance of this factory.
  *
  * @return StubFactory The static factory.
  */
 public static function instance()
 {
     if (!self::$instance) {
         self::$instance = new self(Sequencer::sequence('stub-label'), MatcherFactory::instance(), MatcherVerifier::instance(), Invoker::instance(), InvocableInspector::instance(), EmptyValueFactory::instance(), GeneratorAnswerBuilderFactory::instance());
     }
     return self::$instance;
 }
 /**
  * Get the answer.
  *
  * @param array<tuple<bool,mixed,bool,mixed,array<CallRequest>>> &$iterations      The iteration details.
  * @param array<CallRequest>                                     &$requests        The call requests
  * @param Exception|Error|null                                   &$exception       The exception to throw.
  * @param mixed                                                  &$returnValue     The return value.
  * @param int|null                                               &$returnsArgument The index of the argument to return.
  * @param bool                                                   &$returnsSelf     True if the self value should be returned.
  * @param Invoker                                                $invoker          The invoker to use.
  *
  * @return callable The answer.
  */
 public static function answer(array &$iterations, array &$requests, &$exception, &$returnValue, &$returnsArgument, &$returnsSelf, Invoker $invoker)
 {
     return function ($self, $arguments) use(&$iterations, &$requests, &$exception, &$returnValue, &$returnsArgument, &$returnsSelf, $invoker) {
         foreach ($iterations as $iteration) {
             foreach ($iteration->requests as $request) {
                 $invoker->callWith($request->callback(), $request->finalArguments($self, $arguments));
             }
             if ($iteration instanceof GeneratorYieldFromIteration) {
                 foreach ($iteration->values as $key => $value) {
                     if ($key instanceof InstanceHandle) {
                         $key = $key->get();
                     }
                     if ($value instanceof InstanceHandle) {
                         $value = $value->get();
                     }
                     (yield $key => $value);
                 }
             } else {
                 if ($iteration->hasKey) {
                     (yield $iteration->key => $iteration->value);
                 } elseif ($iteration->hasValue) {
                     (yield $iteration->value);
                 } else {
                     yield;
                 }
             }
         }
         foreach ($requests as $request) {
             $invoker->callWith($request->callback(), $request->finalArguments($self, $arguments));
         }
         if ($exception) {
             throw $exception;
         }
         if ($returnsSelf) {
             return $self;
         }
         if (null !== $returnsArgument) {
             return $arguments->get($returnsArgument);
         }
         return $returnValue;
     };
 }