1 32 package net.sf.retrotranslator.runtime.java.util; 33 34 import java.lang.annotation.ElementType ; 35 import java.util.*; 36 import junit.framework.TestCase; 37 38 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 > 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 > clone = getSampleMap().clone(); 58 assertTrue(clone.equals(getSampleMap())); 59 } 60 61 public void testConstructors() { 62 EnumMap<Day, String > map = getSampleMap(); 63 assertEquals(3, new EnumMap<Day, String >(map).size()); 64 assertEquals(3, new EnumMap<Day, String >((Map<Day, String >) map).size()); 65 assertEquals(3, new EnumMap<Day, String >(new HashMap<Day, String >(map)).size()); 66 try { 67 new EnumMap(String .class); 68 fail(); 69 } catch (NullPointerException e) { 70 } 72 try { 73 new EnumMap<Day, String >(new HashMap<Day, String >()); 74 fail(); 75 } catch (IllegalArgumentException e) { 76 } 78 try { 79 HashMap m = new HashMap(); 80 m.put("a", "b"); 81 new EnumMap(m); 82 fail(); 83 } catch (ClassCastException e) { 84 } 86 } 87 88 public void testEntrySet() { 89 EnumMap<Day, String > map = getSampleMap(); 90 Set<Map.Entry<Day, String >> 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 >> iterator = entries.iterator(); 96 Map.Entry<Day, String > first = iterator.next(); 97 assertEquals(Day.SUNDAY, first.getKey()); 98 assertEquals("Sunday", first.getValue()); 99 Map.Entry<Day, String > second = iterator.next(); 100 assertEquals(Day.WEDNESDAY, second.getKey()); 101 assertEquals("Wednesday", second.getValue()); 102 iterator.remove(); 103 Map.Entry<Day, String > 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 > 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 e) { 154 } 156 try { 157 getSampleMap().put(null, "null"); 158 fail(); 159 } catch (NullPointerException e) { 160 } 162 } 163 164 public void testPutAll() { 165 EnumMap<Day, String > map = new EnumMap<Day, String >(Day.class); 166 map.putAll(getSampleMap()); 167 assertEquals(3, map.size()); 168 map.clear(); 169 map.putAll(new HashMap<Day, String >(getSampleMap())); 170 assertEquals(3, map.size()); 171 EnumMap strings = new EnumMap(ElementType .class); 172 map.putAll(strings); 173 strings.put(ElementType.ANNOTATION_TYPE, "a"); 174 try { 175 map.putAll(strings); 176 fail(); 177 } catch (ClassCastException e) { 178 } 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 > map = getSampleMap(); 191 Collection<String > values = map.values(); 192 assertEquals(3, values.size()); 193 assertTrue(values.contains("Sunday")); 194 assertFalse(values.contains("Saturday")); 195 Iterator<String > 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 > getSampleMap() { 207 EnumMap<Day, String > map = new EnumMap<Day, String >(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 key; 217 private Object value; 218 219 public MapEntry(Object key, Object value) { 220 this.key = key; 221 this.value = value; 222 } 223 224 public Object getKey() { 225 return key; 226 } 227 228 public Object getValue() { 229 return value; 230 } 231 232 public Object setValue(Object value) { 233 Object previous = this.value; 234 this.value = value; 235 return previous; 236 } 237 } 238 } 239 | Popular Tags |