/**
  * @test
  */
 public function Can_register_shared_type_with_closure_and_dependencies()
 {
     // arrange
     $Container = new TestContainer();
     $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies');
     $Container->registerType('InjectableTestClassWithSimpleDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithSimpleDependencies');
     // act
     $Container->registerSharedType('NonInjectableClass', function (TestContainer $Container) {
         return NonInjectableClass::newNonInjectableClassWithSimpleDependency($Container->InjectableTestClassWithSimpleDependencies);
     });
     $Instance = $Container->NonInjectableClass;
     // assert
     $this->assertInstanceOf('MindTouch\\OpenContainer\\test\\NonInjectableClass', $Instance);
 }
示例#2
0
 /**
  * @test
  */
 public function Getting_a_stateless_type_always_returns_new_instance()
 {
     // arrange
     $Container = new TestContainer();
     // act
     $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies');
     $InstanceOne = $Container->InjectableTestClassWithNoDependencies;
     $InstanceTwo = $Container->InjectableTestClassWithNoDependencies;
     // assert
     $this->assertNotSame($InstanceOne, $InstanceTwo);
 }
 /**
  * @test
  */
 public function Can_get_registered_types()
 {
     // arrange
     $Container = new TestContainer();
     $Container->registerType('InjectableTestClassWithNoDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies');
     $Container->registerSharedType('InjectableTestClassWithSimpleDependencies', 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithSimpleDependencies');
     $Container->registerInstance('NonInjectableClass', NonInjectableClass::newNonInjectableClass());
     // act
     $types = $Container->getRegisteredTypes();
     // assert
     $this->assertEquals(array('InjectableTestClassWithNoDependencies', 'InjectableTestClassWithSimpleDependencies', 'NonInjectableClass'), $types);
 }
 /**
  * @test
  */
 public function Can_check_if_types_are_registered()
 {
     // arrange
     $Container = new TestContainer();
     $type = 'InjectableTestClassWithNoDependencies';
     // act
     $first = $Container->isRegistered($type);
     $Container->registerType($type, 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithNoDependencies');
     $second = $Container->isRegistered($type);
     // assert
     $this->assertFalse($first);
     $this->assertTrue($second);
 }
 /**
  * @test
  */
 public function Can_register_type_with_instance_dependency()
 {
     // arrange
     $Container = new TestContainer();
     $RegisteredInstance = NonInjectableClass::newNonInjectableClass();
     $Container->registerInstance('NonInjectableClass', $RegisteredInstance);
     $expectedInstanceClass = 'MindTouch\\OpenContainer\\test\\InjectableTestClassWithInstanceDependency';
     // act
     $Container->registerType('InjectableTestClassWithInstanceDependency', $expectedInstanceClass);
     $Instance = $Container->InjectableTestClassWithInstanceDependency;
     // assert
     $this->assertInstanceOf($expectedInstanceClass, $Instance);
 }