001 package org.picocontainer.defaults.issues;
002
003 import static org.junit.Assert.assertEquals;
004
005 import org.junit.Test;
006 import org.picocontainer.DefaultPicoContainer;
007 import org.picocontainer.containers.CompositePicoContainer;
008
009 public class Issue0384TestCase {
010
011 public static interface AnInterface {
012
013 }
014 public static interface AnInterface2 {
015
016 }
017
018 public static class Impl1 implements AnInterface {
019
020 }
021
022 public static class Impl2 implements AnInterface {
023
024 }
025
026 @Test
027 public void testComposition() throws Exception {
028 DefaultPicoContainer primary = new DefaultPicoContainer();
029 primary.addComponent(AnInterface.class, Impl1.class);
030
031 DefaultPicoContainer secondary = new DefaultPicoContainer();
032 secondary.addComponent(AnInterface.class, Impl2.class);
033
034 CompositePicoContainer composite = new CompositePicoContainer(primary, secondary);
035 DefaultPicoContainer child = new DefaultPicoContainer(composite);
036
037 assertEquals(Impl1.class, child.getComponent(Impl1.class).getClass());
038 assertEquals(Impl2.class, child.getComponent(Impl2.class).getClass());
039 assertEquals(Impl1.class, child.getComponent(AnInterface.class).getClass());
040 }
041
042 }