1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.collections4.map;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertFalse;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22 import static org.junit.jupiter.api.Assertions.assertTrue;
23
24 import java.util.HashMap;
25 import java.util.Map;
26
27 import org.apache.commons.collections4.Factory;
28 import org.apache.commons.collections4.FactoryUtils;
29 import org.apache.commons.collections4.IterableMap;
30 import org.apache.commons.collections4.Transformer;
31 import org.apache.commons.collections4.TransformerUtils;
32 import org.apache.commons.collections4.functors.ConstantFactory;
33 import org.junit.jupiter.api.Test;
34
35
36
37
38
39
40
41
42 public class DefaultedMapTest<K, V> extends AbstractIterableMapTest<K, V> {
43
44 protected final Factory<V> nullFactory = FactoryUtils.<V>nullFactory();
45 protected final Transformer<K, V> nullTransformer = TransformerUtils.<K, V>nullTransformer();
46
47 @Override
48 public String getCompatibilityVersion() {
49 return "4";
50 }
51
52 @Override
53 public IterableMap<K, V> makeObject() {
54 return DefaultedMap.defaultedMap(new HashMap<K, V>(), nullFactory);
55 }
56
57 @Test
58 public void testFactoryMethods() {
59 final HashMap<K, V> base = new HashMap<>();
60 assertThrows(NullPointerException.class, () -> DefaultedMap.defaultedMap(null, (V) "DEFAULT_VALUE"));
61 assertThrows(NullPointerException.class, () -> DefaultedMap.defaultedMap((Map<K, V>) null, nullFactory));
62 assertThrows(NullPointerException.class, () -> DefaultedMap.defaultedMap(base, (Factory<V>) null));
63 assertThrows(NullPointerException.class, () -> DefaultedMap.defaultedMap((Map<K, V>) null, nullTransformer));
64 assertThrows(NullPointerException.class, () -> DefaultedMap.defaultedMap(base, (Transformer<K, V>) null));
65 }
66
67 @Test
68 @Override
69 @SuppressWarnings("unchecked")
70 public void testMapGet() {
71 final Map<K, V> map = new DefaultedMap<>((V) "NULL");
72
73 assertEquals(0, map.size());
74 assertFalse(map.containsKey("NotInMap"));
75 assertEquals("NULL", map.get("NotInMap"));
76
77 map.put((K) "Key", (V) "Value");
78 assertEquals(1, map.size());
79 assertTrue(map.containsKey("Key"));
80 assertEquals("Value", map.get("Key"));
81 assertFalse(map.containsKey("NotInMap"));
82 assertEquals("NULL", map.get("NotInMap"));
83 }
84
85 @Test
86 @SuppressWarnings("unchecked")
87 public void testMapGet2() {
88 final HashMap<K, V> base = new HashMap<>();
89 final Map<K, V> map = DefaultedMap.defaultedMap(base, (V) "NULL");
90
91 assertEquals(0, map.size());
92 assertEquals(0, base.size());
93 assertFalse(map.containsKey("NotInMap"));
94 assertEquals("NULL", map.get("NotInMap"));
95
96 map.put((K) "Key", (V) "Value");
97 assertEquals(1, map.size());
98 assertEquals(1, base.size());
99 assertTrue(map.containsKey("Key"));
100 assertEquals("Value", map.get("Key"));
101 assertFalse(map.containsKey("NotInMap"));
102 assertEquals("NULL", map.get("NotInMap"));
103 }
104
105 @Test
106 @SuppressWarnings("unchecked")
107 public void testMapGet3() {
108 final HashMap<K, V> base = new HashMap<>();
109 final Map<K, V> map = DefaultedMap.defaultedMap(base, ConstantFactory.constantFactory((V) "NULL"));
110
111 assertEquals(0, map.size());
112 assertEquals(0, base.size());
113 assertFalse(map.containsKey("NotInMap"));
114 assertEquals("NULL", map.get("NotInMap"));
115
116 map.put((K) "Key", (V) "Value");
117 assertEquals(1, map.size());
118 assertEquals(1, base.size());
119 assertTrue(map.containsKey("Key"));
120 assertEquals("Value", map.get("Key"));
121 assertFalse(map.containsKey("NotInMap"));
122 assertEquals("NULL", map.get("NotInMap"));
123 }
124
125 @Test
126 @SuppressWarnings("unchecked")
127 public void testMapGet4() {
128 final HashMap<K, V> base = new HashMap<>();
129 final Map<K, V> map = DefaultedMap.defaultedMap(base, (Transformer<K, V>) input -> {
130 if (input instanceof String) {
131 return (V) "NULL";
132 }
133 return (V) "NULL_OBJECT";
134 });
135
136 assertEquals(0, map.size());
137 assertEquals(0, base.size());
138 assertFalse(map.containsKey("NotInMap"));
139 assertEquals("NULL", map.get("NotInMap"));
140 assertEquals("NULL_OBJECT", map.get(Integer.valueOf(0)));
141
142 map.put((K) "Key", (V) "Value");
143 assertEquals(1, map.size());
144 assertEquals(1, base.size());
145 assertTrue(map.containsKey("Key"));
146 assertEquals("Value", map.get("Key"));
147 assertFalse(map.containsKey("NotInMap"));
148 assertEquals("NULL", map.get("NotInMap"));
149 assertEquals("NULL_OBJECT", map.get(Integer.valueOf(0)));
150 }
151
152
153
154
155
156
157
158
159
160
161
162
163 }