1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.configuration;
18
19 import java.io.File;
20 import java.net.URL;
21 import java.util.ArrayList;
22 import java.util.List;
23
24 import junit.framework.TestCase;
25 import junitx.framework.ListAssert;
26
27 /***
28 * Tests the ConfigurationUtils class
29 *
30 * @version $Revision$, $Date: 2005-02-26 13:56:39 +0100 (Sat, 26 Feb 2005) $
31 */
32 public class TestConfigurationUtils extends TestCase
33 {
34 protected Configuration config = new BaseConfiguration();
35
36 public void testToString()
37 {
38 String lineSeparator = System.getProperty("line.separator");
39
40 assertEquals("String representation of an empty configuration", "", ConfigurationUtils.toString(config));
41
42 config.setProperty("one", "1");
43 assertEquals("String representation of a configuration", "one=1", ConfigurationUtils.toString(config));
44
45 config.setProperty("two", "2");
46 assertEquals("String representation of a configuration", "one=1" + lineSeparator + "two=2" , ConfigurationUtils.toString(config));
47
48 config.clearProperty("one");
49 assertEquals("String representation of a configuration", "two=2" , ConfigurationUtils.toString(config));
50
51 config.setProperty("one","1");
52 assertEquals("String representation of a configuration", "two=2" + lineSeparator + "one=1" , ConfigurationUtils.toString(config));
53 }
54
55 public void testGetURL() throws Exception
56 {
57 assertEquals(
58 "http://localhost:8080/webapp/config/config.xml",
59 ConfigurationUtils
60 .getURL(
61 "http://localhost:8080/webapp/config/baseConfig.xml",
62 "config.xml")
63 .toString());
64 assertEquals(
65 "http://localhost:8080/webapp/config/config.xml",
66 ConfigurationUtils
67 .getURL(
68 "http://localhost:8080/webapp/baseConfig.xml",
69 "config/config.xml")
70 .toString());
71 URL url = ConfigurationUtils.getURL(null, "config.xml");
72 assertEquals("file", url.getProtocol());
73 assertEquals("", url.getHost());
74
75 assertEquals(
76 "http://localhost:8080/webapp/config/config.xml",
77 ConfigurationUtils
78 .getURL(
79 "ftp://ftp.server.com/downloads/baseConfig.xml",
80 "http://localhost:8080/webapp/config/config.xml")
81 .toString());
82 assertEquals(
83 "http://localhost:8080/webapp/config/config.xml",
84 ConfigurationUtils
85 .getURL(null, "http://localhost:8080/webapp/config/config.xml")
86 .toString());
87 File absFile = new File("config.xml").getAbsoluteFile();
88 assertEquals(
89 absFile.toURL(),
90 ConfigurationUtils.getURL(
91 "http://localhost:8080/webapp/config/baseConfig.xml",
92 absFile.getAbsolutePath()));
93 assertEquals(
94 absFile.toURL(),
95 ConfigurationUtils.getURL(null, absFile.getAbsolutePath()));
96
97 assertEquals(absFile.toURL(),
98 ConfigurationUtils.getURL(absFile.getParent(), "config.xml"));
99 }
100
101 public void testGetBasePath() throws Exception
102 {
103 URL url = new URL("http://xyz.net/foo/bar.xml");
104 assertEquals("base path of " + url, "http://xyz.net/foo/", ConfigurationUtils.getBasePath(url));
105
106 url = new URL("http://xyz.net/foo/");
107 assertEquals("base path of " + url, "http://xyz.net/foo/", ConfigurationUtils.getBasePath(url));
108
109 url = new URL("http://xyz.net/foo");
110 assertEquals("base path of " + url, "http://xyz.net/", ConfigurationUtils.getBasePath(url));
111
112 url = new URL("http://xyz.net/");
113 assertEquals("base path of " + url, "http://xyz.net/", ConfigurationUtils.getBasePath(url));
114
115 url = new URL("http://xyz.net");
116 assertEquals("base path of " + url, "http://xyz.net", ConfigurationUtils.getBasePath(url));
117 }
118
119 public void testGetFileName() throws Exception
120 {
121 assertEquals("file name for a null URL", null, ConfigurationUtils.getFileName(null));
122
123 URL url = new URL("http://xyz.net/foo/");
124 assertEquals("file for a directory URL " + url, null, ConfigurationUtils.getFileName(url));
125
126 url = new URL("http://xyz.net/foo/bar.xml");
127 assertEquals("file name for a valid URL " + url, "bar.xml", ConfigurationUtils.getFileName(url));
128 }
129
130 public void testCopy()
131 {
132
133 Configuration conf1 = new BaseConfiguration();
134 conf1.addProperty("key1", "value1");
135 conf1.addProperty("key2", "value2");
136
137
138 Configuration conf2 = new BaseConfiguration();
139 conf2.addProperty("key1", "value3");
140 conf2.addProperty("key2", "value4");
141
142
143 ConfigurationUtils.copy(conf1, conf2);
144
145 assertEquals("'key1' property", "value1", conf2.getProperty("key1"));
146 assertEquals("'key2' property", "value2", conf2.getProperty("key2"));
147 }
148
149 public void testAppend()
150 {
151
152 Configuration conf1 = new BaseConfiguration();
153 conf1.addProperty("key1", "value1");
154 conf1.addProperty("key2", "value2");
155
156
157 Configuration conf2 = new BaseConfiguration();
158 conf2.addProperty("key1", "value3");
159 conf2.addProperty("key2", "value4");
160
161
162 ConfigurationUtils.append(conf1, conf2);
163
164 List expected = new ArrayList();
165 expected.add("value3");
166 expected.add("value1");
167 ListAssert.assertEquals("'key1' property", expected, conf2.getList("key1"));
168
169 expected = new ArrayList();
170 expected.add("value4");
171 expected.add("value2");
172 ListAssert.assertEquals("'key2' property", expected, conf2.getList("key2"));
173 }
174
175 public void testGetFile() throws Exception
176 {
177 File directory = new File("target");
178 File reference = new File(directory, "test.txt").getAbsoluteFile();
179
180 assertEquals(reference, ConfigurationUtils.getFile(null, reference.getAbsolutePath()));
181 assertEquals(reference, ConfigurationUtils.getFile(directory.getAbsolutePath(), reference.getAbsolutePath()));
182 assertEquals(reference, ConfigurationUtils.getFile(directory.getAbsolutePath(), reference.getName()));
183 assertEquals(reference, ConfigurationUtils.getFile(directory.toURL().toString(), reference.getName()));
184 assertEquals(reference, ConfigurationUtils.getFile("invalid", reference.toURL().toString()));
185 }
186 }