/**
  * @covers ::addDependencyRetriever
  *
  * @dataProvider provideInstantiateWithSuggestedDependencies
  *
  * @param string $className
  *   The fully qualified name of the class to instantiate.
  * @param array[] $suggestedDependencyIds
  *   Keys are constructor argument names, and values are arrays of which
  *   keys are dependency retriever names, and values are dependency IDs.
  */
 public function testInstantiateWithSuggestedConstructorDependenciesAndSetterRetrieverInjection($className, array $suggestedDependencyIds = [])
 {
     $this->sut = new SimpleFactory($this->suggestedDependencyFinder->reveal());
     $this->sut->addDependencyRetriever($this->goldenDependencyRetriever->reveal());
     $this->sut->addDependencyRetriever($this->labradorDependencyRetriever->reveal());
     $this->suggestedDependencyFinder->findSuggestedDependencyIds($className)->willReturn($suggestedDependencyIds);
     $overriddenDependencies = ['qux' => new \stdClass()];
     $this->assertInstanceOf($className, $this->sut->instantiate($className, $overriddenDependencies));
 }
 /**
  * Adds another dependency retriever.
  *
  * The newly added retriever will receive a lower priority than any
  * existing retrievers. If a retriever with the same name already exists,
  * it is kept.
  *
  * @param \BartFeenstra\DependencyRetriever\Retriever\Retriever $dependencyRetriever
  */
 public function addDependencyRetriever(Retriever $dependencyRetriever)
 {
     if (!array_key_exists($dependencyRetriever->getName(), $this->dependencyRetrievers)) {
         $this->dependencyRetrievers[$dependencyRetriever->getName()] = $dependencyRetriever;
     }
 }