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.assertTrue;
21
22 import java.io.StringReader;
23
24 import org.apache.commons.configuration2.convert.DisabledListDelimiterHandler;
25 import org.apache.commons.configuration2.convert.LegacyListDelimiterHandler;
26 import org.apache.commons.configuration2.convert.ListDelimiterHandler;
27 import org.apache.commons.configuration2.ex.ConfigurationException;
28 import org.apache.commons.configuration2.io.FileHandler;
29 import org.junit.jupiter.api.Test;
30
31
32
33
34
35 public class TestXMLConfiguration605 {
36
37
38
39
40
41
42 private static void checkConfiguration(final Configuration config) {
43 assertTrue(config.containsKey("key0"));
44 assertTrue(config.containsKey("key1"));
45 assertTrue(config.containsKey("key3"));
46
47 assertTrue(config.containsKey("key2"));
48 }
49
50
51
52
53
54
55
56 private static Configuration create(final String content) throws ConfigurationException {
57 final XMLConfiguration config = new XMLConfiguration();
58 config.setListDelimiterHandler(new LegacyListDelimiterHandler(','));
59 final FileHandler handler = new FileHandler(config);
60 handler.load(new StringReader(content));
61 return config;
62 }
63
64
65
66
67
68
69
70
71 private static Configuration create(final String content, final ListDelimiterHandler delimiterHandler) throws ConfigurationException {
72 final XMLConfiguration config = new XMLConfiguration();
73 config.setListDelimiterHandler(delimiterHandler);
74 final FileHandler handler = new FileHandler(config);
75 handler.load(new StringReader(content));
76 return config;
77 }
78
79 @Test
80 void testWithCommaSeparatedList() throws Exception {
81 final String source = "<configuration><key0></key0><key1>a,b</key1><key2></key2><key3></key3></configuration>";
82 checkConfiguration(create(source));
83 }
84
85 @Test
86 void testWithNoComma() throws Exception {
87 final String source = "<configuration><key0></key0><key1></key1><key2></key2><key3></key3></configuration>";
88 checkConfiguration(create(source));
89 }
90
91 @Test
92 void testWithOnlyComma() throws Exception {
93 final String source = "<configuration><key0></key0><key1>,</key1><key2></key2><key3></key3></configuration>";
94 checkConfiguration(create(source));
95 }
96
97 @Test
98 void testWithOnlyCommaWithoutDelimiterParsing() throws Exception {
99 final String source = "<configuration><key0></key0><key1>,</key1><key2></key2><key3></key3></configuration>";
100 checkConfiguration(create(source, DisabledListDelimiterHandler.INSTANCE));
101 }
102
103 @Test
104 void testWithOnlyCommaWithStringBuilder() throws Exception {
105 final StringBuilder sourceBuilder = new StringBuilder("<configuration>");
106 sourceBuilder.append("<key0></key0>");
107 sourceBuilder.append("<key1>,</key1>");
108 sourceBuilder.append("<key2></key2>");
109 sourceBuilder.append("<key3></key3>");
110 sourceBuilder.append("</configuration>");
111 checkConfiguration(create(sourceBuilder.toString()));
112 }
113
114 @Test
115 void testWithOnlyCommaWithStringBuilderWithoutDelimiterParsing() throws Exception {
116 final StringBuilder sourceBuilder = new StringBuilder("<configuration>");
117 sourceBuilder.append("<key0></key0>");
118 sourceBuilder.append("<key1>,</key1>");
119 sourceBuilder.append("<key2></key2>");
120 sourceBuilder.append("<key3></key3>");
121 sourceBuilder.append("</configuration>");
122 checkConfiguration(create(sourceBuilder.toString(), DisabledListDelimiterHandler.INSTANCE));
123 }
124
125 @Test
126 void testWithSeparatingNonWhitespace() throws Exception {
127 final String source = "<configuration><key0></key0><key1>,</key1>A<key2></key2><key3></key3></configuration>";
128 checkConfiguration(create(source));
129 }
130
131 @Test
132 void testWithSeparatingWhitespace() throws Exception {
133 final String source = "<configuration><key0></key0><key1>,</key1> <key2></key2><key3></key3></configuration>";
134 checkConfiguration(create(source));
135 }
136 }