001 package org.picocontainer.defaults.issues;
002
003 import org.junit.Test;import static org.junit.Assert.assertFalse;import static org.junit.Assert.assertEquals;
004 import org.picocontainer.Startable;
005 import org.picocontainer.DefaultPicoContainer;
006 import org.picocontainer.ComponentAdapter;
007 import org.picocontainer.Characteristics;
008 import org.picocontainer.injectors.SetterInjection;
009 import org.picocontainer.behaviors.Cached;
010
011 import java.util.List;
012
013 public class Issue0354TestCase {
014
015 @Test
016 public void testGenericInjectionWithSetterInjection() {
017 DefaultPicoContainer pico = new DefaultPicoContainer(new SetterInjection());
018 pico.addComponent(new Cod());
019 pico.addComponent(new Shark());
020 pico.addComponent(GenericBowl.class);
021 //pico.addComponent(ArrayList.class);
022 //pico.addComponent(ArrayList.class, ArrayList.class, new CollectionComponentParameter(Fish.class, false));
023
024 GenericBowl bowl = pico.getComponent(GenericBowl.class);
025 assertEquals(2, bowl.fishes.size());
026 }
027
028 @Test
029 public void testGenericInjectionWithConstructorInjection() {
030 DefaultPicoContainer pico = new DefaultPicoContainer();
031 pico.addComponent(new Cod());
032 pico.addComponent(new Shark());
033 pico.addComponent(GenericBowl.class);
034
035 GenericBowl bowl = pico.getComponent(GenericBowl.class);
036 assertEquals(2, bowl.fishes.size());
037 }
038
039 public static interface Fish {
040 }
041
042 public static class Cod implements Fish {
043 }
044
045 public static class Shark implements Fish {
046 }
047
048 public static class GenericBowl {
049 List<Fish> fishes;
050
051 public void setFishes(List<Fish> fishes) {
052 this.fishes = fishes;
053 }
054
055 public GenericBowl() {
056 }
057
058 public GenericBowl(List<Fish> fishes) {
059 this.fishes = fishes;
060 }
061 }
062
063 }