Ejemplo n.º 1
0
 /**
  * @test
  */
 public function injectWithProviderClass()
 {
     $binder = new Binder();
     $binder->bind(Answer::class)->toProviderClass(new \ReflectionClass(MyProviderClass::class));
     $question = $binder->getInjector()->getInstance(AnotherQuestion::class);
     assert($question->getAnswer(), isInstanceOf(Answer::class));
 }
 /**
  * @test
  */
 public function classAnnotatedWithSingletonWillOnlyBeCreatedOnce()
 {
     $binder = new Binder();
     $binder->bind(Number::class)->to(RandomSingleton::class);
     $slot = $binder->getInjector()->getInstance(SlotMachine::class);
     assert($slot->number1, isInstanceOf(RandomSingleton::class)->and(isSameAs($slot->number2)));
 }
Ejemplo n.º 3
0
 /**
  * @test
  */
 public function injectWithClosure()
 {
     $binder = new Binder();
     $answer = new Answer();
     $binder->bind(Answer::class)->toClosure(function () use($answer) {
         return $answer;
     });
     $question = $binder->getInjector()->getInstance(AnotherQuestion::class);
     assert($question, isInstanceOf(AnotherQuestion::class));
     assert($question->getAnswer(), isSameAs($answer));
 }
 /**
  * @test
  */
 public function explicitBindingOverwritesProvidedByAnnotation()
 {
     $binder = new Binder();
     $binder->bind(Person2::class)->to(Mikey::class);
     assert($binder->getInjector()->getInstance(Person2::class), isInstanceOf(Mikey::class));
 }
Ejemplo n.º 5
0
 /**
  * @test
  * @since  4.1.3
  */
 public function propertyBindingUsedWhenParamHasTypeHintButIsAnnotated()
 {
     try {
         $binder = new Binder();
         $properties = new Properties(['config' => ['example.password' => 'somePassword']]);
         $binder->bindProperties($properties, 'PROD');
         $example = $binder->getInjector()->getInstance(Example::class);
         assert($example->password, isInstanceOf(Secret::class));
     } finally {
         // ensure all references are removed to clean up environment
         unset($properties);
         $example->password = null;
         unset($example);
         unset($binder);
         gc_collect_cycles();
     }
 }
Ejemplo n.º 6
0
 /**
  * @since  3.1.0
  * @test
  */
 public function functionShortcut()
 {
     assert(\stubbles\peer\http('http://example.net/'), isInstanceOf(HttpConnection::class));
 }
 /**
  * @test
  * @since  6.0.0
  */
 public function usesImplementationSpecifiedForMode()
 {
     $binder = new Binder();
     assert($binder->setEnvironment('DEV')->getInjector()->getInstance(Person3::class), isInstanceOf(Mikey::class));
 }
 /**
  * @test
  */
 public function createOutputStream()
 {
     assert($this->memoryStreamFactory->createOutputStream('buffer'), isInstanceOf(MemoryOutputStream::class));
 }
Ejemplo n.º 9
0
 /**
  * @test
  */
 public function registerErrorHandlerWithClassNameReturnsCreatedInstance()
 {
     $errorHandlerClass = NewInstance::classname(ErrorHandler::class);
     assert($this->environment->useErrorHandler($errorHandlerClass)->registerErrorHandler('/tmp'), isInstanceOf($errorHandlerClass));
 }
 /**
  * @test
  * @since  8.0.0
  */
 public function castFromStringCreatesFileInputStream()
 {
     assert(FileInputStream::castFrom(vfsStream::url('home/test.txt')), isInstanceOf(FileInputStream::class));
 }
Ejemplo n.º 11
0
 /**
  * @test
  */
 public function createsSingletonScopeIfNonePassed()
 {
     $bindingScopes = new BindingScopes();
     assert($bindingScopes->singleton(), isInstanceOf(SingletonBindingScope::class));
 }
 /**
  * @test
  * @since  5.4.0
  */
 public function requestSessionScopedWithSessionReturnsInstance()
 {
     $session = NewInstance::of(Session::class)->mapCalls(['hasValue' => false]);
     assert($this->injector->setSession($session)->getInstance(Person2::class), isInstanceOf(Mikey::class));
 }
Ejemplo n.º 13
0
 /**
  * @since  2.0.0
  * @test
  */
 public function canCreateRuntime()
 {
     assert(AppUsingBindingModule::callBindRuntime(), isInstanceOf(Runtime::class));
 }
Ejemplo n.º 14
0
 /**
  * @since  2.0.0
  * @test
  */
 public function optionalConstructorInjection()
 {
     $injector = Binder::createInjector();
     $bike = $injector->getInstance(BikeWithOptionalTire::class);
     assert($bike->tire, isInstanceOf(Goodyear::class));
 }
Ejemplo n.º 15
0
 /**
  * @test
  * @since  4.0.0
  */
 public function ensureCallableWrapsInternalFunction()
 {
     assert(ensureCallable('strlen'), isInstanceOf(\Closure::class));
 }