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')); }