001 package org.picocontainer.defaults.issues;
002
003 import org.picocontainer.DefaultPicoContainer;
004 import org.picocontainer.parameters.CollectionComponentParameter;
005 import static org.junit.Assert.assertEquals;
006 import org.junit.Test;
007
008 import java.util.List;
009
010 public class Issue0343TestCase {
011
012 @Test
013 public void testRegisteringSubsetOfGenericCollectionParameters() {
014 DefaultPicoContainer pico = new DefaultPicoContainer();
015 pico.addComponent(Cod.class);
016 pico.addComponent(Shark.class);
017 pico.addComponent(GenericBowl.class, GenericBowl.class,
018 new CollectionComponentParameter(Cod.class, false));
019
020 GenericBowl bowl = pico.getComponent(GenericBowl.class);
021 // FAILS with PicoContainer 2.7-SNAPSHOT, returns 2
022 assertEquals(1, bowl.fishes.size());
023 }
024
025 public static interface Fish {
026 }
027
028 public static class Cod implements Fish {
029 }
030
031 public static class Shark implements Fish {
032 }
033
034 public static class GenericBowl {
035 List<Fish> fishes;
036
037 public GenericBowl(List<Fish> fishes) {
038 this.fishes = fishes;
039 }
040 }
041
042 }