1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.configuration2;
19
20 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
21 import static org.junit.jupiter.api.Assertions.assertEquals;
22 import static org.junit.jupiter.api.Assertions.assertFalse;
23 import static org.junit.jupiter.api.Assertions.assertInstanceOf;
24 import static org.junit.jupiter.api.Assertions.assertNotNull;
25 import static org.junit.jupiter.api.Assertions.assertNull;
26 import static org.junit.jupiter.api.Assertions.assertThrows;
27 import static org.junit.jupiter.api.Assertions.assertTrue;
28 import static org.mockito.Mockito.mock;
29 import static org.mockito.Mockito.verify;
30 import static org.mockito.Mockito.verifyNoMoreInteractions;
31
32 import java.awt.Color;
33 import java.math.BigDecimal;
34 import java.math.BigInteger;
35 import java.net.InetAddress;
36 import java.net.URI;
37 import java.net.URL;
38 import java.text.DateFormat;
39 import java.text.ParseException;
40 import java.text.SimpleDateFormat;
41 import java.util.ArrayList;
42 import java.util.Calendar;
43 import java.util.Date;
44 import java.util.Iterator;
45 import java.util.List;
46 import java.util.Locale;
47 import java.util.NoSuchElementException;
48
49 import org.apache.commons.configuration2.convert.DefaultConversionHandler;
50 import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler;
51 import org.apache.commons.configuration2.ex.ConversionException;
52 import org.junit.jupiter.api.BeforeEach;
53 import org.junit.jupiter.api.Test;
54
55 import jakarta.mail.internet.InternetAddress;
56
57
58
59 public class TestDataConfiguration {
60
61 private static final String DATE_PATTERN = "yyyy-MM-dd";
62
63
64
65
66
67
68
69 private static Date expectedDate() throws ParseException {
70 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
71 return format.parse("2004-01-01");
72 }
73
74
75 private DataConfiguration conf;
76
77 @BeforeEach
78 public void setUp() throws Exception {
79 final BaseConfiguration baseConfig = new BaseConfiguration();
80 baseConfig.setListDelimiterHandler(new DefaultListDelimiterHandler(','));
81 conf = new DataConfiguration(baseConfig);
82
83
84 conf.addProperty("empty", "");
85
86
87 conf.addProperty("boolean.list1", "true");
88 conf.addProperty("boolean.list1", "false");
89 conf.addProperty("boolean.list2", "true, false");
90 conf.addProperty("boolean.list3", Boolean.TRUE);
91 conf.addProperty("boolean.list3", Boolean.FALSE);
92 conf.addPropertyDirect("boolean.list4", new Boolean[] {Boolean.TRUE, Boolean.FALSE});
93 conf.addPropertyDirect("boolean.list5", new boolean[] {true, false});
94 final List<Object> booleans = new ArrayList<>();
95 booleans.add(Boolean.TRUE);
96 booleans.add(Boolean.FALSE);
97 conf.addProperty("boolean.list6", booleans);
98 conf.addProperty("boolean.string", "true");
99 conf.addProperty("boolean.object", Boolean.TRUE);
100 conf.addProperty("boolean.list.interpolated", "${boolean.string},false");
101
102
103 conf.addProperty("byte.list1", "1");
104 conf.addProperty("byte.list1", "2");
105 conf.addProperty("byte.list2", "1, 2");
106 conf.addProperty("byte.list3", Byte.valueOf("1"));
107 conf.addProperty("byte.list3", Byte.valueOf("2"));
108 conf.addPropertyDirect("byte.list4", new Byte[] {Byte.valueOf("1"), Byte.valueOf("2")});
109 conf.addPropertyDirect("byte.list5", new byte[] {1, 2});
110 final List<Object> bytes = new ArrayList<>();
111 bytes.add(Byte.valueOf("1"));
112 bytes.add(Byte.valueOf("2"));
113 conf.addProperty("byte.list6", bytes);
114 conf.addProperty("byte.string", "1");
115 conf.addProperty("byte.object", Byte.valueOf("1"));
116 conf.addProperty("byte.list.interpolated", "${byte.string},2");
117
118
119 conf.addProperty("short.list1", "1");
120 conf.addProperty("short.list1", "2");
121 conf.addProperty("short.list2", "1, 2");
122 conf.addProperty("short.list3", Short.valueOf("1"));
123 conf.addProperty("short.list3", Short.valueOf("2"));
124 conf.addPropertyDirect("short.list4", new Short[] {Short.valueOf("1"), Short.valueOf("2")});
125 conf.addPropertyDirect("short.list5", new short[] {1, 2});
126 final List<Object> shorts = new ArrayList<>();
127 shorts.add(Short.valueOf("1"));
128 shorts.add(Short.valueOf("2"));
129 conf.addProperty("short.list6", shorts);
130 conf.addProperty("short.string", "1");
131 conf.addProperty("short.object", Short.valueOf("1"));
132 conf.addProperty("short.list.interpolated", "${short.string},2");
133
134
135 conf.addProperty("integer.list1", "1");
136 conf.addProperty("integer.list1", "2");
137 conf.addProperty("integer.list2", "1, 2");
138 conf.addProperty("integer.list3", Integer.valueOf("1"));
139 conf.addProperty("integer.list3", Integer.valueOf("2"));
140 conf.addPropertyDirect("integer.list4", new Integer[] {Integer.valueOf("1"), Integer.valueOf("2")});
141 conf.addPropertyDirect("integer.list5", new int[] {1, 2});
142 final List<Object> integers = new ArrayList<>();
143 integers.add(Integer.valueOf("1"));
144 integers.add(Integer.valueOf("2"));
145 conf.addProperty("integer.list6", integers);
146 conf.addProperty("integer.string", "1");
147 conf.addProperty("integer.object", Integer.valueOf("1"));
148 conf.addProperty("integer.list.interpolated", "${integer.string},2");
149
150
151 conf.addProperty("long.list1", "1");
152 conf.addProperty("long.list1", "2");
153 conf.addProperty("long.list2", "1, 2");
154 conf.addProperty("long.list3", Long.valueOf("1"));
155 conf.addProperty("long.list3", Long.valueOf("2"));
156 conf.addPropertyDirect("long.list4", new Long[] {Long.valueOf("1"), Long.valueOf("2")});
157 conf.addPropertyDirect("long.list5", new long[] {1, 2});
158 final List<Object> longs = new ArrayList<>();
159 longs.add(Long.valueOf("1"));
160 longs.add(Long.valueOf("2"));
161 conf.addProperty("long.list6", longs);
162 conf.addProperty("long.string", "1");
163 conf.addProperty("long.object", Long.valueOf("1"));
164 conf.addProperty("long.list.interpolated", "${long.string},2");
165
166
167 conf.addProperty("float.list1", "1");
168 conf.addProperty("float.list1", "2");
169 conf.addProperty("float.list2", "1, 2");
170 conf.addProperty("float.list3", Float.valueOf("1"));
171 conf.addProperty("float.list3", Float.valueOf("2"));
172 conf.addPropertyDirect("float.list4", new Float[] {Float.valueOf("1"), Float.valueOf("2")});
173 conf.addPropertyDirect("float.list5", new float[] {1, 2});
174 final List<Object> floats = new ArrayList<>();
175 floats.add(Float.valueOf("1"));
176 floats.add(Float.valueOf("2"));
177 conf.addProperty("float.list6", floats);
178 conf.addProperty("float.string", "1");
179 conf.addProperty("float.object", Float.valueOf("1"));
180 conf.addProperty("float.list.interpolated", "${float.string},2");
181
182
183 conf.addProperty("double.list1", "1");
184 conf.addProperty("double.list1", "2");
185 conf.addProperty("double.list2", "1, 2");
186 conf.addProperty("double.list3", Double.valueOf("1"));
187 conf.addProperty("double.list3", Double.valueOf("2"));
188 conf.addPropertyDirect("double.list4", new Double[] {Double.valueOf("1"), Double.valueOf("2")});
189 conf.addPropertyDirect("double.list5", new double[] {1, 2});
190 final List<Object> doubles = new ArrayList<>();
191 doubles.add(Double.valueOf("1"));
192 doubles.add(Double.valueOf("2"));
193 conf.addProperty("double.list6", doubles);
194 conf.addProperty("double.string", "1");
195 conf.addProperty("double.object", Double.valueOf("1"));
196 conf.addProperty("double.list.interpolated", "${double.string},2");
197
198
199 conf.addProperty("biginteger.list1", "1");
200 conf.addProperty("biginteger.list1", "2");
201 conf.addProperty("biginteger.list2", "1, 2");
202 conf.addProperty("biginteger.list3", new BigInteger("1"));
203 conf.addProperty("biginteger.list3", new BigInteger("2"));
204 conf.addPropertyDirect("biginteger.list4", new BigInteger[] {new BigInteger("1"), new BigInteger("2")});
205 final List<Object> bigintegers = new ArrayList<>();
206 bigintegers.add(new BigInteger("1"));
207 bigintegers.add(new BigInteger("2"));
208 conf.addProperty("biginteger.list6", bigintegers);
209 conf.addProperty("biginteger.string", "1");
210 conf.addProperty("biginteger.object", new BigInteger("1"));
211 conf.addProperty("biginteger.list.interpolated", "${biginteger.string},2");
212
213
214 conf.addProperty("bigdecimal.list1", "1");
215 conf.addProperty("bigdecimal.list1", "2");
216 conf.addProperty("bigdecimal.list2", "1, 2");
217 conf.addProperty("bigdecimal.list3", new BigDecimal("1"));
218 conf.addProperty("bigdecimal.list3", new BigDecimal("2"));
219 conf.addPropertyDirect("bigdecimal.list4", new BigDecimal[] {new BigDecimal("1"), new BigDecimal("2")});
220 final List<Object> bigdecimals = new ArrayList<>();
221 bigdecimals.add(new BigDecimal("1"));
222 bigdecimals.add(new BigDecimal("2"));
223 conf.addProperty("bigdecimal.list6", bigdecimals);
224 conf.addProperty("bigdecimal.string", "1");
225 conf.addProperty("bigdecimal.object", new BigDecimal("1"));
226 conf.addProperty("bigdecimal.list.interpolated", "${bigdecimal.string},2");
227
228
229 final String uri1 = "http://jakarta.apache.org";
230 final String uri2 = "http://www.apache.org";
231 conf.addProperty("uri.string", uri1);
232 conf.addProperty("uri.string.interpolated", "${uri.string}");
233 conf.addProperty("uri.object", new URI(uri1));
234 conf.addProperty("uri.list1", uri1);
235 conf.addProperty("uri.list1", uri2);
236 conf.addProperty("uri.list2", uri1 + ", " + uri2);
237 conf.addProperty("uri.list3", new URI(uri1));
238 conf.addProperty("uri.list3", new URI(uri2));
239 conf.addPropertyDirect("uri.list4", new URI[] {new URI(uri1), new URI(uri2)});
240 final List<Object> uris = new ArrayList<>();
241 uris.add(new URI(uri1));
242 uris.add(new URI(uri2));
243 conf.addProperty("uri.list6", uris);
244 conf.addProperty("uri.list.interpolated", "${uri.string}," + uri2);
245
246
247 final String url1 = "http://jakarta.apache.org";
248 final String url2 = "http://www.apache.org";
249 conf.addProperty("url.string", url1);
250 conf.addProperty("url.string.interpolated", "${url.string}");
251 conf.addProperty("url.object", new URL(url1));
252 conf.addProperty("url.list1", url1);
253 conf.addProperty("url.list1", url2);
254 conf.addProperty("url.list2", url1 + ", " + url2);
255 conf.addProperty("url.list3", new URL(url1));
256 conf.addProperty("url.list3", new URL(url2));
257 conf.addPropertyDirect("url.list4", new URL[] {new URL(url1), new URL(url2)});
258 final List<Object> urls = new ArrayList<>();
259 urls.add(new URL(url1));
260 urls.add(new URL(url2));
261 conf.addProperty("url.list6", urls);
262 conf.addProperty("url.list.interpolated", "${url.string}," + url2);
263
264
265 conf.addProperty("locale.string", "fr");
266 conf.addProperty("locale.string.interpolated", "${locale.string}");
267 conf.addProperty("locale.object", Locale.FRENCH);
268 conf.addProperty("locale.list1", "fr");
269 conf.addProperty("locale.list1", "de");
270 conf.addProperty("locale.list2", "fr, de");
271 conf.addProperty("locale.list3", Locale.FRENCH);
272 conf.addProperty("locale.list3", Locale.GERMAN);
273 conf.addPropertyDirect("locale.list4", new Locale[] {Locale.FRENCH, Locale.GERMAN});
274 final List<Object> locales = new ArrayList<>();
275 locales.add(Locale.FRENCH);
276 locales.add(Locale.GERMAN);
277 conf.addProperty("locale.list6", locales);
278 conf.addProperty("locale.list.interpolated", "${locale.string},de");
279
280
281 final String color1 = "FF0000";
282 final String color2 = "0000FF";
283 conf.addProperty("color.string", color1);
284 conf.addProperty("color.string.interpolated", "${color.string}");
285 conf.addProperty("color.object", Color.red);
286 conf.addProperty("color.list1", color1);
287 conf.addProperty("color.list1", color2);
288 conf.addProperty("color.list2", color1 + ", " + color2);
289 conf.addProperty("color.list3", Color.red);
290 conf.addProperty("color.list3", Color.blue);
291 conf.addPropertyDirect("color.list4", new Color[] {Color.red, Color.blue});
292 final List<Object> colors = new ArrayList<>();
293 colors.add(Color.red);
294 colors.add(Color.blue);
295 conf.addProperty("color.list6", colors);
296 conf.addProperty("color.list.interpolated", "${color.string}," + color2);
297
298
299 final String pattern = DATE_PATTERN;
300 final DateFormat format = new SimpleDateFormat(pattern);
301 conf.setProperty(DataConfiguration.DATE_FORMAT_KEY, pattern);
302
303 final Date date1 = format.parse("2004-01-01");
304 final Date date2 = format.parse("2004-12-31");
305 final Calendar calendar1 = Calendar.getInstance();
306 calendar1.setTime(date1);
307 final Calendar calendar2 = Calendar.getInstance();
308 calendar2.setTime(date2);
309
310 conf.addProperty("date.string", "2004-01-01");
311 conf.addProperty("date.string.interpolated", "${date.string}");
312 conf.addProperty("date.object", date1);
313 conf.addProperty("date.list1", "2004-01-01");
314 conf.addProperty("date.list1", "2004-12-31");
315 conf.addProperty("date.list2", "2004-01-01, 2004-12-31");
316 conf.addProperty("date.list3", date1);
317 conf.addProperty("date.list3", date2);
318 conf.addPropertyDirect("date.list4", new Date[] {date1, date2});
319 conf.addPropertyDirect("date.list5", new Calendar[] {calendar1, calendar2});
320 final List<Object> dates = new ArrayList<>();
321 dates.add(date1);
322 dates.add(date2);
323 conf.addProperty("date.list6", dates);
324 conf.addProperty("date.list.interpolated", "${date.string},2004-12-31");
325 conf.addPropertyDirect("date.list7", new String[] {"2004-01-01", "2004-12-31"});
326
327 conf.addProperty("calendar.string", "2004-01-01");
328 conf.addProperty("calendar.string.interpolated", "${calendar.string}");
329 conf.addProperty("calendar.object", calendar1);
330 conf.addProperty("calendar.list1", "2004-01-01");
331 conf.addProperty("calendar.list1", "2004-12-31");
332 conf.addProperty("calendar.list2", "2004-01-01, 2004-12-31");
333 conf.addProperty("calendar.list3", calendar1);
334 conf.addProperty("calendar.list3", calendar2);
335 conf.addPropertyDirect("calendar.list4", new Calendar[] {calendar1, calendar2});
336 conf.addPropertyDirect("calendar.list5", new Date[] {date1, date2});
337 final List<Object> calendars = new ArrayList<>();
338 calendars.add(date1);
339 calendars.add(date2);
340 conf.addProperty("calendar.list6", calendars);
341 conf.addProperty("calendar.list.interpolated", "${calendar.string},2004-12-31");
342 conf.addPropertyDirect("calendar.list7", new String[] {"2004-01-01", "2004-12-31"});
343
344
345 conf.addProperty("ip.string", "127.0.0.1");
346 conf.addProperty("ip.string.interpolated", "${ip.string}");
347 conf.addProperty("ip.object", InetAddress.getByName("127.0.0.1"));
348
349
350 conf.addProperty("email.string", "dev@test.org");
351 conf.addProperty("email.string.interpolated", "${email.string}");
352 conf.addProperty("email.object", new InternetAddress("dev@test.org"));
353 }
354
355
356
357
358 @Test
359 public void testClearProperty() {
360 final String key = "test.property";
361 conf.addProperty(key, "someValue");
362 conf.clearProperty(key);
363 assertFalse(conf.containsKey(key));
364 }
365
366
367
368
369 @Test
370 public void testClearPropertyDirect() {
371 final String key = "test.property";
372 conf.addProperty(key, "someValue");
373 conf.clearPropertyDirect(key);
374 assertFalse(conf.containsKey(key));
375 }
376
377
378
379
380 @Test
381 public void testClearPropertyDirectNoAbstractConf() {
382 final Configuration wrapped = mock(Configuration.class);
383 final String key = "test.property";
384 conf = new DataConfiguration(wrapped);
385 conf.clearPropertyDirect(key);
386
387 verify(wrapped).clearProperty(key);
388 verifyNoMoreInteractions(wrapped);
389 }
390
391 @Test
392 public void testContainsKey() {
393 final Configuration baseconf = new BaseConfiguration();
394 final DataConfiguration conf = new DataConfiguration(baseconf);
395
396 assertFalse(conf.containsKey("foo"));
397
398 baseconf.setProperty("foo", "bar");
399
400 assertTrue(conf.containsKey("foo"));
401 }
402
403 @Test
404 public void testConversionException() throws Exception {
405 conf.addProperty("key1", new Object());
406 conf.addProperty("key2", "xxxxxx");
407
408 assertThrows(ConversionException.class, () -> conf.getBooleanArray("key1"));
409 assertThrows(ConversionException.class, () -> conf.getBooleanArray("key2"));
410
411 assertThrows(ConversionException.class, () -> conf.getBooleanList("key1"));
412 assertThrows(ConversionException.class, () -> conf.getBooleanList("key2"));
413
414 assertThrows(ConversionException.class, () -> conf.getByteArray("key1"));
415 assertThrows(ConversionException.class, () -> conf.getByteArray("key2"));
416
417 assertThrows(ConversionException.class, () -> conf.getByteList("key1"));
418 assertThrows(ConversionException.class, () -> conf.getByteList("key2"));
419
420 assertThrows(ConversionException.class, () -> conf.getShortArray("key1"));
421 assertThrows(ConversionException.class, () -> conf.getShortArray("key2"));
422
423 assertThrows(ConversionException.class, () -> conf.getShortList("key1"));
424 assertThrows(ConversionException.class, () -> conf.getShortList("key2"));
425
426 assertThrows(ConversionException.class, () -> conf.getIntArray("key1"));
427 assertThrows(ConversionException.class, () -> conf.getIntArray("key2"));
428
429 assertThrows(ConversionException.class, () -> conf.getIntegerList("key1"));
430 assertThrows(ConversionException.class, () -> conf.getIntegerList("key2"));
431
432 assertThrows(ConversionException.class, () -> conf.getLongArray("key1"));
433 assertThrows(ConversionException.class, () -> conf.getLongArray("key2"));
434
435 assertThrows(ConversionException.class, () -> conf.getLongList("key1"));
436 assertThrows(ConversionException.class, () -> conf.getLongList("key2"));
437
438 assertThrows(ConversionException.class, () -> conf.getFloatArray("key1"));
439 assertThrows(ConversionException.class, () -> conf.getFloatArray("key2"));
440
441 assertThrows(ConversionException.class, () -> conf.getFloatList("key1"));
442 assertThrows(ConversionException.class, () -> conf.getFloatList("key2"));
443
444 assertThrows(ConversionException.class, () -> conf.getDoubleArray("key1"));
445 assertThrows(ConversionException.class, () -> conf.getDoubleArray("key2"));
446
447 assertThrows(ConversionException.class, () -> conf.getDoubleList("key1"));
448 assertThrows(ConversionException.class, () -> conf.getDoubleList("key2"));
449
450 assertThrows(ConversionException.class, () -> conf.getBigIntegerArray("key1"));
451 assertThrows(ConversionException.class, () -> conf.getBigIntegerArray("key2"));
452
453 assertThrows(ConversionException.class, () -> conf.getBigIntegerList("key1"));
454 assertThrows(ConversionException.class, () -> conf.getBigIntegerList("key2"));
455
456 assertThrows(ConversionException.class, () -> conf.getBigDecimalArray("key1"));
457 assertThrows(ConversionException.class, () -> conf.getBigDecimalArray("key2"));
458
459 assertThrows(ConversionException.class, () -> conf.getBigDecimalList("key1"));
460 assertThrows(ConversionException.class, () -> conf.getBigDecimalList("key2"));
461
462 assertThrows(ConversionException.class, () -> conf.getURLArray("key1"));
463 assertThrows(ConversionException.class, () -> conf.getURLArray("key2"));
464
465 assertThrows(ConversionException.class, () -> conf.getURLList("key1"));
466 assertThrows(ConversionException.class, () -> conf.getURLList("key2"));
467
468 assertThrows(ConversionException.class, () -> conf.getLocaleArray("key1"));
469 assertThrows(ConversionException.class, () -> conf.getLocaleArray("key2"));
470
471 assertThrows(ConversionException.class, () -> conf.getLocaleList("key1"));
472 assertThrows(ConversionException.class, () -> conf.getLocaleList("key2"));
473
474 assertThrows(ConversionException.class, () -> conf.getColorArray("key1"));
475 assertThrows(ConversionException.class, () -> conf.getColorArray("key2"));
476
477 assertThrows(ConversionException.class, () -> conf.getColorList("key1"));
478 assertThrows(ConversionException.class, () -> conf.getColorList("key2"));
479
480 assertThrows(ConversionException.class, () -> conf.getDateArray("key1"));
481 assertThrows(ConversionException.class, () -> conf.getDateArray("key2"));
482
483 assertThrows(ConversionException.class, () -> conf.getDate("key1", DATE_PATTERN));
484 assertThrows(ConversionException.class, () -> conf.getDate("key2", DATE_PATTERN));
485
486 assertThrows(ConversionException.class, () -> conf.getDateList("key1"));
487 assertThrows(ConversionException.class, () -> conf.getDateList("key2"));
488
489 assertThrows(ConversionException.class, () -> conf.getCalendar("key1", DATE_PATTERN));
490 assertThrows(ConversionException.class, () -> conf.getCalendar("key2", DATE_PATTERN));
491
492 assertThrows(ConversionException.class, () -> conf.getCalendarArray("key1"));
493 assertThrows(ConversionException.class, () -> conf.getCalendarArray("key2"));
494
495 assertThrows(ConversionException.class, () -> conf.getCalendarList("key1"));
496 assertThrows(ConversionException.class, () -> conf.getCalendarList("key2"));
497
498 assertThrows(ConversionException.class, () -> conf.get(InetAddress.class, "key1"));
499
500 assertThrows(ConversionException.class, () -> conf.get(InternetAddress.class, "key1"));
501 }
502
503
504
505
506 @Test
507 public void testConversionExceptionCause() {
508 final ConversionException cex = assertThrows(ConversionException.class, () -> conf.get(Integer.TYPE, "uri.string"));
509 assertInstanceOf(NumberFormatException.class, cex.getCause());
510 }
511
512 @Test
513 public void testGetArrayInvalidDefaultType() {
514 assertThrows(IllegalArgumentException.class, () -> conf.getArray(Boolean.class, "unknownkey", new URL[] {}));
515 }
516
517 @Test
518 public void testGetBigDecimalArray() {
519
520 final BigDecimal[] defaultValue = {new BigDecimal("2"), new BigDecimal("1")};
521 assertArrayEquals(defaultValue, conf.getBigDecimalArray("bigdecimal.list", defaultValue));
522
523 final BigDecimal[] expected = {new BigDecimal("1"), new BigDecimal("2")};
524
525
526 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list1"));
527
528
529 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list2"));
530
531
532 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list3"));
533
534
535 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list4"));
536
537
538 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list6"));
539
540
541 assertArrayEquals(expected, conf.getBigDecimalArray("bigdecimal.list.interpolated"));
542
543
544 assertArrayEquals(new BigDecimal[] {new BigDecimal("1")}, conf.getBigDecimalArray("bigdecimal.string"));
545 assertArrayEquals(new BigDecimal[] {new BigDecimal("1")}, conf.getBigDecimalArray("bigdecimal.object"));
546
547
548 assertArrayEquals(new BigDecimal[] {}, conf.getBigDecimalArray("empty"));
549 }
550
551 @Test
552 public void testGetBigDecimalList() {
553
554 assertEquals(null, conf.getBigDecimalList("bigdecimal.list", null));
555
556 List<Object> expected = new ArrayList<>();
557 expected.add(new BigDecimal("1"));
558 expected.add(new BigDecimal("2"));
559
560
561 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list1"));
562
563
564 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list2"));
565
566
567 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list3"));
568
569
570 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list4"));
571
572
573 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list6"));
574
575
576 assertEquals(expected, conf.getBigDecimalList("bigdecimal.list.interpolated"));
577
578
579 expected = new ArrayList<>();
580 expected.add(new BigDecimal("1"));
581 assertEquals(expected, conf.getBigDecimalList("bigdecimal.string"));
582 assertEquals(expected, conf.getBigDecimalList("bigdecimal.object"));
583
584
585 assertEquals(new ArrayList<>(), conf.getBigDecimalList("empty"));
586 }
587
588 @Test
589 public void testGetBigIntegerArray() {
590
591 final BigInteger[] defaultValue = {new BigInteger("2"), new BigInteger("1")};
592 assertArrayEquals(defaultValue, conf.getBigIntegerArray("biginteger.list", defaultValue));
593
594 final BigInteger[] expected = {new BigInteger("1"), new BigInteger("2")};
595
596
597 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list1"));
598
599
600 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list2"));
601
602
603 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list3"));
604
605
606 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list4"));
607
608
609 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list6"));
610
611
612 assertArrayEquals(expected, conf.getBigIntegerArray("biginteger.list.interpolated"));
613
614
615 assertArrayEquals(new BigInteger[] {new BigInteger("1")}, conf.getBigIntegerArray("biginteger.string"));
616 assertArrayEquals(new BigInteger[] {new BigInteger("1")}, conf.getBigIntegerArray("biginteger.object"));
617
618
619 assertArrayEquals(new BigInteger[] {}, conf.getBigIntegerArray("empty"));
620 }
621
622 @Test
623 public void testGetBigIntegerList() {
624
625 final List<BigInteger> bigIntegerList = conf.getBigIntegerList("biginteger.list", null);
626 assertEquals(null, bigIntegerList);
627
628 List<Object> expected = new ArrayList<>();
629 expected.add(new BigInteger("1"));
630 expected.add(new BigInteger("2"));
631
632
633 assertEquals(expected, conf.getBigIntegerList("biginteger.list1"));
634
635
636 assertEquals(expected, conf.getBigIntegerList("biginteger.list2"));
637
638
639 assertEquals(expected, conf.getBigIntegerList("biginteger.list3"));
640
641
642 assertEquals(expected, conf.getBigIntegerList("biginteger.list4"));
643
644
645 assertEquals(expected, conf.getBigIntegerList("biginteger.list6"));
646
647
648 assertEquals(expected, conf.getBigIntegerList("biginteger.list.interpolated"));
649
650
651 expected = new ArrayList<>();
652 expected.add(new BigInteger("1"));
653 assertEquals(expected, conf.getBigIntegerList("biginteger.string"));
654 assertEquals(expected, conf.getBigIntegerList("biginteger.object"));
655
656
657 assertEquals(new ArrayList<>(), conf.getBigIntegerList("empty"));
658 }
659
660 @Test
661 public void testGetBooleanArray() {
662
663 final boolean[] defaultValue = {false, true};
664 assertArrayEquals(defaultValue, conf.getBooleanArray("boolean.list", defaultValue));
665
666 final boolean[] expected = {true, false};
667
668
669 assertArrayEquals(expected, conf.getBooleanArray("boolean.list1"));
670
671
672 assertArrayEquals(expected, conf.getBooleanArray("boolean.list2"));
673
674
675 assertArrayEquals(expected, conf.getBooleanArray("boolean.list3"));
676
677
678 assertArrayEquals(expected, conf.getBooleanArray("boolean.list4"));
679
680
681 assertArrayEquals(expected, conf.getBooleanArray("boolean.list5"));
682
683
684 assertArrayEquals(expected, conf.getBooleanArray("boolean.list6"));
685
686
687 assertArrayEquals(expected, conf.getBooleanArray("boolean.list.interpolated"));
688
689
690 assertArrayEquals(new boolean[] {true}, conf.getBooleanArray("boolean.string"));
691 assertArrayEquals(new boolean[] {true}, conf.getBooleanArray("boolean.object"));
692
693
694 assertArrayEquals(new boolean[] {}, conf.getBooleanArray("empty"));
695 }
696
697 @Test
698 public void testGetBooleanList() {
699
700 assertEquals(null, conf.getBooleanList("boolean.list", null));
701
702 List<Object> expected = new ArrayList<>();
703 expected.add(Boolean.TRUE);
704 expected.add(Boolean.FALSE);
705
706
707 assertEquals(expected, conf.getBooleanList("boolean.list1"));
708
709
710 assertEquals(expected, conf.getBooleanList("boolean.list2"));
711
712
713 assertEquals(expected, conf.getBooleanList("boolean.list3"));
714
715
716 assertEquals(expected, conf.getBooleanList("boolean.list4"));
717
718
719 assertEquals(expected, conf.getBooleanList("boolean.list5"));
720
721
722 assertEquals(expected, conf.getBooleanList("boolean.list6"));
723
724
725 assertEquals(expected, conf.getBooleanList("boolean.list.interpolated"));
726
727
728 expected = new ArrayList<>();
729 expected.add(Boolean.TRUE);
730 assertEquals(expected, conf.getBooleanList("boolean.string"));
731 assertEquals(expected, conf.getBooleanList("boolean.object"));
732
733
734 assertEquals(new ArrayList<>(), conf.getBooleanList("empty"));
735 }
736
737 @Test
738 public void testGetByteArray() {
739
740 final byte[] defaultValue = {1, 2};
741 assertArrayEquals(defaultValue, conf.getByteArray("byte.list", defaultValue));
742
743 final byte[] expected = {1, 2};
744
745
746 assertArrayEquals(expected, conf.getByteArray("byte.list1"));
747
748
749 assertArrayEquals(expected, conf.getByteArray("byte.list2"));
750
751
752 assertArrayEquals(expected, conf.getByteArray("byte.list3"));
753
754
755 assertArrayEquals(expected, conf.getByteArray("byte.list4"));
756
757
758 assertArrayEquals(expected, conf.getByteArray("byte.list5"));
759
760
761 assertArrayEquals(expected, conf.getByteArray("byte.list6"));
762
763
764 assertArrayEquals(expected, conf.getByteArray("byte.list.interpolated"));
765
766
767 assertArrayEquals(new byte[] {1}, conf.getByteArray("byte.string"));
768 assertArrayEquals(new byte[] {1}, conf.getByteArray("byte.object"));
769
770
771 assertArrayEquals(new byte[] {}, conf.getByteArray("empty"));
772 }
773
774 @Test
775 public void testGetByteList() {
776
777 assertEquals(null, conf.getByteList("byte.list", null));
778
779 List<Object> expected = new ArrayList<>();
780 expected.add(Byte.valueOf("1"));
781 expected.add(Byte.valueOf("2"));
782
783
784 assertEquals(expected, conf.getByteList("byte.list1"));
785
786
787 assertEquals(expected, conf.getByteList("byte.list2"));
788
789
790 assertEquals(expected, conf.getByteList("byte.list3"));
791
792
793 assertEquals(expected, conf.getByteList("byte.list4"));
794
795
796 assertEquals(expected, conf.getByteList("byte.list5"));
797
798
799 assertEquals(expected, conf.getByteList("byte.list6"));
800
801
802 assertEquals(expected, conf.getByteList("byte.list.interpolated"));
803
804
805 expected = new ArrayList<>();
806 expected.add(Byte.valueOf("1"));
807 assertEquals(expected, conf.getByteList("byte.string"));
808 assertEquals(expected, conf.getByteList("byte.object"));
809
810
811 assertEquals(new ArrayList<>(), conf.getByteList("empty"));
812 }
813
814 @Test
815 public void testGetCalendar() throws Exception {
816 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
817
818
819 final Calendar defaultValue = Calendar.getInstance();
820 defaultValue.setTime(new Date());
821 assertEquals(conf.getCalendar("calendar", defaultValue), defaultValue);
822 assertNull(conf.getCalendar("unknownkey", DATE_PATTERN));
823
824 conf.setThrowExceptionOnMissing(true);
825
826 assertThrows(NoSuchElementException.class, () -> conf.getCalendar("unknownkey", DATE_PATTERN));
827
828 final Calendar expected = Calendar.getInstance();
829 expected.setTime(format.parse("2004-01-01"));
830
831
832 assertEquals(expected, conf.getCalendar("calendar.string"));
833 assertEquals(conf.getCalendar("calendar.string", DATE_PATTERN), expected);
834
835
836 assertEquals(expected, conf.getCalendar("calendar.object"));
837
838
839 assertEquals(expected, conf.getCalendar("date.object"));
840
841
842 assertEquals(expected, conf.getCalendar("calendar.string.interpolated"));
843 }
844
845 @Test
846 public void testGetCalendarArray() throws Exception {
847 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
848 final Date date1 = format.parse("2004-01-01");
849 final Date date2 = format.parse("2004-12-31");
850 final Calendar calendar1 = Calendar.getInstance();
851 calendar1.setTime(date1);
852 final Calendar calendar2 = Calendar.getInstance();
853 calendar2.setTime(date2);
854
855
856 final Calendar[] defaultValue = {calendar2, calendar1};
857 assertArrayEquals(defaultValue, conf.getCalendarArray("calendar.list", defaultValue));
858
859 final Calendar[] expected = {calendar1, calendar2};
860
861
862 assertArrayEquals(expected, conf.getCalendarArray("calendar.list1"));
863
864
865 assertArrayEquals(expected, conf.getCalendarArray("calendar.list2"));
866
867
868 assertArrayEquals(expected, conf.getCalendarArray("calendar.list3"));
869
870
871 assertArrayEquals(expected, conf.getCalendarArray("calendar.list4"));
872
873
874 assertArrayEquals(expected, conf.getCalendarArray("calendar.list5"));
875
876
877 assertArrayEquals(expected, conf.getCalendarArray("calendar.list6"));
878
879
880 assertArrayEquals(expected, conf.getCalendarArray("calendar.list.interpolated"));
881
882
883 assertArrayEquals(new Calendar[] {calendar1}, conf.getCalendarArray("calendar.string"));
884 assertArrayEquals(new Calendar[] {calendar1}, conf.getCalendarArray("calendar.object"));
885
886
887 assertArrayEquals(new Calendar[] {}, conf.getCalendarArray("empty"));
888 }
889
890 @Test
891 public void testGetCalendarArrayWithFormat() throws Exception {
892 final DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
893 final Date date1 = format.parse("01/01/2004");
894 final Date date2 = format.parse("12/31/2004");
895
896 final Calendar calendar1 = Calendar.getInstance();
897 calendar1.setTime(date1);
898 final Calendar calendar2 = Calendar.getInstance();
899 calendar2.setTime(date2);
900 final Calendar[] expected = {calendar1, calendar2};
901
902 conf.addProperty("calendar.format", "01/01/2004");
903 conf.addProperty("calendar.format", "12/31/2004");
904 assertArrayEquals(expected, conf.getCalendarArray("calendar.format", "MM/dd/yyyy"));
905 }
906
907 @Test
908 public void testGetCalendarList() throws Exception {
909 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
910 final Date date1 = format.parse("2004-01-01");
911 final Date date2 = format.parse("2004-12-31");
912 final Calendar calendar1 = Calendar.getInstance();
913 calendar1.setTime(date1);
914 final Calendar calendar2 = Calendar.getInstance();
915 calendar2.setTime(date2);
916
917
918 final List<Calendar> nullList = null;
919 assertEquals(null, conf.getCalendarList("calendar.list", nullList));
920
921 List<Object> expected = new ArrayList<>();
922 expected.add(calendar1);
923 expected.add(calendar2);
924
925
926 assertEquals(expected, conf.getCalendarList("calendar.list1"));
927 assertEquals(conf.getList(Calendar.class, "calendar.list1"), expected);
928
929
930 assertEquals(expected, conf.getCalendarList("calendar.list2"));
931
932
933 assertEquals(expected, conf.getCalendarList("calendar.list3"));
934
935
936 assertEquals(expected, conf.getCalendarList("calendar.list4"));
937
938
939 assertEquals(expected, conf.getCalendarList("calendar.list5"));
940
941
942 assertEquals(expected, conf.getCalendarList("calendar.list6"));
943
944
945 assertEquals(conf.getList(Calendar.class, "calendar.list7"), expected);
946
947
948 assertEquals(expected, conf.getCalendarList("calendar.list.interpolated"));
949
950
951 expected = new ArrayList<>();
952 expected.add(calendar1);
953 assertEquals(expected, conf.getCalendarList("date.string"));
954 assertEquals(expected, conf.getCalendarList("date.object"));
955
956
957 assertEquals(new ArrayList<>(), conf.getCalendarList("empty"));
958 }
959
960 @Test
961 public void testGetColor() {
962
963 conf.setProperty("color", "FF0000");
964 assertEquals(Color.red, conf.getColor("color"));
965
966
967 conf.setProperty("color", "#00FF00");
968 assertEquals(Color.green, conf.getColor("color"));
969
970
971 conf.setProperty("color", "#01030507");
972 final Color color = conf.getColor("color");
973 assertNotNull(color);
974 assertEquals(1, color.getRed());
975 assertEquals(3, color.getGreen());
976 assertEquals(5, color.getBlue());
977 assertEquals(7, color.getAlpha());
978
979
980 assertEquals(Color.red, conf.getColor("color.string.interpolated"));
981
982
983 assertEquals(Color.cyan, conf.getColor("unknownkey", Color.cyan));
984 }
985
986 @Test
987 public void testGetColorArray() throws Exception {
988
989 final Color[] defaultValue = {Color.red, Color.blue};
990 assertArrayEquals(defaultValue, conf.getColorArray("color.list", defaultValue));
991
992 final Color[] expected = {Color.red, Color.blue};
993
994
995 assertArrayEquals(expected, conf.getColorArray("color.list1"));
996
997
998 assertArrayEquals(expected, conf.getColorArray("color.list2"));
999
1000
1001 assertArrayEquals(expected, conf.getColorArray("color.list3"));
1002
1003
1004 assertArrayEquals(expected, conf.getColorArray("color.list4"));
1005
1006
1007 assertArrayEquals(expected, conf.getColorArray("color.list6"));
1008
1009
1010 assertArrayEquals(expected, conf.getColorArray("color.list.interpolated"));
1011
1012
1013 assertArrayEquals(new Color[] {Color.red}, conf.getColorArray("color.string"));
1014 assertArrayEquals(new Color[] {Color.red}, conf.getColorArray("color.object"));
1015
1016
1017 assertArrayEquals(new Color[] {}, conf.getColorArray("empty"));
1018 }
1019
1020 @Test
1021 public void testGetColorList() throws Exception {
1022
1023 assertEquals(null, conf.getColorList("color.list", null));
1024
1025 List<Object> expected = new ArrayList<>();
1026 expected.add(Color.red);
1027 expected.add(Color.blue);
1028
1029
1030 assertEquals(expected, conf.getColorList("color.list1"));
1031
1032
1033 assertEquals(expected, conf.getColorList("color.list2"));
1034
1035
1036 assertEquals(expected, conf.getColorList("color.list3"));
1037
1038
1039 assertEquals(expected, conf.getColorList("color.list4"));
1040
1041
1042 assertEquals(expected, conf.getColorList("color.list6"));
1043
1044
1045 assertEquals(expected, conf.getColorList("color.list.interpolated"));
1046
1047
1048 expected = new ArrayList<>();
1049 expected.add(Color.red);
1050 assertEquals(expected, conf.getColorList("color.string"));
1051 assertEquals(expected, conf.getColorList("color.object"));
1052
1053
1054 assertEquals(new ArrayList<>(), conf.getColorList("empty"));
1055 }
1056
1057 @Test
1058 public void testGetConfiguration() {
1059 final Configuration baseconf = new BaseConfiguration();
1060 final DataConfiguration conf = new DataConfiguration(baseconf);
1061
1062 assertEquals(baseconf, conf.getConfiguration());
1063 }
1064
1065 @Test
1066 public void testGetDate() throws Exception {
1067 final Date expected = expectedDate();
1068
1069
1070 final Date defaultValue = new Date();
1071 assertEquals(conf.getDate("date", defaultValue), defaultValue);
1072 assertNull(conf.getDate("unknownkey", DATE_PATTERN));
1073
1074 conf.setThrowExceptionOnMissing(true);
1075
1076 assertThrows(NoSuchElementException.class, () -> conf.getDate("unknownkey", DATE_PATTERN));
1077
1078
1079 assertEquals(expected, conf.getDate("date.string"));
1080 assertEquals(conf.getDate("date.string", DATE_PATTERN), expected);
1081
1082
1083 assertEquals(expected, conf.getDate("date.object"));
1084
1085
1086 assertEquals(expected, conf.getDate("calendar.object"));
1087
1088
1089 assertEquals(expected, conf.getDate("date.string.interpolated"));
1090 }
1091
1092 @Test
1093 public void testGetDateArray() throws Exception {
1094 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
1095 final Date date1 = format.parse("2004-01-01");
1096 final Date date2 = format.parse("2004-12-31");
1097
1098
1099 final Date[] defaultValue = {date2, date1};
1100 assertArrayEquals(defaultValue, conf.getDateArray("date.list", defaultValue));
1101
1102 final Date[] expected = {date1, date2};
1103
1104
1105 assertArrayEquals(expected, conf.getDateArray("date.list1"));
1106
1107
1108 assertArrayEquals(expected, conf.getDateArray("date.list2"));
1109
1110
1111 assertArrayEquals(expected, conf.getDateArray("date.list3"));
1112
1113
1114 assertArrayEquals(expected, conf.getDateArray("date.list4"));
1115
1116
1117 assertArrayEquals(expected, conf.getDateArray("date.list5"));
1118
1119
1120 assertArrayEquals(expected, conf.getDateArray("date.list6"));
1121
1122
1123 assertArrayEquals(expected, conf.getDateArray("date.list.interpolated"));
1124
1125
1126 assertArrayEquals(new Date[] {date1}, conf.getDateArray("date.string"));
1127 assertArrayEquals(new Date[] {date1}, conf.getDateArray("date.object"));
1128
1129
1130 assertArrayEquals(new Date[] {}, conf.getDateArray("empty"));
1131 }
1132
1133 @Test
1134 public void testGetDateArrayWithFormat() throws Exception {
1135 final DateFormat format = new SimpleDateFormat("MM/dd/yyyy");
1136 final Date date1 = format.parse("01/01/2004");
1137 final Date date2 = format.parse("12/31/2004");
1138 final Date[] expected = {date1, date2};
1139
1140 conf.addProperty("date.format", "01/01/2004");
1141 conf.addProperty("date.format", "12/31/2004");
1142 assertArrayEquals(expected, conf.getDateArray("date.format", "MM/dd/yyyy"));
1143 }
1144
1145 @Test
1146 public void testGetDateList() throws Exception {
1147 final DateFormat format = new SimpleDateFormat(DATE_PATTERN);
1148 final Date date1 = format.parse("2004-01-01");
1149 final Date date2 = format.parse("2004-12-31");
1150
1151
1152 final List<Date> nullList = null;
1153 assertEquals(null, conf.getDateList("date.list", nullList));
1154
1155 List<Object> expected = new ArrayList<>();
1156 expected.add(date1);
1157 expected.add(date2);
1158
1159
1160 assertEquals(expected, conf.getDateList("date.list1"));
1161 assertEquals(conf.getList(Date.class, "date.list1"), expected);
1162
1163
1164 assertEquals(expected, conf.getDateList("date.list2"));
1165
1166
1167 assertEquals(expected, conf.getDateList("date.list3"));
1168
1169
1170 assertEquals(expected, conf.getDateList("date.list4"));
1171
1172
1173 assertEquals(expected, conf.getDateList("date.list5"));
1174
1175
1176 assertEquals(expected, conf.getDateList("date.list6"));
1177
1178
1179 assertEquals(conf.getList(Date.class, "date.list7"), expected);
1180
1181
1182 assertEquals(expected, conf.getDateList("date.list.interpolated"));
1183
1184
1185 expected = new ArrayList<>();
1186 expected.add(date1);
1187 assertEquals(expected, conf.getDateList("date.string"));
1188 assertEquals(expected, conf.getDateList("date.object"));
1189
1190
1191 assertEquals(new ArrayList<>(), conf.getDateList("empty"));
1192 }
1193
1194
1195
1196
1197
1198 @Test
1199 public void testGetDateNoFormatPropertyConversionHandler() throws Exception {
1200 conf.clearProperty(DataConfiguration.DATE_FORMAT_KEY);
1201 final DefaultConversionHandler handler = new DefaultConversionHandler();
1202 handler.setDateFormat(DATE_PATTERN);
1203 conf.setConversionHandler(handler);
1204 assertEquals(expectedDate(), conf.getDate("date.string"));
1205 }
1206
1207
1208
1209
1210 @Test
1211 public void testGetDateNoFormatPropertyDirectlySpecified() throws Exception {
1212 conf.clearProperty(DataConfiguration.DATE_FORMAT_KEY);
1213 assertEquals(expectedDate(), conf.getDate("date.string", DATE_PATTERN));
1214 }
1215
1216 @Test
1217 public void testGetDoubleArray() {
1218
1219 final double[] defaultValue = {2, 1};
1220 assertArrayEquals(defaultValue, conf.getDoubleArray("double.list", defaultValue), 0);
1221
1222 final double[] expected = {1, 2};
1223
1224
1225 assertArrayEquals(expected, conf.getDoubleArray("double.list1"), 0);
1226
1227
1228 assertArrayEquals(expected, conf.getDoubleArray("double.list2"), 0);
1229
1230
1231 assertArrayEquals(expected, conf.getDoubleArray("double.list3"), 0);
1232
1233
1234 assertArrayEquals(expected, conf.getDoubleArray("double.list4"), 0);
1235
1236
1237 assertArrayEquals(expected, conf.getDoubleArray("double.list5"), 0);
1238
1239
1240 assertArrayEquals(expected, conf.getDoubleArray("double.list6"), 0);
1241
1242
1243 assertArrayEquals(expected, conf.getDoubleArray("double.list.interpolated"), 0);
1244
1245
1246 assertArrayEquals(new double[] {1}, conf.getDoubleArray("double.string"), 0);
1247 assertArrayEquals(new double[] {1}, conf.getDoubleArray("double.object"), 0);
1248
1249
1250 assertArrayEquals(new double[] {}, conf.getDoubleArray("empty"), 0);
1251 }
1252
1253 @Test
1254 public void testGetDoubleList() {
1255
1256 assertEquals(null, conf.getDoubleList("double.list", null));
1257
1258 List<Object> expected = new ArrayList<>();
1259 expected.add(Double.valueOf("1"));
1260 expected.add(Double.valueOf("2"));
1261
1262
1263 assertEquals(expected, conf.getDoubleList("double.list1"));
1264
1265
1266 assertEquals(expected, conf.getDoubleList("double.list2"));
1267
1268
1269 assertEquals(expected, conf.getDoubleList("double.list3"));
1270
1271
1272 assertEquals(expected, conf.getDoubleList("double.list4"));
1273
1274
1275 assertEquals(expected, conf.getDoubleList("double.list5"));
1276
1277
1278 assertEquals(expected, conf.getDoubleList("double.list6"));
1279
1280
1281 assertEquals(expected, conf.getDoubleList("double.list.interpolated"));
1282
1283
1284 expected = new ArrayList<>();
1285 expected.add(Double.valueOf("1"));
1286 assertEquals(expected, conf.getDoubleList("double.string"));
1287 assertEquals(expected, conf.getDoubleList("double.object"));
1288
1289
1290 assertEquals(new ArrayList<>(), conf.getDoubleList("empty"));
1291 }
1292
1293 @Test
1294 public void testGetFloatArray() {
1295
1296 final float[] defaultValue = {2, 1};
1297 assertArrayEquals(defaultValue, conf.getFloatArray("float.list", defaultValue), 0);
1298
1299 final float[] expected = {1, 2};
1300
1301
1302 assertArrayEquals(expected, conf.getFloatArray("float.list1"), 0);
1303
1304
1305 assertArrayEquals(expected, conf.getFloatArray("float.list2"), 0);
1306
1307
1308 assertArrayEquals(expected, conf.getFloatArray("float.list3"), 0);
1309
1310
1311 assertArrayEquals(expected, conf.getFloatArray("float.list4"), 0);
1312
1313
1314 assertArrayEquals(expected, conf.getFloatArray("float.list5"), 0);
1315
1316
1317 assertArrayEquals(expected, conf.getFloatArray("float.list6"), 0);
1318
1319
1320 assertArrayEquals(expected, conf.getFloatArray("float.list.interpolated"), 0);
1321
1322
1323 assertArrayEquals(new float[] {1}, conf.getFloatArray("float.string"), 0);
1324 assertArrayEquals(new float[] {1}, conf.getFloatArray("float.object"), 0);
1325
1326
1327 assertArrayEquals(new float[] {}, conf.getFloatArray("empty"), 0);
1328 }
1329
1330 @Test
1331 public void testGetFloatList() {
1332
1333 assertEquals(null, conf.getFloatList("float.list", null));
1334
1335 List<Object> expected = new ArrayList<>();
1336 expected.add(Float.valueOf("1"));
1337 expected.add(Float.valueOf("2"));
1338
1339
1340 assertEquals(expected, conf.getFloatList("float.list1"));
1341
1342
1343 assertEquals(expected, conf.getFloatList("float.list2"));
1344
1345
1346 assertEquals(expected, conf.getFloatList("float.list3"));
1347
1348
1349 assertEquals(expected, conf.getFloatList("float.list4"));
1350
1351
1352 assertEquals(expected, conf.getFloatList("float.list5"));
1353
1354
1355 assertEquals(expected, conf.getFloatList("float.list6"));
1356
1357
1358 assertEquals(expected, conf.getFloatList("float.list.interpolated"));
1359
1360
1361 expected = new ArrayList<>();
1362 expected.add(Float.valueOf("1"));
1363 assertEquals(expected, conf.getFloatList("float.string"));
1364 assertEquals(expected, conf.getFloatList("float.object"));
1365
1366
1367 assertEquals(new ArrayList<>(), conf.getFloatList("empty"));
1368 }
1369
1370 @Test
1371 public void testGetInetAddress() throws Exception {
1372 final InetAddress expected = InetAddress.getByName("127.0.0.1");
1373
1374
1375 assertEquals(conf.get(InetAddress.class, "ip.string"), expected);
1376
1377
1378 assertEquals(conf.get(InetAddress.class, "ip.object"), expected);
1379
1380
1381 assertEquals(conf.get(InetAddress.class, "ip.string.interpolated"), expected);
1382 }
1383
1384 @Test
1385 public void testGetInetAddressInvalidType() {
1386 conf.setProperty("ip.unknownhost", "foo");
1387 assertThrows(ConversionException.class, () -> conf.get(InetAddress.class, "ip.unknownhost"));
1388 }
1389
1390 @Test
1391 public void testGetIntegerArray() {
1392
1393 final int[] defaultValue = {2, 1};
1394 assertArrayEquals(conf.getIntArray("integer.list", defaultValue), defaultValue);
1395
1396 final int[] expected = {1, 2};
1397
1398
1399 assertArrayEquals(expected, conf.getIntArray("integer.list1"));
1400
1401
1402 assertArrayEquals(expected, conf.getIntArray("integer.list2"));
1403
1404
1405 assertArrayEquals(expected, conf.getIntArray("integer.list3"));
1406
1407
1408 assertArrayEquals(expected, conf.getIntArray("integer.list4"));
1409
1410
1411 assertArrayEquals(expected, conf.getIntArray("integer.list5"));
1412
1413
1414 assertArrayEquals(expected, conf.getIntArray("integer.list6"));
1415
1416
1417 assertArrayEquals(expected, conf.getIntArray("integer.list.interpolated"));
1418
1419
1420 assertArrayEquals(new int[] {1}, conf.getIntArray("integer.string"));
1421 assertArrayEquals(new int[] {1}, conf.getIntArray("integer.object"));
1422
1423
1424 assertArrayEquals(new int[] {}, conf.getIntArray("empty"));
1425 }
1426
1427 @Test
1428 public void testGetIntegerList() {
1429
1430 assertEquals(null, conf.getIntegerList("integer.list", null));
1431
1432 List<Object> expected = new ArrayList<>();
1433 expected.add(Integer.valueOf("1"));
1434 expected.add(Integer.valueOf("2"));
1435
1436
1437 assertEquals(expected, conf.getIntegerList("integer.list1"));
1438
1439
1440 assertEquals(expected, conf.getIntegerList("integer.list2"));
1441
1442
1443 assertEquals(expected, conf.getIntegerList("integer.list3"));
1444
1445
1446 assertEquals(expected, conf.getIntegerList("integer.list4"));
1447
1448
1449 assertEquals(expected, conf.getIntegerList("integer.list5"));
1450
1451
1452 assertEquals(expected, conf.getIntegerList("integer.list6"));
1453
1454
1455 assertEquals(expected, conf.getIntegerList("integer.list.interpolated"));
1456
1457
1458 expected = new ArrayList<>();
1459 expected.add(Integer.valueOf("1"));
1460 assertEquals(expected, conf.getIntegerList("integer.string"));
1461 assertEquals(expected, conf.getIntegerList("integer.object"));
1462
1463
1464 assertEquals(new ArrayList<>(), conf.getIntegerList("empty"));
1465 }
1466
1467 @Test
1468 public void testGetInternetAddress() throws Exception {
1469 final Object expected = new InternetAddress("dev@test.org");
1470
1471
1472 assertEquals(conf.get(expected.getClass(), "email.string"), expected);
1473
1474
1475 assertEquals(conf.get(expected.getClass(), "email.object"), expected);
1476
1477
1478 assertEquals(conf.get(expected.getClass(), "email.string.interpolated"), expected);
1479
1480 conf.setProperty("email.invalid", "dev@test@org");
1481 assertThrows(ConversionException.class, () -> conf.get(expected.getClass(), "email.invalid"));
1482 }
1483
1484 @Test
1485 public void testGetInternetAddressInvalidType() throws Exception {
1486 final Object expected = new InternetAddress("dev@test.org");
1487 conf.setProperty("email.invalid", "dev@test@org");
1488 assertThrows(ConversionException.class, () -> conf.get(expected.getClass(), "email.invalid"));
1489 }
1490
1491 @Test
1492 public void testGetInvalidType() {
1493 assertThrows(ConversionException.class, () -> conf.get(Boolean.class, "url.object", null));
1494 }
1495
1496 @Test
1497 public void testGetKeys() {
1498 final Configuration baseconf = new BaseConfiguration();
1499 final DataConfiguration conf = new DataConfiguration(baseconf);
1500
1501 baseconf.setProperty("foo", "bar");
1502
1503 final Iterator<String> it = conf.getKeys();
1504 assertTrue(it.hasNext());
1505 assertEquals("foo", it.next());
1506 assertFalse(it.hasNext());
1507 }
1508
1509 @Test
1510 public void testGetLocale() {
1511
1512 conf.setProperty("locale", "fr");
1513 assertEquals(new Locale("fr", ""), conf.getLocale("locale"));
1514
1515
1516 conf.setProperty("locale", "fr__POSIX");
1517 assertEquals(new Locale("fr", "", "POSIX"), conf.getLocale("locale"));
1518
1519
1520 conf.setProperty("locale", "_FR");
1521 assertEquals(new Locale("", "FR"), conf.getLocale("locale"));
1522
1523
1524 conf.setProperty("locale", "_FR_WIN");
1525 assertEquals(new Locale("", "FR", "WIN"), conf.getLocale("locale"));
1526
1527
1528 conf.setProperty("locale", "fr_FR");
1529 assertEquals(new Locale("fr", "FR"), conf.getLocale("locale"));
1530
1531
1532 conf.setProperty("locale", "fr_FR_MAC");
1533 assertEquals(new Locale("fr", "FR", "MAC"), conf.getLocale("locale"));
1534
1535
1536 conf.setProperty("locale", "fr");
1537 assertEquals(Locale.FRENCH, conf.getLocale("locale", Locale.GERMAN));
1538 assertEquals(Locale.GERMAN, conf.getLocale("localeNotInConfig", Locale.GERMAN));
1539
1540
1541 assertEquals(Locale.FRENCH, conf.getLocale("locale.string.interpolated"));
1542 }
1543
1544 @Test
1545 public void testGetLocaleArray() throws Exception {
1546
1547 final Locale[] defaultValue = {Locale.GERMAN, Locale.FRENCH};
1548 assertArrayEquals(conf.getLocaleArray("locale.list", defaultValue), defaultValue);
1549
1550 final Locale[] expected = {Locale.FRENCH, Locale.GERMAN};
1551
1552
1553 assertArrayEquals(expected, conf.getLocaleArray("locale.list1"));
1554
1555
1556 assertArrayEquals(expected, conf.getLocaleArray("locale.list2"));
1557
1558
1559 assertArrayEquals(expected, conf.getLocaleArray("locale.list3"));
1560
1561
1562 assertArrayEquals(expected, conf.getLocaleArray("locale.list4"));
1563
1564
1565 assertArrayEquals(expected, conf.getLocaleArray("locale.list6"));
1566
1567
1568 assertArrayEquals(expected, conf.getLocaleArray("locale.list.interpolated"));
1569
1570
1571 assertArrayEquals(new Locale[] {Locale.FRENCH}, conf.getLocaleArray("locale.string"));
1572 assertArrayEquals(new Locale[] {Locale.FRENCH}, conf.getLocaleArray("locale.object"));
1573
1574
1575 assertArrayEquals(new Locale[] {}, conf.getLocaleArray("empty"));
1576 }
1577
1578 @Test
1579 public void testGetLocaleList() throws Exception {
1580
1581 assertEquals(null, conf.getLocaleList("locale.list", null));
1582
1583 List<Object> expected = new ArrayList<>();
1584 expected.add(Locale.FRENCH);
1585 expected.add(Locale.GERMAN);
1586
1587
1588 assertEquals(expected, conf.getLocaleList("locale.list1"));
1589
1590
1591 assertEquals(expected, conf.getLocaleList("locale.list2"));
1592
1593
1594 assertEquals(expected, conf.getLocaleList("locale.list3"));
1595
1596
1597 assertEquals(expected, conf.getLocaleList("locale.list4"));
1598
1599
1600 assertEquals(expected, conf.getLocaleList("locale.list6"));
1601
1602
1603 assertEquals(expected, conf.getLocaleList("locale.list.interpolated"));
1604
1605
1606 expected = new ArrayList<>();
1607 expected.add(Locale.FRENCH);
1608 assertEquals(expected, conf.getLocaleList("locale.string"));
1609 assertEquals(expected, conf.getLocaleList("locale.object"));
1610
1611
1612 assertEquals(new ArrayList<>(), conf.getLocaleList("empty"));
1613 }
1614
1615 @Test
1616 public void testGetLongArray() {
1617
1618 final long[] defaultValue = {2, 1};
1619 assertArrayEquals(conf.getLongArray("long.list", defaultValue), defaultValue);
1620
1621 final long[] expected = {1, 2};
1622
1623
1624 assertArrayEquals(expected, conf.getLongArray("long.list1"));
1625
1626
1627 assertArrayEquals(expected, conf.getLongArray("long.list2"));
1628
1629
1630 assertArrayEquals(expected, conf.getLongArray("long.list3"));
1631
1632
1633 assertArrayEquals(expected, conf.getLongArray("long.list4"));
1634
1635
1636 assertArrayEquals(expected, conf.getLongArray("long.list5"));
1637
1638
1639 assertArrayEquals(expected, conf.getLongArray("long.list6"));
1640
1641
1642 assertArrayEquals(expected, conf.getLongArray("long.list.interpolated"));
1643
1644
1645 assertArrayEquals(new long[] {1}, conf.getLongArray("long.string"));
1646 assertArrayEquals(new long[] {1}, conf.getLongArray("long.object"));
1647
1648
1649 assertArrayEquals(new long[] {}, conf.getLongArray("empty"));
1650 }
1651
1652 @Test
1653 public void testGetLongList() {
1654
1655 assertEquals(null, conf.getLongList("long.list", null));
1656
1657 List<Object> expected = new ArrayList<>();
1658 expected.add(Long.valueOf("1"));
1659 expected.add(Long.valueOf("2"));
1660
1661
1662 assertEquals(expected, conf.getLongList("long.list1"));
1663
1664
1665 assertEquals(expected, conf.getLongList("long.list2"));
1666
1667
1668 assertEquals(expected, conf.getLongList("long.list3"));
1669
1670
1671 assertEquals(expected, conf.getLongList("long.list4"));
1672
1673
1674 assertEquals(expected, conf.getLongList("long.list5"));
1675
1676
1677 assertEquals(expected, conf.getLongList("long.list6"));
1678
1679
1680 assertEquals(expected, conf.getLongList("long.list.interpolated"));
1681
1682
1683 expected = new ArrayList<>();
1684 expected.add(Long.valueOf("1"));
1685 assertEquals(expected, conf.getLongList("long.string"));
1686 assertEquals(expected, conf.getLongList("long.object"));
1687
1688
1689 assertEquals(new ArrayList<>(), conf.getLongList("empty"));
1690 }
1691
1692 @Test
1693 public void testGetPrimitiveArrayInvalidType() {
1694 assertThrows(ConversionException.class, () -> conf.getArray(Boolean.TYPE, "calendar.list4"));
1695 }
1696
1697
1698
1699
1700 @Test
1701 public void testGetPropertyWithoutConversion() {
1702 final String key = "test.str";
1703 final String value = "someTestValue";
1704 conf.addProperty(key, value);
1705 assertEquals(value, conf.get(String.class, key));
1706 }
1707
1708 @Test
1709 public void testGetShortArray() {
1710
1711 final short[] defaultValue = {2, 1};
1712 assertArrayEquals(conf.getShortArray("short.list", defaultValue), defaultValue);
1713
1714 final short[] expected = {1, 2};
1715
1716
1717 assertArrayEquals(expected, conf.getShortArray("short.list1"));
1718
1719
1720 assertArrayEquals(expected, conf.getShortArray("short.list2"));
1721
1722
1723 assertArrayEquals(expected, conf.getShortArray("short.list3"));
1724
1725
1726 assertArrayEquals(expected, conf.getShortArray("short.list4"));
1727
1728
1729 assertArrayEquals(expected, conf.getShortArray("short.list5"));
1730
1731
1732 assertArrayEquals(expected, conf.getShortArray("short.list6"));
1733
1734
1735 assertArrayEquals(expected, conf.getShortArray("short.list.interpolated"));
1736
1737
1738 assertArrayEquals(new short[] {1}, conf.getShortArray("short.string"));
1739 assertArrayEquals(new short[] {1}, conf.getShortArray("short.object"));
1740
1741
1742 assertArrayEquals(new short[] {}, conf.getShortArray("empty"));
1743 }
1744
1745 @Test
1746 public void testGetShortList() {
1747
1748 assertEquals(null, conf.getShortList("short.list", null));
1749
1750 List<Object> expected = new ArrayList<>();
1751 expected.add(Short.valueOf("1"));
1752 expected.add(Short.valueOf("2"));
1753
1754
1755 assertEquals(expected, conf.getShortList("short.list1"));
1756
1757
1758 assertEquals(expected, conf.getShortList("short.list2"));
1759
1760
1761 assertEquals(expected, conf.getShortList("short.list3"));
1762
1763
1764 assertEquals(expected, conf.getShortList("short.list4"));
1765
1766
1767 assertEquals(expected, conf.getShortList("short.list5"));
1768
1769
1770 assertEquals(expected, conf.getShortList("short.list6"));
1771
1772
1773 assertEquals(expected, conf.getShortList("short.list.interpolated"));
1774
1775
1776 expected = new ArrayList<>();
1777 expected.add(Short.valueOf("1"));
1778 assertEquals(expected, conf.getShortList("short.string"));
1779 assertEquals(expected, conf.getShortList("short.object"));
1780
1781
1782 assertEquals(new ArrayList<>(), conf.getShortList("empty"));
1783 }
1784
1785 @Test
1786 public void testGetUnknown() {
1787 assertNull(conf.get(Object.class, "unknownkey"));
1788 }
1789
1790 @Test
1791 public void testGetUnknownException() {
1792 conf.setThrowExceptionOnMissing(true);
1793 assertThrows(NoSuchElementException.class, () -> conf.get(Object.class, "unknownkey"));
1794 }
1795
1796 @Test
1797 public void testGetURI() throws Exception {
1798
1799 final URI defaultValue = new URI("http://www.google.com");
1800 assertEquals(conf.getURI("url", defaultValue), defaultValue);
1801
1802 final URI expected = new URI("http://jakarta.apache.org");
1803
1804
1805 assertEquals(expected, conf.getURI("uri.string"));
1806
1807
1808 assertEquals(expected, conf.getURI("uri.object"));
1809
1810
1811 assertEquals(expected, conf.getURI("uri.string.interpolated"));
1812 }
1813
1814 @Test
1815 public void testGetURIArray() throws Exception {
1816
1817 final URI[] defaultValue = {new URI("http://www.apache.org"), new URI("http://jakarta.apache.org")};
1818 assertArrayEquals(conf.getURIArray("url.list", defaultValue), defaultValue);
1819
1820 final URI[] expected = {new URI("http://jakarta.apache.org"), new URI("http://www.apache.org")};
1821
1822
1823 assertArrayEquals(expected, conf.getURIArray("uri.list1"));
1824
1825
1826 assertArrayEquals(expected, conf.getURIArray("uri.list2"));
1827
1828
1829 assertArrayEquals(expected, conf.getURIArray("uri.list3"));
1830
1831
1832 assertArrayEquals(expected, conf.getURIArray("uri.list4"));
1833
1834
1835 assertArrayEquals(expected, conf.getURIArray("uri.list6"));
1836
1837
1838 assertArrayEquals(expected, conf.getURIArray("uri.list.interpolated"));
1839
1840
1841 assertArrayEquals(new URI[] {new URI("http://jakarta.apache.org")}, conf.getURIArray("uri.string"));
1842 assertArrayEquals(new URI[] {new URI("http://jakarta.apache.org")}, conf.getURIArray("uri.object"));
1843
1844
1845 assertArrayEquals(new URI[] {}, conf.getURIArray("empty"));
1846 }
1847
1848 @Test
1849 public void testGetURIList() throws Exception {
1850
1851 assertEquals(null, conf.getURIList("uri.list", null));
1852
1853 List<Object> expected = new ArrayList<>();
1854 expected.add(new URI("http://jakarta.apache.org"));
1855 expected.add(new URI("http://www.apache.org"));
1856
1857
1858 assertEquals(expected, conf.getURIList("uri.list1"));
1859
1860
1861 assertEquals(expected, conf.getURIList("uri.list2"));
1862
1863
1864 assertEquals(expected, conf.getURIList("uri.list3"));
1865
1866
1867 assertEquals(expected, conf.getURIList("uri.list4"));
1868
1869
1870 assertEquals(expected, conf.getURIList("uri.list6"));
1871
1872
1873 assertEquals(expected, conf.getURIList("uri.list.interpolated"));
1874
1875
1876 expected = new ArrayList<>();
1877 expected.add(new URI("http://jakarta.apache.org"));
1878 assertEquals(expected, conf.getURIList("uri.string"));
1879 assertEquals(expected, conf.getURIList("uri.object"));
1880
1881
1882 assertEquals(new ArrayList<>(), conf.getURIList("empty"));
1883 }
1884
1885 @Test
1886 public void testGetURL() throws Exception {
1887
1888 final URL defaultValue = new URL("http://www.google.com");
1889 assertEquals(conf.getURL("url", defaultValue), defaultValue);
1890
1891 final URL expected = new URL("http://jakarta.apache.org");
1892
1893
1894 assertEquals(expected, conf.getURL("url.string"));
1895
1896
1897 assertEquals(expected, conf.getURL("url.object"));
1898
1899
1900 assertEquals(expected, conf.getURL("url.string.interpolated"));
1901 }
1902
1903 @Test
1904 public void testGetURLArray() throws Exception {
1905
1906 final URL[] defaultValue = {new URL("http://www.apache.org"), new URL("http://jakarta.apache.org")};
1907 assertArrayEquals(conf.getURLArray("url.list", defaultValue), defaultValue);
1908
1909 final URL[] expected = {new URL("http://jakarta.apache.org"), new URL("http://www.apache.org")};
1910
1911
1912 assertArrayEquals(expected, conf.getURLArray("url.list1"));
1913
1914
1915 assertArrayEquals(expected, conf.getURLArray("url.list2"));
1916
1917
1918 assertArrayEquals(expected, conf.getURLArray("url.list3"));
1919
1920
1921 assertArrayEquals(expected, conf.getURLArray("url.list4"));
1922
1923
1924 assertArrayEquals(expected, conf.getURLArray("url.list6"));
1925
1926
1927 assertArrayEquals(expected, conf.getURLArray("url.list.interpolated"));
1928
1929
1930 assertArrayEquals(new URL[] {new URL("http://jakarta.apache.org")}, conf.getURLArray("url.string"));
1931 assertArrayEquals(new URL[] {new URL("http://jakarta.apache.org")}, conf.getURLArray("url.object"));
1932
1933
1934 assertArrayEquals(new URL[] {}, conf.getURLArray("empty"));
1935 }
1936
1937 @Test
1938 public void testGetURLList() throws Exception {
1939
1940 assertEquals(null, conf.getURLList("url.list", null));
1941
1942 List<Object> expected = new ArrayList<>();
1943 expected.add(new URL("http://jakarta.apache.org"));
1944 expected.add(new URL("http://www.apache.org"));
1945
1946
1947 assertEquals(expected, conf.getURLList("url.list1"));
1948
1949
1950 assertEquals(expected, conf.getURLList("url.list2"));
1951
1952
1953 assertEquals(expected, conf.getURLList("url.list3"));
1954
1955
1956 assertEquals(expected, conf.getURLList("url.list4"));
1957
1958
1959 assertEquals(expected, conf.getURLList("url.list6"));
1960
1961
1962 assertEquals(expected, conf.getURLList("url.list.interpolated"));
1963
1964
1965 expected = new ArrayList<>();
1966 expected.add(new URL("http://jakarta.apache.org"));
1967 assertEquals(expected, conf.getURLList("url.string"));
1968 assertEquals(expected, conf.getURLList("url.object"));
1969
1970
1971 assertEquals(new ArrayList<>(), conf.getURLList("empty"));
1972 }
1973
1974 @Test
1975 public void testIsEmpty() {
1976 final Configuration baseconf = new BaseConfiguration();
1977 final DataConfiguration conf = new DataConfiguration(baseconf);
1978
1979 assertTrue(conf.isEmpty());
1980 baseconf.setProperty("foo", "bar");
1981 assertFalse(conf.isEmpty());
1982 }
1983
1984 @Test
1985 public void testNullConfiguration() {
1986 assertThrows(NullPointerException.class, () -> new DataConfiguration(null));
1987 }
1988 }