KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > retrotranslator > runtime > java > util > EnumMap_TestCase


1 /***
2  * Retrotranslator: a Java bytecode transformer that translates Java classes
3  * compiled with JDK 5.0 into classes that can be run on JVM 1.4.
4  *
5  * Copyright (c) 2005 - 2007 Taras Puchko
6  * All rights reserved.
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  */

32 package net.sf.retrotranslator.runtime.java.util;
33
34 import java.lang.annotation.ElementType JavaDoc;
35 import java.util.*;
36 import junit.framework.TestCase;
37
38 /**
39  * @author Taras Puchko
40  */

41 public class EnumMap_TestCase extends TestCase {
42
43     private static enum Day {
44         SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIEDAY, SATURDAY
45     }
46
47     public void testClear() {
48         EnumMap<Day, String JavaDoc> map = getSampleMap();
49         assertFalse(map.isEmpty());
50         assertEquals(3, map.size());
51         map.clear();
52         assertTrue(map.isEmpty());
53         assertEquals(0, map.size());
54     }
55
56     public void testClone() {
57         EnumMap<Day, String JavaDoc> clone = getSampleMap().clone();
58         assertTrue(clone.equals(getSampleMap()));
59     }
60
61     public void testConstructors() {
62         EnumMap<Day, String JavaDoc> map = getSampleMap();
63         assertEquals(3, new EnumMap<Day, String JavaDoc>(map).size());
64         assertEquals(3, new EnumMap<Day, String JavaDoc>((Map<Day, String JavaDoc>) map).size());
65         assertEquals(3, new EnumMap<Day, String JavaDoc>(new HashMap<Day, String JavaDoc>(map)).size());
66         try {
67             new EnumMap(String JavaDoc.class);
68             fail();
69         } catch (NullPointerException JavaDoc e) {
70             //ok
71
}
72         try {
73             new EnumMap<Day, String JavaDoc>(new HashMap<Day, String JavaDoc>());
74             fail();
75         } catch (IllegalArgumentException JavaDoc e) {
76             //ok
77
}
78         try {
79             HashMap m = new HashMap();
80             m.put("a", "b");
81             new EnumMap(m);
82             fail();
83         } catch (ClassCastException JavaDoc e) {
84             //ok
85
}
86     }
87
88     public void testEntrySet() {
89         EnumMap<Day, String JavaDoc> map = getSampleMap();
90         Set<Map.Entry<Day, String JavaDoc>> entries = map.entrySet();
91         assertEquals(3, entries.size());
92         assertFalse(entries.contains("a"));
93         assertTrue(entries.contains(new MapEntry(Day.SUNDAY, "Sunday")));
94         assertFalse(entries.contains(new MapEntry(Day.WEDNESDAY, "Frieday")));
95         Iterator<Map.Entry<Day, String JavaDoc>> iterator = entries.iterator();
96         Map.Entry<Day, String JavaDoc> first = iterator.next();
97         assertEquals(Day.SUNDAY, first.getKey());
98         assertEquals("Sunday", first.getValue());
99         Map.Entry<Day, String JavaDoc> second = iterator.next();
100         assertEquals(Day.WEDNESDAY, second.getKey());
101         assertEquals("Wednesday", second.getValue());
102         iterator.remove();
103         Map.Entry<Day, String JavaDoc> third = iterator.next();
104         assertEquals(Day.FRIEDAY, third.getKey());
105         assertEquals("Frieday", third.getValue());
106         assertFalse(iterator.hasNext());
107         assertFalse(entries.remove("a"));
108         assertFalse(entries.remove(new MapEntry(Day.FRIEDAY, "Sunday")));
109         assertTrue(entries.remove(new MapEntry(Day.SUNDAY, "Sunday")));
110         assertEquals(1, entries.size());
111         assertEquals(1, map.size());
112     }
113
114     public void testEquals() {
115         assertTrue(getSampleMap().equals(getSampleMap()));
116         assertTrue(getSampleMap().equals(new HashMap(getSampleMap())));
117     }
118
119     public void testGet() {
120         assertEquals("Frieday", getSampleMap().get(Day.FRIEDAY));
121         assertEquals(null, getSampleMap().get("s"));
122         assertEquals(null, getSampleMap().get(null));
123     }
124
125     public void testKeySet() {
126         EnumMap<Day, String JavaDoc> map = getSampleMap();
127         Set<Day> days = map.keySet();
128         assertFalse(days.isEmpty());
129         assertEquals(3, days.size());
130         assertTrue(days.contains(Day.SUNDAY));
131         assertFalse(days.contains(Day.MONDAY));
132         assertFalse(days.contains(Day.TUESDAY));
133         assertTrue(days.contains(Day.WEDNESDAY));
134         assertFalse(days.contains(Day.THURSDAY));
135         assertTrue(days.contains(Day.FRIEDAY));
136         assertFalse(days.contains(Day.SATURDAY));
137         Iterator<Day> iterator = days.iterator();
138         assertEquals(Day.SUNDAY, iterator.next());
139         assertEquals(Day.WEDNESDAY, iterator.next());
140         iterator.remove();
141         assertEquals(Day.FRIEDAY, iterator.next());
142         assertFalse(iterator.hasNext());
143         assertTrue(days.remove(Day.FRIEDAY));
144         assertEquals(1, days.size());
145         assertEquals(1, map.size());
146     }
147
148     public void testPut() {
149         assertEquals("Sunday", getSampleMap().put(Day.SUNDAY, "v"));
150         try {
151             ((Map) getSampleMap()).put("k", "v");
152             fail();
153         } catch (ClassCastException JavaDoc e) {
154             //ok
155
}
156         try {
157             getSampleMap().put(null, "null");
158             fail();
159         } catch (NullPointerException JavaDoc e) {
160             //ok
161
}
162     }
163
164     public void testPutAll() {
165         EnumMap<Day, String JavaDoc> map = new EnumMap<Day, String JavaDoc>(Day.class);
166         map.putAll(getSampleMap());
167         assertEquals(3, map.size());
168         map.clear();
169         map.putAll(new HashMap<Day, String JavaDoc>(getSampleMap()));
170         assertEquals(3, map.size());
171         EnumMap strings = new EnumMap(ElementType JavaDoc.class);
172         map.putAll(strings);
173         strings.put(ElementType.ANNOTATION_TYPE, "a");
174         try {
175             map.putAll(strings);
176             fail();
177         } catch (ClassCastException JavaDoc e) {
178             //ok
179
}
180     }
181
182     public void testRemove() {
183         assertEquals("Wednesday", getSampleMap().remove(Day.WEDNESDAY));
184         assertNull(getSampleMap().remove(Day.MONDAY));
185         assertNull(getSampleMap().remove(null));
186         assertNull(getSampleMap().remove("k"));
187     }
188
189     public void testValues() {
190         EnumMap<Day, String JavaDoc> map = getSampleMap();
191         Collection<String JavaDoc> values = map.values();
192         assertEquals(3, values.size());
193         assertTrue(values.contains("Sunday"));
194         assertFalse(values.contains("Saturday"));
195         Iterator<String JavaDoc> iterator = values.iterator();
196         assertEquals("Sunday", iterator.next());
197         assertEquals("Wednesday", iterator.next());
198         iterator.remove();
199         assertEquals("Frieday", iterator.next());
200         assertFalse(iterator.hasNext());
201         values.remove("Sunday");
202         assertEquals(1, values.size());
203         assertEquals(1, map.size());
204     }
205
206     private EnumMap<Day, String JavaDoc> getSampleMap() {
207         EnumMap<Day, String JavaDoc> map = new EnumMap<Day, String JavaDoc>(Day.class);
208         assertNull(map.put(Day.SUNDAY, "Sunday"));
209         assertNull(map.put(Day.FRIEDAY, "Frieday"));
210         assertNull(map.put(Day.WEDNESDAY, "Wednesday"));
211         return map;
212     }
213
214     private static class MapEntry implements Map.Entry {
215
216         private Object JavaDoc key;
217         private Object JavaDoc value;
218
219         public MapEntry(Object JavaDoc key, Object JavaDoc value) {
220             this.key = key;
221             this.value = value;
222         }
223
224         public Object JavaDoc getKey() {
225             return key;
226         }
227
228         public Object JavaDoc getValue() {
229             return value;
230         }
231
232         public Object JavaDoc setValue(Object JavaDoc value) {
233             Object JavaDoc previous = this.value;
234             this.value = value;
235             return previous;
236         }
237     }
238 }
239
Popular Tags