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