1 10 11 package org.picocontainer.gems.adapters; 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 26 29 public class AssimilatingComponentAdapterFactoryTest extends AbstractComponentAdapterFactoryTestCase { 30 31 34 protected ComponentAdapterFactory createComponentAdapterFactory() { 35 return new AssimilatingComponentAdapterFactory(new ConstructorInjectionComponentAdapterFactory(), Touchable.class); 36 } 37 38 41 public void testAutomaticAssimilation() { 42 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 43 picoContainer.registerComponentImplementation(SimpleTouchable.class); 44 picoContainer.registerComponentImplementation(AlternativeTouchable.class); 45 picoContainer.registerComponentImplementation(CompatibleTouchable.class); 46 final List list = picoContainer.getComponentInstancesOfType(Touchable.class); 47 assertEquals(3, list.size()); 48 } 49 50 53 public void testOnlyOneTouchableComponentKeyPossible() { 54 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 55 picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class); 56 try { 57 picoContainer.registerComponentImplementation(CompatibleTouchable.class); 58 fail("DuplicateComponentKeyRegistrationException expected"); 59 } catch (final DuplicateComponentKeyRegistrationException e) { 60 } 62 } 63 64 67 public void testMultipleAssimilatedComponentsWithUserDefinedKeys() { 68 picoContainer = new DefaultPicoContainer(createComponentAdapterFactory()); 69 picoContainer.registerComponentImplementation(Touchable.class, SimpleTouchable.class); 70 picoContainer.registerComponentImplementation("1", CompatibleTouchable.class); 71 picoContainer.registerComponentImplementation("2", CompatibleTouchable.class); 72 picoContainer.registerComponentImplementation("3", CompatibleTouchable.class); 73 final List list = picoContainer.getComponentInstancesOfType(Touchable.class); 74 assertEquals(4, list.size()); 75 } 76 } 77 | Popular Tags |