001package org.picocontainer.defaults.issues;
002
003import static org.junit.Assert.assertEquals;
004
005import org.junit.Test;
006import org.picocontainer.DefaultPicoContainer;
007import org.picocontainer.containers.CompositePicoContainer;
008
009public 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}