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}