1 10 11 package org.picocontainer.gems; 12 13 import org.picocontainer.defaults.ComponentAdapterFactory; 14 import org.picocontainer.defaults.ConstructorInjectionComponentAdapterFactory; 15 import org.picocontainer.defaults.DefaultPicoContainer; 16 import org.picocontainer.defaults.DuplicateComponentKeyRegistrationException; 17 import org.picocontainer.tck.AbstractComponentAdapterFactoryTestCase; 18 import org.picocontainer.testmodel.AlternativeTouchable; 19 import org.picocontainer.testmodel.CompatibleTouchable; 20 import org.picocontainer.testmodel.SimpleTouchable; 21 import org.picocontainer.testmodel.Touchable; 22 23 import java.util.List ; 24 25 28 public class AssimilatingComponentAdapterFactoryTest extends AbstractComponentAdapterFactoryTestCase { 29 30 33 protected ComponentAdapterFactory createComponentAdapterFactory() { 34 return new AssimilatingComponentAdapterFactory(new ConstructorInjectionComponentAdapterFactory(), Touchable.class); 35 } 36 37 40 public void testAutomaticAssimilation() { 41 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 42 picoContainer.registerComponentImplementation(SimpleTouchable.class); 43 picoContainer.registerComponentImplementation(AlternativeTouchable.class); 44 picoContainer.registerComponentImplementation(CompatibleTouchable.class); 45 final List list = picoContainer.getComponentInstancesOfType(Touchable.class); 46 assertEquals(3, list.size()); 47 } 48 49 52 public void testOnlyOneTouchableComponentKeyPossible() { 53 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 54 picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class); 55 try { 56 picoContainer.registerComponentImplementation(CompatibleTouchable.class); 57 fail("DuplicateComponentKeyRegistrationException expected"); 58 } catch(final DuplicateComponentKeyRegistrationException e) { 59 } 61 } 62 63 66 public void testMultipleAssimilatedComponentsWithUserDefinedKeys() { 67 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 68 picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class); 69 picoContainer.registerComponentImplementation("1", CompatibleTouchable.class); 70 picoContainer.registerComponentImplementation("2", CompatibleTouchable.class); 71 picoContainer.registerComponentImplementation("3", CompatibleTouchable.class); 72 final List list = picoContainer.getComponentInstancesOfType(Touchable.class); 73 assertEquals(4, list.size()); 74 } 75 } 76 | Popular Tags |