1 package org.codehaus.plexus.util;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.util.ArrayList;
20 import java.util.HashMap;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.Properties;
24
25 import org.junit.jupiter.api.Test;
26
27 import static org.junit.jupiter.api.Assertions.assertEquals;
28 import static org.junit.jupiter.api.Assertions.assertNotNull;
29 import static org.junit.jupiter.api.Assertions.assertNull;
30
31
32
33
34
35
36
37
38 public class CollectionUtilsTest {
39
40
41
42 @Test
43 public void testMergeMaps() {
44 Map<String, String> dominantMap = new HashMap<String, String>();
45 dominantMap.put("a", "a");
46 dominantMap.put("b", "b");
47 dominantMap.put("c", "c");
48 dominantMap.put("d", "d");
49 dominantMap.put("e", "e");
50 dominantMap.put("f", "f");
51
52 Map<String, String> recessiveMap = new HashMap<String, String>();
53 recessiveMap.put("a", "invalid");
54 recessiveMap.put("b", "invalid");
55 recessiveMap.put("c", "invalid");
56 recessiveMap.put("x", "x");
57 recessiveMap.put("y", "y");
58 recessiveMap.put("z", "z");
59
60 Map<String, String> result = CollectionUtils.mergeMaps(dominantMap, recessiveMap);
61
62
63 assertEquals(9, result.keySet().size());
64
65
66 assertEquals("a", result.get("a"));
67 assertEquals("b", result.get("b"));
68 assertEquals("c", result.get("c"));
69 assertEquals("d", result.get("d"));
70 assertEquals("e", result.get("e"));
71 assertEquals("f", result.get("f"));
72 assertEquals("x", result.get("x"));
73 assertEquals("y", result.get("y"));
74 assertEquals("z", result.get("z"));
75 }
76
77
78
79
80 @SuppressWarnings("unchecked")
81 @Test
82 public void testMergeMapArray() {
83
84 Map<String, String> result0 = CollectionUtils.mergeMaps(new Map[] {});
85
86 assertNull(result0);
87
88
89 Map<String, String> map1 = new HashMap<String, String>();
90 map1.put("a", "a");
91
92 Map<String, String> result1 = CollectionUtils.mergeMaps(new Map[] {map1});
93
94 assertEquals("a", result1.get("a"));
95
96
97 Map<String, String> map2 = new HashMap<String, String>();
98 map2.put("a", "aa");
99 map2.put("b", "bb");
100
101 Map<String, String> result2 = CollectionUtils.mergeMaps(new Map[] {map1, map2});
102
103 assertEquals("a", result2.get("a"));
104 assertEquals("bb", result2.get("b"));
105
106
107 Map<String, String> result3 = CollectionUtils.mergeMaps(new Map[] {map2, map1});
108
109 assertEquals("aa", result3.get("a"));
110 assertEquals("bb", result3.get("b"));
111
112
113 Map<String, String> map3 = new HashMap<String, String>();
114 map3.put("a", "aaa");
115 map3.put("b", "bbb");
116 map3.put("c", "ccc");
117
118 Map<String, String> result4 = CollectionUtils.mergeMaps(new Map[] {map1, map2, map3});
119
120 assertEquals("a", result4.get("a"));
121 assertEquals("bb", result4.get("b"));
122 assertEquals("ccc", result4.get("c"));
123
124
125 Map<String, String> result5 = CollectionUtils.mergeMaps(new Map[] {map3, map2, map1});
126
127 assertEquals("aaa", result5.get("a"));
128 assertEquals("bbb", result5.get("b"));
129 assertEquals("ccc", result5.get("c"));
130 }
131
132
133
134
135 @org.junit.jupiter.api.Test
136 public void testMavenPropertiesLoading() {
137
138
139 Properties systemProperties = new Properties();
140 Properties userBuildProperties = new Properties();
141 Properties projectBuildProperties = new Properties();
142 Properties projectProperties = new Properties();
143 Properties driverProperties = new Properties();
144
145
146 systemProperties.setProperty("maven.home", "/projects/maven");
147
148
149 userBuildProperties.setProperty("maven.username", "jvanzyl");
150 userBuildProperties.setProperty("maven.repo.remote.enabled", "false");
151 userBuildProperties.setProperty("maven.repo.local", "/opt/maven/artifact");
152
153
154 projectBuildProperties.setProperty("maven.final.name", "maven");
155
156 String mavenRepoRemote = "http://www.ibiblio.org/maven,http://foo/bar";
157
158
159 projectProperties.setProperty("maven.repo.remote", mavenRepoRemote);
160
161 String basedir = "/home/jvanzyl/projects/maven";
162
163
164 driverProperties.setProperty("basedir", basedir);
165 driverProperties.setProperty("maven.build.src", "${basedir}/src");
166 driverProperties.setProperty("maven.build.dir", "${basedir}/target");
167 driverProperties.setProperty("maven.build.dest", "${maven.build.dir}/classes");
168 driverProperties.setProperty("maven.repo.remote", "http://www.ibiblio.org/maven");
169 driverProperties.setProperty("maven.final.name", "maven-1.0");
170 driverProperties.setProperty("maven.repo.remote.enabled", "true");
171 driverProperties.setProperty("maven.repo.local", "${maven.home}/artifact");
172
173 Map result = CollectionUtils.mergeMaps(new Map[] {
174 systemProperties, userBuildProperties, projectBuildProperties, projectProperties, driverProperties
175 });
176
177
178 assertEquals("/projects/maven", (String) result.get("maven.home"));
179
180
181 assertEquals("/opt/maven/artifact", (String) result.get("maven.repo.local"));
182 assertEquals("false", (String) result.get("maven.repo.remote.enabled"));
183 assertEquals("jvanzyl", (String) result.get("maven.username"));
184
185
186 assertEquals("maven", (String) result.get("maven.final.name"));
187
188
189 assertEquals(mavenRepoRemote, (String) result.get("maven.repo.remote"));
190 }
191
192
193
194
195 @org.junit.jupiter.api.Test
196 public void testIteratorToListWithAPopulatedList() {
197 List<String> original = new ArrayList<String>();
198
199 original.add("en");
200 original.add("to");
201 original.add("tre");
202
203 List<String> copy = CollectionUtils.iteratorToList(original.iterator());
204
205 assertNotNull(copy);
206
207 assertEquals(3, copy.size());
208
209 assertEquals("en", copy.get(0));
210 assertEquals("to", copy.get(1));
211 assertEquals("tre", copy.get(2));
212 }
213
214
215
216
217 @org.junit.jupiter.api.Test
218 public void testIteratorToListWithAEmptyList() {
219 List<String> original = new ArrayList<String>();
220
221 List<String> copy = CollectionUtils.iteratorToList(original.iterator());
222
223 assertNotNull(copy);
224
225 assertEquals(0, copy.size());
226 }
227 }