function testComponensRegisteredWithClassKeyTakePrecedenceOverOthersWhenThereAreMultipleImplementations()
 {
     $pico = new DefaultPicoContainer();
     $pico->registerComponentImplementation('AlternativeTouchable');
     $pico->registerComponentImplementation('Touchable', 'SimpleTouchable');
     $this->assertNotNull($pico->getComponentInstanceOfType('Touchable'));
 }
 function testFailWithAmbiguousComponentResolutionException()
 {
     $pico = new DefaultPicoContainer();
     $pico->registerComponentImplementation('SimpleTouchable');
     $pico->registerComponentImplementation('DerivedTouchable');
     $pico->registerComponentImplementation('DependsOnTouchable');
     try {
         $pico->getComponentInstance('DependsOnTouchable');
         $this->fail();
     } catch (AmbiguousComponentResolutionException $e) {
         $this->pass();
     }
 }
 function testLIWithincludedDependencies()
 {
     $pico = new DefaultPicoContainer();
     $pico->registerComponent(new LazyIncludingComponentAdapter(new ConstructorInjectionComponentAdapter('LazyIncludeModel'), 'lazyincludemodel.inc.php'));
     $pico->registerComponentImplementation('SimpleTouchable');
     $this->assertFalse(class_exists('LazyIncludeModel'));
     $ci = $pico->getComponentInstance('LazyIncludeModel');
     $this->assertIsA($ci, 'LazyIncludeModel');
 }
 function testNotThrowingReflectionExceptionWhenIteratingThroughtAllTheCA()
 {
     $pico = new DefaultPicoContainer();
     $pico->registerComponentImplementation('NotDefinedClass');
     $pico->registerComponentImplementation('st', 'SimpleTouchable');
     $pico->registerComponentImplementation('DependsOnTouchable');
     $pico->registerComponentImplementation('DependsOnSimpleTouchable');
     $cObj1 = $pico->getComponentInstance('DependsOnTouchable');
     $cObj2 = $pico->getComponentInstance('DependsOnSimpleTouchable');
     $this->assertNotNull($cObj1);
     $this->assertNotNull($cObj2);
 }
 function testGetAdapterWithTypeWhereTypeIsSubclass()
 {
     $pico = new DefaultPicoContainer();
     $pico->registerComponentImplementation('DerivedTouchable');
     $pico->registerComponentImplementation('DependsOnSimpleTouchable');
     $this->assertNotNull($pico->getComponentInstance('DependsOnSimpleTouchable'));
 }