1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.configuration;
19
20 import java.util.ArrayList;
21 import java.util.Iterator;
22 import java.util.List;
23
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26
27 import junit.framework.TestCase;
28 import junitx.framework.ListAssert;
29
30 /***
31 * Abstract TestCase for implementations of {@link AbstractConfiguration}.
32 *
33 * @author Emmanuel Bourg
34 * @version $Revision: 515306 $, $Date: 2007-03-06 22:15:00 +0100 (Di, 06 Mrz 2007) $
35 */
36 public abstract class TestAbstractConfiguration extends TestCase
37 {
38 /***
39 * Return an abstract configuration with the following data:<br>
40 * <pre>
41 * key1 = value1
42 * key2 = value2
43 * list = value1, value2
44 * listesc = value1//,value2
45 * </pre>
46 */
47 protected abstract AbstractConfiguration getConfiguration();
48
49 /***
50 * Return an empty configuration.
51 */
52 protected abstract AbstractConfiguration getEmptyConfiguration();
53
54 public void testGetProperty()
55 {
56 Configuration config = getConfiguration();
57 assertEquals("key1", "value1", config.getProperty("key1"));
58 assertEquals("key2", "value2", config.getProperty("key2"));
59 assertNull("key3", config.getProperty("key3"));
60 }
61
62 public void testList()
63 {
64 Configuration config = getConfiguration();
65
66 List list = config.getList("list");
67 assertNotNull("list not found", config.getProperty("list"));
68 assertEquals("list size", 2, list.size());
69 assertTrue("'value1' is not in the list", list.contains("value1"));
70 assertTrue("'value2' is not in the list", list.contains("value2"));
71 }
72
73 /***
74 * Tests whether the escape character for list delimiters is recocknized and
75 * removed.
76 */
77 public void testListEscaped()
78 {
79 assertEquals("Wrong value for escaped list", "value1,value2",
80 getConfiguration().getString("listesc"));
81 }
82
83 public void testAddPropertyDirect()
84 {
85 AbstractConfiguration config = getConfiguration();
86 config.addPropertyDirect("key3", "value3");
87 assertEquals("key3", "value3", config.getProperty("key3"));
88
89 config.addPropertyDirect("key3", "value4");
90 config.addPropertyDirect("key3", "value5");
91 List list = config.getList("key3");
92 assertNotNull("no list found for the 'key3' property", list);
93
94 List expected = new ArrayList();
95 expected.add("value3");
96 expected.add("value4");
97 expected.add("value5");
98
99 ListAssert.assertEquals("values for the 'key3' property", expected, list);
100 }
101
102 public void testIsEmpty()
103 {
104 Configuration config = getConfiguration();
105 assertFalse("the configuration is empty", config.isEmpty());
106 assertTrue("the configuration is not empty", getEmptyConfiguration().isEmpty());
107 }
108
109 public void testContainsKey()
110 {
111 Configuration config = getConfiguration();
112 assertTrue("key1 not found", config.containsKey("key1"));
113 assertFalse("key3 found", config.containsKey("key3"));
114 }
115
116 public void testClearProperty()
117 {
118 Configuration config = getConfiguration();
119 config.clearProperty("key2");
120 assertFalse("key2 not cleared", config.containsKey("key2"));
121 }
122
123 public void testGetKeys()
124 {
125 Configuration config = getConfiguration();
126 Iterator keys = config.getKeys();
127
128 List expectedKeys = new ArrayList();
129 expectedKeys.add("key1");
130 expectedKeys.add("key2");
131 expectedKeys.add("list");
132 expectedKeys.add("listesc");
133
134 assertNotNull("null iterator", keys);
135 assertTrue("empty iterator", keys.hasNext());
136
137 List actualKeys = new ArrayList();
138 while (keys.hasNext())
139 {
140 actualKeys.add(keys.next());
141 }
142
143 ListAssert.assertEquals("keys", expectedKeys, actualKeys);
144 }
145
146 /***
147 * Tests accessing the configuration's logger.
148 */
149 public void testSetLogger()
150 {
151 AbstractConfiguration config = getEmptyConfiguration();
152 assertNotNull("Default logger is null", config.getLogger());
153 Log log = LogFactory.getLog(config.getClass());
154 config.setLogger(log);
155 assertSame("Logger was not set", log, config.getLogger());
156 }
157 }