001 /*****************************************************************************
002 * Copyright (C) PicoContainer Organization. All rights reserved. *
003 * ------------------------------------------------------------------------- *
004 * The software in this package is published under the terms of the BSD *
005 * style license a copy of which has been included with this distribution in *
006 * the LICENSE.txt file. *
007 * *
008 * Original code by *
009 *****************************************************************************/
010 package org.picocontainer.defaults;
011
012 import org.junit.Test;
013
014 /**
015 * Uncomment all the tests in this class (as well as the obvious places in
016 * ConstructorInjectionComponentAdapter) in order to run with generics support
017 * Requires JDK 1.5 with generics enabled.
018 *
019 * @author Aslak Hellesøy
020 */
021 public class GenericsTestCase {
022 @Test public void testDummy() {
023
024 }
025
026 /*
027 private MutablePicoContainer pico;
028 private Shark shark;
029 private Cod cod;
030 private Bowl bowl;
031
032 protected void setUp() throws Exception {
033 pico = new DefaultPicoContainer();
034
035 shark = new Shark();
036 cod = new Cod();
037
038 pico.addAdapter("shark", shark);
039 pico.addAdapter(cod);
040 pico.addAdapter(Bowl.class);
041
042 bowl = (Bowl) pico.getComponent(Bowl.class);
043 }
044
045 public static interface Fish {
046 }
047
048 public static class Cod implements Fish{
049 }
050
051 public static class Shark implements Fish{
052 }
053
054 public static class Bowl {
055 private final Collection<Fish> fishes;
056 private final Set<Cod> cods;
057 private final Map<String, Fish> stringFishMap;
058 private final Map<Object, Shark> objectSharkMap;
059
060 public Bowl(Collection<Fish> fishes, Set<Cod> cods, Map<String,Fish> stringFishMap, Map<Object,Shark> objectSharkMap) {
061 this.fishes = fishes;
062 this.cods = cods;
063 this.stringFishMap = stringFishMap;
064 this.objectSharkMap = objectSharkMap;
065 }
066
067 public Collection<Fish> getFishes() {
068 return fishes;
069 }
070
071 public Set<Cod> getCods() {
072 return cods;
073 }
074
075 public Map<String,Fish> getStringFishMap() {
076 return stringFishMap;
077 }
078
079 public Map<Object, Shark> getObjectSharkMap() {
080 return objectSharkMap;
081 }
082 }
083
084 @Test public void testShouldCreateBowlWithFishCollection() {
085 Collection<Fish> fishes = bowl.getFishes();
086 assertEquals(2, fishes.size());
087 assertTrue(fishes.contains(shark));
088 assertTrue(fishes.contains(cod));
089
090 Set<Cod> cods = bowl.getCods();
091 assertEquals(1, cods.size());
092 assertTrue(cods.contains(cod));
093 }
094
095 @Test public void testShouldFilterMapByKeyType() {
096 Map<String, Fish> fishMap = bowl.getStringFishMap();
097 assertEquals(1, fishMap.size());
098 assertSame(shark, fishMap.get("shark"));
099 }
100
101 @Test public void testShouldFilterMapByValueType() {
102 Map<Object, Shark> fishMap = bowl.getObjectSharkMap();
103 assertEquals(1, fishMap.size());
104 assertSame(shark, fishMap.get("shark"));
105 }
106
107 public static class UngenericCollectionBowl {
108 public UngenericCollectionBowl(Collection fish) {
109 }
110 }
111
112 @Test public void testShouldNotInstantiateCollectionForUngenericCollectionParameters() {
113 pico.addAdapter(UngenericCollectionBowl.class);
114 try {
115 pico.getComponent(UngenericCollectionBowl.class);
116 fail();
117 } catch (UnsatisfiableDependenciesException e) {
118 // expected
119 }
120 }
121
122 public static class UngenericMapBowl {
123 public UngenericMapBowl(Map fish) {
124 }
125 }
126
127 @Test public void testShouldNotInstantiateMapForUngenericMapParameters() {
128 pico.addAdapter(UngenericMapBowl.class);
129 try {
130 pico.getComponent(UngenericMapBowl.class);
131 fail();
132 } catch (UnsatisfiableDependenciesException e) {
133 // expected
134 }
135 }
136
137 public static class AnotherGenericCollectionBowl {
138 private final Collection<String> strings;
139
140 public AnotherGenericCollectionBowl(Collection<String> strings) {
141 this.strings = strings;
142 }
143
144 public Collection<String> getStrings() {
145 return strings;
146 }
147 }
148
149 @Test public void testShouldInstantiateAmptyCollectionForAnotherGenericCollection() {
150 pico.addAdapter(AnotherGenericCollectionBowl.class);
151 AnotherGenericCollectionBowl anotherGenericCollectionBowl = (AnotherGenericCollectionBowl) pico.getComponent(AnotherGenericCollectionBowl.class);
152 assertEquals(0, anotherGenericCollectionBowl.getStrings().size());
153 }
154 */
155 }