1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.io;
18
19 import java.io.File;
20 import java.io.IOException;
21 import java.util.ArrayList;
22 import java.util.Arrays;
23 import java.util.Collection;
24
25 import junit.framework.Test;
26 import junit.framework.TestSuite;
27 import junit.textui.TestRunner;
28
29 import org.apache.commons.io.testtools.FileBasedTestCase;
30
31
32
33
34
35
36
37
38
39
40 public class FilenameUtilsTestCase extends FileBasedTestCase {
41
42 private static final String SEP = "" + File.separatorChar;
43 private static final boolean WINDOWS = (File.separatorChar == '\\');
44
45 private File testFile1;
46 private File testFile2;
47
48 private static int testFile1Size;
49 private static int testFile2Size;
50
51 public static void main(String[] args) {
52 TestRunner.run(suite());
53 }
54
55 public static Test suite() {
56 return new TestSuite(FilenameUtilsTestCase.class);
57 }
58
59 public FilenameUtilsTestCase(String name) throws IOException {
60 super(name);
61
62 testFile1 = new File(getTestDirectory(), "file1-test.txt");
63 testFile2 = new File(getTestDirectory(), "file1a-test.txt");
64
65 testFile1Size = (int)testFile1.length();
66 testFile2Size = (int)testFile2.length();
67 }
68
69
70 protected void setUp() throws Exception {
71 getTestDirectory().mkdirs();
72 createFile(testFile1, testFile1Size);
73 createFile(testFile2, testFile2Size);
74 FileUtils.deleteDirectory(getTestDirectory());
75 getTestDirectory().mkdirs();
76 createFile(testFile1, testFile1Size);
77 createFile(testFile2, testFile2Size);
78 }
79
80
81 protected void tearDown() throws Exception {
82 FileUtils.deleteDirectory(getTestDirectory());
83 }
84
85
86 public void testNormalize() throws Exception {
87 assertEquals(null, FilenameUtils.normalize(null));
88 assertEquals(null, FilenameUtils.normalize(":"));
89 assertEquals(null, FilenameUtils.normalize("1:\\a\\b\\c.txt"));
90 assertEquals(null, FilenameUtils.normalize("1:"));
91 assertEquals(null, FilenameUtils.normalize("1:a"));
92 assertEquals(null, FilenameUtils.normalize("\\\\\\a\\b\\c.txt"));
93 assertEquals(null, FilenameUtils.normalize("\\\\a"));
94
95 assertEquals("a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("a\\b/c.txt"));
96 assertEquals("" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\a\\b/c.txt"));
97 assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("C:\\a\\b/c.txt"));
98 assertEquals("" + SEP + "" + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("\\\\server\\a\\b/c.txt"));
99 assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~\\a\\b/c.txt"));
100 assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalize("~user\\a\\b/c.txt"));
101
102 assertEquals("a" + SEP + "c", FilenameUtils.normalize("a/b/../c"));
103 assertEquals("c", FilenameUtils.normalize("a/b/../../c"));
104 assertEquals("c" + SEP, FilenameUtils.normalize("a/b/../../c/"));
105 assertEquals(null, FilenameUtils.normalize("a/b/../../../c"));
106 assertEquals("a" + SEP, FilenameUtils.normalize("a/b/.."));
107 assertEquals("a" + SEP, FilenameUtils.normalize("a/b/../"));
108 assertEquals("", FilenameUtils.normalize("a/b/../.."));
109 assertEquals("", FilenameUtils.normalize("a/b/../../"));
110 assertEquals(null, FilenameUtils.normalize("a/b/../../.."));
111 assertEquals("a" + SEP + "d", FilenameUtils.normalize("a/b/../c/../d"));
112 assertEquals("a" + SEP + "d" + SEP, FilenameUtils.normalize("a/b/../c/../d/"));
113 assertEquals("a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("a/b//d"));
114 assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/././."));
115 assertEquals("a" + SEP + "b" + SEP, FilenameUtils.normalize("a/b/./././"));
116 assertEquals("a" + SEP, FilenameUtils.normalize("./a/"));
117 assertEquals("a", FilenameUtils.normalize("./a"));
118 assertEquals("", FilenameUtils.normalize("./"));
119 assertEquals("", FilenameUtils.normalize("."));
120 assertEquals(null, FilenameUtils.normalize("../a"));
121 assertEquals(null, FilenameUtils.normalize(".."));
122 assertEquals("", FilenameUtils.normalize(""));
123
124 assertEquals(SEP + "a", FilenameUtils.normalize("/a"));
125 assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/"));
126 assertEquals(SEP + "a" + SEP + "c", FilenameUtils.normalize("/a/b/../c"));
127 assertEquals(SEP + "c", FilenameUtils.normalize("/a/b/../../c"));
128 assertEquals(null, FilenameUtils.normalize("/a/b/../../../c"));
129 assertEquals(SEP + "a" + SEP, FilenameUtils.normalize("/a/b/.."));
130 assertEquals(SEP + "", FilenameUtils.normalize("/a/b/../.."));
131 assertEquals(null, FilenameUtils.normalize("/a/b/../../.."));
132 assertEquals(SEP + "a" + SEP + "d", FilenameUtils.normalize("/a/b/../c/../d"));
133 assertEquals(SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("/a/b//d"));
134 assertEquals(SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("/a/b/././."));
135 assertEquals(SEP + "a", FilenameUtils.normalize("/./a"));
136 assertEquals(SEP + "", FilenameUtils.normalize("/./"));
137 assertEquals(SEP + "", FilenameUtils.normalize("/."));
138 assertEquals(null, FilenameUtils.normalize("/../a"));
139 assertEquals(null, FilenameUtils.normalize("/.."));
140 assertEquals(SEP + "", FilenameUtils.normalize("/"));
141
142 assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/a"));
143 assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/"));
144 assertEquals("~" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~/a/b/../c"));
145 assertEquals("~" + SEP + "c", FilenameUtils.normalize("~/a/b/../../c"));
146 assertEquals(null, FilenameUtils.normalize("~/a/b/../../../c"));
147 assertEquals("~" + SEP + "a" + SEP, FilenameUtils.normalize("~/a/b/.."));
148 assertEquals("~" + SEP + "", FilenameUtils.normalize("~/a/b/../.."));
149 assertEquals(null, FilenameUtils.normalize("~/a/b/../../.."));
150 assertEquals("~" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~/a/b/../c/../d"));
151 assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~/a/b//d"));
152 assertEquals("~" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~/a/b/././."));
153 assertEquals("~" + SEP + "a", FilenameUtils.normalize("~/./a"));
154 assertEquals("~" + SEP, FilenameUtils.normalize("~/./"));
155 assertEquals("~" + SEP, FilenameUtils.normalize("~/."));
156 assertEquals(null, FilenameUtils.normalize("~/../a"));
157 assertEquals(null, FilenameUtils.normalize("~/.."));
158 assertEquals("~" + SEP, FilenameUtils.normalize("~/"));
159 assertEquals("~" + SEP, FilenameUtils.normalize("~"));
160
161 assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/a"));
162 assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/"));
163 assertEquals("~user" + SEP + "a" + SEP + "c", FilenameUtils.normalize("~user/a/b/../c"));
164 assertEquals("~user" + SEP + "c", FilenameUtils.normalize("~user/a/b/../../c"));
165 assertEquals(null, FilenameUtils.normalize("~user/a/b/../../../c"));
166 assertEquals("~user" + SEP + "a" + SEP, FilenameUtils.normalize("~user/a/b/.."));
167 assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/a/b/../.."));
168 assertEquals(null, FilenameUtils.normalize("~user/a/b/../../.."));
169 assertEquals("~user" + SEP + "a" + SEP + "d", FilenameUtils.normalize("~user/a/b/../c/../d"));
170 assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("~user/a/b//d"));
171 assertEquals("~user" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("~user/a/b/././."));
172 assertEquals("~user" + SEP + "a", FilenameUtils.normalize("~user/./a"));
173 assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/./"));
174 assertEquals("~user" + SEP + "", FilenameUtils.normalize("~user/."));
175 assertEquals(null, FilenameUtils.normalize("~user/../a"));
176 assertEquals(null, FilenameUtils.normalize("~user/.."));
177 assertEquals("~user" + SEP, FilenameUtils.normalize("~user/"));
178 assertEquals("~user" + SEP, FilenameUtils.normalize("~user"));
179
180 assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/a"));
181 assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/"));
182 assertEquals("C:" + SEP + "a" + SEP + "c", FilenameUtils.normalize("C:/a/b/../c"));
183 assertEquals("C:" + SEP + "c", FilenameUtils.normalize("C:/a/b/../../c"));
184 assertEquals(null, FilenameUtils.normalize("C:/a/b/../../../c"));
185 assertEquals("C:" + SEP + "a" + SEP, FilenameUtils.normalize("C:/a/b/.."));
186 assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/a/b/../.."));
187 assertEquals(null, FilenameUtils.normalize("C:/a/b/../../.."));
188 assertEquals("C:" + SEP + "a" + SEP + "d", FilenameUtils.normalize("C:/a/b/../c/../d"));
189 assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:/a/b//d"));
190 assertEquals("C:" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:/a/b/././."));
191 assertEquals("C:" + SEP + "a", FilenameUtils.normalize("C:/./a"));
192 assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/./"));
193 assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/."));
194 assertEquals(null, FilenameUtils.normalize("C:/../a"));
195 assertEquals(null, FilenameUtils.normalize("C:/.."));
196 assertEquals("C:" + SEP + "", FilenameUtils.normalize("C:/"));
197
198 assertEquals("C:" + "a", FilenameUtils.normalize("C:a"));
199 assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/"));
200 assertEquals("C:" + "a" + SEP + "c", FilenameUtils.normalize("C:a/b/../c"));
201 assertEquals("C:" + "c", FilenameUtils.normalize("C:a/b/../../c"));
202 assertEquals(null, FilenameUtils.normalize("C:a/b/../../../c"));
203 assertEquals("C:" + "a" + SEP, FilenameUtils.normalize("C:a/b/.."));
204 assertEquals("C:" + "", FilenameUtils.normalize("C:a/b/../.."));
205 assertEquals(null, FilenameUtils.normalize("C:a/b/../../.."));
206 assertEquals("C:" + "a" + SEP + "d", FilenameUtils.normalize("C:a/b/../c/../d"));
207 assertEquals("C:" + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("C:a/b//d"));
208 assertEquals("C:" + "a" + SEP + "b" + SEP, FilenameUtils.normalize("C:a/b/././."));
209 assertEquals("C:" + "a", FilenameUtils.normalize("C:./a"));
210 assertEquals("C:" + "", FilenameUtils.normalize("C:./"));
211 assertEquals("C:" + "", FilenameUtils.normalize("C:."));
212 assertEquals(null, FilenameUtils.normalize("C:../a"));
213 assertEquals(null, FilenameUtils.normalize("C:.."));
214 assertEquals("C:" + "", FilenameUtils.normalize("C:"));
215
216 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/a"));
217 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/"));
218 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "c", FilenameUtils.normalize("//server/a/b/../c"));
219 assertEquals(SEP + SEP + "server" + SEP + "c", FilenameUtils.normalize("//server/a/b/../../c"));
220 assertEquals(null, FilenameUtils.normalize("//server/a/b/../../../c"));
221 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP, FilenameUtils.normalize("//server/a/b/.."));
222 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/a/b/../.."));
223 assertEquals(null, FilenameUtils.normalize("//server/a/b/../../.."));
224 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "d", FilenameUtils.normalize("//server/a/b/../c/../d"));
225 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalize("//server/a/b//d"));
226 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP, FilenameUtils.normalize("//server/a/b/././."));
227 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalize("//server/./a"));
228 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/./"));
229 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/."));
230 assertEquals(null, FilenameUtils.normalize("//server/../a"));
231 assertEquals(null, FilenameUtils.normalize("//server/.."));
232 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalize("//server/"));
233 }
234
235
236 public void testNormalizeNoEndSeparator() throws Exception {
237 assertEquals(null, FilenameUtils.normalizeNoEndSeparator(null));
238 assertEquals(null, FilenameUtils.normalizeNoEndSeparator(":"));
239 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("1:\\a\\b\\c.txt"));
240 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("1:"));
241 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("1:a"));
242 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("\\\\\\a\\b\\c.txt"));
243 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("\\\\a"));
244
245 assertEquals("a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("a\\b/c.txt"));
246 assertEquals("" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("\\a\\b/c.txt"));
247 assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("C:\\a\\b/c.txt"));
248 assertEquals("" + SEP + "" + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("\\\\server\\a\\b/c.txt"));
249 assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("~\\a\\b/c.txt"));
250 assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "c.txt", FilenameUtils.normalizeNoEndSeparator("~user\\a\\b/c.txt"));
251
252 assertEquals("a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("a/b/../c"));
253 assertEquals("c", FilenameUtils.normalizeNoEndSeparator("a/b/../../c"));
254 assertEquals("c", FilenameUtils.normalizeNoEndSeparator("a/b/../../c/"));
255 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("a/b/../../../c"));
256 assertEquals("a", FilenameUtils.normalizeNoEndSeparator("a/b/.."));
257 assertEquals("a", FilenameUtils.normalizeNoEndSeparator("a/b/../"));
258 assertEquals("", FilenameUtils.normalizeNoEndSeparator("a/b/../.."));
259 assertEquals("", FilenameUtils.normalizeNoEndSeparator("a/b/../../"));
260 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("a/b/../../.."));
261 assertEquals("a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("a/b/../c/../d"));
262 assertEquals("a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("a/b/../c/../d/"));
263 assertEquals("a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("a/b//d"));
264 assertEquals("a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("a/b/././."));
265 assertEquals("a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("a/b/./././"));
266 assertEquals("a", FilenameUtils.normalizeNoEndSeparator("./a/"));
267 assertEquals("a", FilenameUtils.normalizeNoEndSeparator("./a"));
268 assertEquals("", FilenameUtils.normalizeNoEndSeparator("./"));
269 assertEquals("", FilenameUtils.normalizeNoEndSeparator("."));
270 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("../a"));
271 assertEquals(null, FilenameUtils.normalizeNoEndSeparator(".."));
272 assertEquals("", FilenameUtils.normalizeNoEndSeparator(""));
273
274 assertEquals(SEP + "a", FilenameUtils.normalizeNoEndSeparator("/a"));
275 assertEquals(SEP + "a", FilenameUtils.normalizeNoEndSeparator("/a/"));
276 assertEquals(SEP + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("/a/b/../c"));
277 assertEquals(SEP + "c", FilenameUtils.normalizeNoEndSeparator("/a/b/../../c"));
278 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("/a/b/../../../c"));
279 assertEquals(SEP + "a", FilenameUtils.normalizeNoEndSeparator("/a/b/.."));
280 assertEquals(SEP + "", FilenameUtils.normalizeNoEndSeparator("/a/b/../.."));
281 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("/a/b/../../.."));
282 assertEquals(SEP + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("/a/b/../c/../d"));
283 assertEquals(SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("/a/b//d"));
284 assertEquals(SEP + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("/a/b/././."));
285 assertEquals(SEP + "a", FilenameUtils.normalizeNoEndSeparator("/./a"));
286 assertEquals(SEP + "", FilenameUtils.normalizeNoEndSeparator("/./"));
287 assertEquals(SEP + "", FilenameUtils.normalizeNoEndSeparator("/."));
288 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("/../a"));
289 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("/.."));
290 assertEquals(SEP + "", FilenameUtils.normalizeNoEndSeparator("/"));
291
292 assertEquals("~" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~/a"));
293 assertEquals("~" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~/a/"));
294 assertEquals("~" + SEP + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("~/a/b/../c"));
295 assertEquals("~" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("~/a/b/../../c"));
296 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~/a/b/../../../c"));
297 assertEquals("~" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~/a/b/.."));
298 assertEquals("~" + SEP + "", FilenameUtils.normalizeNoEndSeparator("~/a/b/../.."));
299 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~/a/b/../../.."));
300 assertEquals("~" + SEP + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("~/a/b/../c/../d"));
301 assertEquals("~" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("~/a/b//d"));
302 assertEquals("~" + SEP + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("~/a/b/././."));
303 assertEquals("~" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~/./a"));
304 assertEquals("~" + SEP, FilenameUtils.normalizeNoEndSeparator("~/./"));
305 assertEquals("~" + SEP, FilenameUtils.normalizeNoEndSeparator("~/."));
306 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~/../a"));
307 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~/.."));
308 assertEquals("~" + SEP, FilenameUtils.normalizeNoEndSeparator("~/"));
309 assertEquals("~" + SEP, FilenameUtils.normalizeNoEndSeparator("~"));
310
311 assertEquals("~user" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~user/a"));
312 assertEquals("~user" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~user/a/"));
313 assertEquals("~user" + SEP + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("~user/a/b/../c"));
314 assertEquals("~user" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("~user/a/b/../../c"));
315 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~user/a/b/../../../c"));
316 assertEquals("~user" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~user/a/b/.."));
317 assertEquals("~user" + SEP + "", FilenameUtils.normalizeNoEndSeparator("~user/a/b/../.."));
318 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~user/a/b/../../.."));
319 assertEquals("~user" + SEP + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("~user/a/b/../c/../d"));
320 assertEquals("~user" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("~user/a/b//d"));
321 assertEquals("~user" + SEP + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("~user/a/b/././."));
322 assertEquals("~user" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("~user/./a"));
323 assertEquals("~user" + SEP + "", FilenameUtils.normalizeNoEndSeparator("~user/./"));
324 assertEquals("~user" + SEP + "", FilenameUtils.normalizeNoEndSeparator("~user/."));
325 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~user/../a"));
326 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("~user/.."));
327 assertEquals("~user" + SEP, FilenameUtils.normalizeNoEndSeparator("~user/"));
328 assertEquals("~user" + SEP, FilenameUtils.normalizeNoEndSeparator("~user"));
329
330 assertEquals("C:" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("C:/a"));
331 assertEquals("C:" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("C:/a/"));
332 assertEquals("C:" + SEP + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("C:/a/b/../c"));
333 assertEquals("C:" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("C:/a/b/../../c"));
334 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:/a/b/../../../c"));
335 assertEquals("C:" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("C:/a/b/.."));
336 assertEquals("C:" + SEP + "", FilenameUtils.normalizeNoEndSeparator("C:/a/b/../.."));
337 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:/a/b/../../.."));
338 assertEquals("C:" + SEP + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("C:/a/b/../c/../d"));
339 assertEquals("C:" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("C:/a/b//d"));
340 assertEquals("C:" + SEP + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("C:/a/b/././."));
341 assertEquals("C:" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("C:/./a"));
342 assertEquals("C:" + SEP + "", FilenameUtils.normalizeNoEndSeparator("C:/./"));
343 assertEquals("C:" + SEP + "", FilenameUtils.normalizeNoEndSeparator("C:/."));
344 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:/../a"));
345 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:/.."));
346 assertEquals("C:" + SEP + "", FilenameUtils.normalizeNoEndSeparator("C:/"));
347
348 assertEquals("C:" + "a", FilenameUtils.normalizeNoEndSeparator("C:a"));
349 assertEquals("C:" + "a", FilenameUtils.normalizeNoEndSeparator("C:a/"));
350 assertEquals("C:" + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("C:a/b/../c"));
351 assertEquals("C:" + "c", FilenameUtils.normalizeNoEndSeparator("C:a/b/../../c"));
352 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:a/b/../../../c"));
353 assertEquals("C:" + "a", FilenameUtils.normalizeNoEndSeparator("C:a/b/.."));
354 assertEquals("C:" + "", FilenameUtils.normalizeNoEndSeparator("C:a/b/../.."));
355 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:a/b/../../.."));
356 assertEquals("C:" + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("C:a/b/../c/../d"));
357 assertEquals("C:" + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("C:a/b//d"));
358 assertEquals("C:" + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("C:a/b/././."));
359 assertEquals("C:" + "a", FilenameUtils.normalizeNoEndSeparator("C:./a"));
360 assertEquals("C:" + "", FilenameUtils.normalizeNoEndSeparator("C:./"));
361 assertEquals("C:" + "", FilenameUtils.normalizeNoEndSeparator("C:."));
362 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:../a"));
363 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("C:.."));
364 assertEquals("C:" + "", FilenameUtils.normalizeNoEndSeparator("C:"));
365
366 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("//server/a"));
367 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("//server/a/"));
368 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("//server/a/b/../c"));
369 assertEquals(SEP + SEP + "server" + SEP + "c", FilenameUtils.normalizeNoEndSeparator("//server/a/b/../../c"));
370 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("//server/a/b/../../../c"));
371 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("//server/a/b/.."));
372 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalizeNoEndSeparator("//server/a/b/../.."));
373 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("//server/a/b/../../.."));
374 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("//server/a/b/../c/../d"));
375 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b" + SEP + "d", FilenameUtils.normalizeNoEndSeparator("//server/a/b//d"));
376 assertEquals(SEP + SEP + "server" + SEP + "a" + SEP + "b", FilenameUtils.normalizeNoEndSeparator("//server/a/b/././."));
377 assertEquals(SEP + SEP + "server" + SEP + "a", FilenameUtils.normalizeNoEndSeparator("//server/./a"));
378 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalizeNoEndSeparator("//server/./"));
379 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalizeNoEndSeparator("//server/."));
380 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("//server/../a"));
381 assertEquals(null, FilenameUtils.normalizeNoEndSeparator("//server/.."));
382 assertEquals(SEP + SEP + "server" + SEP + "", FilenameUtils.normalizeNoEndSeparator("//server/"));
383 }
384
385
386 public void testConcat() {
387 assertEquals(null, FilenameUtils.concat("", null));
388 assertEquals(null, FilenameUtils.concat(null, null));
389 assertEquals(null, FilenameUtils.concat(null, ""));
390 assertEquals(null, FilenameUtils.concat(null, "a"));
391 assertEquals(SEP + "a", FilenameUtils.concat(null, "/a"));
392
393 assertEquals(null, FilenameUtils.concat("", ":"));
394 assertEquals(null, FilenameUtils.concat(":", ""));
395
396 assertEquals("f" + SEP, FilenameUtils.concat("", "f/"));
397 assertEquals("f", FilenameUtils.concat("", "f"));
398 assertEquals("a" + SEP + "f" + SEP, FilenameUtils.concat("a/", "f/"));
399 assertEquals("a" + SEP + "f", FilenameUtils.concat("a", "f"));
400 assertEquals("a" + SEP + "b" + SEP + "f" + SEP, FilenameUtils.concat("a/b/", "f/"));
401 assertEquals("a" + SEP + "b" + SEP + "f", FilenameUtils.concat("a/b", "f"));
402
403 assertEquals("a" + SEP + "f" + SEP, FilenameUtils.concat("a/b/", "../f/"));
404 assertEquals("a" + SEP + "f", FilenameUtils.concat("a/b", "../f"));
405 assertEquals("a" + SEP + "c" + SEP + "g" + SEP, FilenameUtils.concat("a/b/../c/", "f/../g/"));
406 assertEquals("a" + SEP + "c" + SEP + "g", FilenameUtils.concat("a/b/../c", "f/../g"));
407
408 assertEquals("a" + SEP + "c.txt" + SEP + "f", FilenameUtils.concat("a/c.txt", "f"));
409
410 assertEquals(SEP + "f" + SEP, FilenameUtils.concat("", "/f/"));
411 assertEquals(SEP + "f", FilenameUtils.concat("", "/f"));
412 assertEquals(SEP + "f" + SEP, FilenameUtils.concat("a/", "/f/"));
413 assertEquals(SEP + "f", FilenameUtils.concat("a", "/f"));
414
415 assertEquals(SEP + "c" + SEP + "d", FilenameUtils.concat("a/b/", "/c/d"));
416 assertEquals("C:c" + SEP + "d", FilenameUtils.concat("a/b/", "C:c/d"));
417 assertEquals("C:" + SEP + "c" + SEP + "d", FilenameUtils.concat("a/b/", "C:/c/d"));
418 assertEquals("~" + SEP + "c" + SEP + "d", FilenameUtils.concat("a/b/", "~/c/d"));
419 assertEquals("~user" + SEP + "c" + SEP + "d", FilenameUtils.concat("a/b/", "~user/c/d"));
420 assertEquals("~" + SEP, FilenameUtils.concat("a/b/", "~"));
421 assertEquals("~user" + SEP, FilenameUtils.concat("a/b/", "~user"));
422 }
423
424
425 public void testSeparatorsToUnix() {
426 assertEquals(null, FilenameUtils.separatorsToUnix(null));
427 assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("/a/b/c"));
428 assertEquals("/a/b/c.txt", FilenameUtils.separatorsToUnix("/a/b/c.txt"));
429 assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("/a/b\\c"));
430 assertEquals("/a/b/c", FilenameUtils.separatorsToUnix("\\a\\b\\c"));
431 assertEquals("D:/a/b/c", FilenameUtils.separatorsToUnix("D:\\a\\b\\c"));
432 }
433
434 public void testSeparatorsToWindows() {
435 assertEquals(null, FilenameUtils.separatorsToWindows(null));
436 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("\\a\\b\\c"));
437 assertEquals("\\a\\b\\c.txt", FilenameUtils.separatorsToWindows("\\a\\b\\c.txt"));
438 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("\\a\\b/c"));
439 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToWindows("/a/b/c"));
440 assertEquals("D:\\a\\b\\c", FilenameUtils.separatorsToWindows("D:/a/b/c"));
441 }
442
443 public void testSeparatorsToSystem() {
444 if (WINDOWS) {
445 assertEquals(null, FilenameUtils.separatorsToSystem(null));
446 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("\\a\\b\\c"));
447 assertEquals("\\a\\b\\c.txt", FilenameUtils.separatorsToSystem("\\a\\b\\c.txt"));
448 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("\\a\\b/c"));
449 assertEquals("\\a\\b\\c", FilenameUtils.separatorsToSystem("/a/b/c"));
450 assertEquals("D:\\a\\b\\c", FilenameUtils.separatorsToSystem("D:/a/b/c"));
451 } else {
452 assertEquals(null, FilenameUtils.separatorsToSystem(null));
453 assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("/a/b/c"));
454 assertEquals("/a/b/c.txt", FilenameUtils.separatorsToSystem("/a/b/c.txt"));
455 assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("/a/b\\c"));
456 assertEquals("/a/b/c", FilenameUtils.separatorsToSystem("\\a\\b\\c"));
457 assertEquals("D:/a/b/c", FilenameUtils.separatorsToSystem("D:\\a\\b\\c"));
458 }
459 }
460
461
462 public void testGetPrefixLength() {
463 assertEquals(-1, FilenameUtils.getPrefixLength(null));
464 assertEquals(-1, FilenameUtils.getPrefixLength(":"));
465 assertEquals(-1, FilenameUtils.getPrefixLength("1:\\a\\b\\c.txt"));
466 assertEquals(-1, FilenameUtils.getPrefixLength("1:"));
467 assertEquals(-1, FilenameUtils.getPrefixLength("1:a"));
468 assertEquals(-1, FilenameUtils.getPrefixLength("\\\\\\a\\b\\c.txt"));
469 assertEquals(-1, FilenameUtils.getPrefixLength("\\\\a"));
470
471 assertEquals(0, FilenameUtils.getPrefixLength(""));
472 assertEquals(1, FilenameUtils.getPrefixLength("\\"));
473 assertEquals(2, FilenameUtils.getPrefixLength("C:"));
474 assertEquals(3, FilenameUtils.getPrefixLength("C:\\"));
475 assertEquals(9, FilenameUtils.getPrefixLength("//server/"));
476 assertEquals(2, FilenameUtils.getPrefixLength("~"));
477 assertEquals(2, FilenameUtils.getPrefixLength("~/"));
478 assertEquals(6, FilenameUtils.getPrefixLength("~user"));
479 assertEquals(6, FilenameUtils.getPrefixLength("~user/"));
480
481 assertEquals(0, FilenameUtils.getPrefixLength("a\\b\\c.txt"));
482 assertEquals(1, FilenameUtils.getPrefixLength("\\a\\b\\c.txt"));
483 assertEquals(2, FilenameUtils.getPrefixLength("C:a\\b\\c.txt"));
484 assertEquals(3, FilenameUtils.getPrefixLength("C:\\a\\b\\c.txt"));
485 assertEquals(9, FilenameUtils.getPrefixLength("\\\\server\\a\\b\\c.txt"));
486
487 assertEquals(0, FilenameUtils.getPrefixLength("a/b/c.txt"));
488 assertEquals(1, FilenameUtils.getPrefixLength("/a/b/c.txt"));
489 assertEquals(3, FilenameUtils.getPrefixLength("C:/a/b/c.txt"));
490 assertEquals(9, FilenameUtils.getPrefixLength("//server/a/b/c.txt"));
491 assertEquals(2, FilenameUtils.getPrefixLength("~/a/b/c.txt"));
492 assertEquals(6, FilenameUtils.getPrefixLength("~user/a/b/c.txt"));
493
494 assertEquals(0, FilenameUtils.getPrefixLength("a\\b\\c.txt"));
495 assertEquals(1, FilenameUtils.getPrefixLength("\\a\\b\\c.txt"));
496 assertEquals(2, FilenameUtils.getPrefixLength("~\\a\\b\\c.txt"));
497 assertEquals(6, FilenameUtils.getPrefixLength("~user\\a\\b\\c.txt"));
498 }
499
500 public void testIndexOfLastSeparator() {
501 assertEquals(-1, FilenameUtils.indexOfLastSeparator(null));
502 assertEquals(-1, FilenameUtils.indexOfLastSeparator("noseperator.inthispath"));
503 assertEquals(3, FilenameUtils.indexOfLastSeparator("a/b/c"));
504 assertEquals(3, FilenameUtils.indexOfLastSeparator("a\\b\\c"));
505 }
506
507 public void testIndexOfExtension() {
508 assertEquals(-1, FilenameUtils.indexOfExtension(null));
509 assertEquals(-1, FilenameUtils.indexOfExtension("file"));
510 assertEquals(4, FilenameUtils.indexOfExtension("file.txt"));
511 assertEquals(13, FilenameUtils.indexOfExtension("a.txt/b.txt/c.txt"));
512 assertEquals(-1, FilenameUtils.indexOfExtension("a/b/c"));
513 assertEquals(-1, FilenameUtils.indexOfExtension("a\\b\\c"));
514 assertEquals(-1, FilenameUtils.indexOfExtension("a/b.notextension/c"));
515 assertEquals(-1, FilenameUtils.indexOfExtension("a\\b.notextension\\c"));
516 }
517
518
519 public void testGetPrefix() {
520 assertEquals(null, FilenameUtils.getPrefix(null));
521 assertEquals(null, FilenameUtils.getPrefix(":"));
522 assertEquals(null, FilenameUtils.getPrefix("1:\\a\\b\\c.txt"));
523 assertEquals(null, FilenameUtils.getPrefix("1:"));
524 assertEquals(null, FilenameUtils.getPrefix("1:a"));
525 assertEquals(null, FilenameUtils.getPrefix("\\\\\\a\\b\\c.txt"));
526 assertEquals(null, FilenameUtils.getPrefix("\\\\a"));
527
528 assertEquals("", FilenameUtils.getPrefix(""));
529 assertEquals("\\", FilenameUtils.getPrefix("\\"));
530 assertEquals("C:", FilenameUtils.getPrefix("C:"));
531 assertEquals("C:\\", FilenameUtils.getPrefix("C:\\"));
532 assertEquals("//server/", FilenameUtils.getPrefix("//server/"));
533 assertEquals("~/", FilenameUtils.getPrefix("~"));
534 assertEquals("~/", FilenameUtils.getPrefix("~/"));
535 assertEquals("~user/", FilenameUtils.getPrefix("~user"));
536 assertEquals("~user/", FilenameUtils.getPrefix("~user/"));
537
538 assertEquals("", FilenameUtils.getPrefix("a\\b\\c.txt"));
539 assertEquals("\\", FilenameUtils.getPrefix("\\a\\b\\c.txt"));
540 assertEquals("C:\\", FilenameUtils.getPrefix("C:\\a\\b\\c.txt"));
541 assertEquals("\\\\server\\", FilenameUtils.getPrefix("\\\\server\\a\\b\\c.txt"));
542
543 assertEquals("", FilenameUtils.getPrefix("a/b/c.txt"));
544 assertEquals("/", FilenameUtils.getPrefix("/a/b/c.txt"));
545 assertEquals("C:/", FilenameUtils.getPrefix("C:/a/b/c.txt"));
546 assertEquals("//server/", FilenameUtils.getPrefix("//server/a/b/c.txt"));
547 assertEquals("~/", FilenameUtils.getPrefix("~/a/b/c.txt"));
548 assertEquals("~user/", FilenameUtils.getPrefix("~user/a/b/c.txt"));
549
550 assertEquals("", FilenameUtils.getPrefix("a\\b\\c.txt"));
551 assertEquals("\\", FilenameUtils.getPrefix("\\a\\b\\c.txt"));
552 assertEquals("~\\", FilenameUtils.getPrefix("~\\a\\b\\c.txt"));
553 assertEquals("~user\\", FilenameUtils.getPrefix("~user\\a\\b\\c.txt"));
554 }
555
556 public void testGetPath() {
557 assertEquals(null, FilenameUtils.getPath(null));
558 assertEquals("", FilenameUtils.getPath("noseperator.inthispath"));
559 assertEquals("a/b/", FilenameUtils.getPath("a/b/c.txt"));
560 assertEquals("a/b/", FilenameUtils.getPath("a/b/c"));
561 assertEquals("a/b/c/", FilenameUtils.getPath("a/b/c/"));
562 assertEquals("a\\b\\", FilenameUtils.getPath("a\\b\\c"));
563
564 assertEquals(null, FilenameUtils.getPath(":"));
565 assertEquals(null, FilenameUtils.getPath("1:/a/b/c.txt"));
566 assertEquals(null, FilenameUtils.getPath("1:"));
567 assertEquals(null, FilenameUtils.getPath("1:a"));
568 assertEquals(null, FilenameUtils.getPath("///a/b/c.txt"));
569 assertEquals(null, FilenameUtils.getPath("//a"));
570
571 assertEquals("", FilenameUtils.getPath(""));
572 assertEquals("", FilenameUtils.getPath("C:"));
573 assertEquals("", FilenameUtils.getPath("C:/"));
574 assertEquals("", FilenameUtils.getPath("//server/"));
575 assertEquals("", FilenameUtils.getPath("~"));
576 assertEquals("", FilenameUtils.getPath("~/"));
577 assertEquals("", FilenameUtils.getPath("~user"));
578 assertEquals("", FilenameUtils.getPath("~user/"));
579
580 assertEquals("a/b/", FilenameUtils.getPath("a/b/c.txt"));
581 assertEquals("a/b/", FilenameUtils.getPath("/a/b/c.txt"));
582 assertEquals("", FilenameUtils.getPath("C:a"));
583 assertEquals("a/b/", FilenameUtils.getPath("C:a/b/c.txt"));
584 assertEquals("a/b/", FilenameUtils.getPath("C:/a/b/c.txt"));
585 assertEquals("a/b/", FilenameUtils.getPath("//server/a/b/c.txt"));
586 assertEquals("a/b/", FilenameUtils.getPath("~/a/b/c.txt"));
587 assertEquals("a/b/", FilenameUtils.getPath("~user/a/b/c.txt"));
588 }
589
590 public void testGetPathNoEndSeparator() {
591 assertEquals(null, FilenameUtils.getPath(null));
592 assertEquals("", FilenameUtils.getPath("noseperator.inthispath"));
593 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("a/b/c.txt"));
594 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("a/b/c"));
595 assertEquals("a/b/c", FilenameUtils.getPathNoEndSeparator("a/b/c/"));
596 assertEquals("a\\b", FilenameUtils.getPathNoEndSeparator("a\\b\\c"));
597
598 assertEquals(null, FilenameUtils.getPathNoEndSeparator(":"));
599 assertEquals(null, FilenameUtils.getPathNoEndSeparator("1:/a/b/c.txt"));
600 assertEquals(null, FilenameUtils.getPathNoEndSeparator("1:"));
601 assertEquals(null, FilenameUtils.getPathNoEndSeparator("1:a"));
602 assertEquals(null, FilenameUtils.getPathNoEndSeparator("///a/b/c.txt"));
603 assertEquals(null, FilenameUtils.getPathNoEndSeparator("//a"));
604
605 assertEquals("", FilenameUtils.getPathNoEndSeparator(""));
606 assertEquals("", FilenameUtils.getPathNoEndSeparator("C:"));
607 assertEquals("", FilenameUtils.getPathNoEndSeparator("C:/"));
608 assertEquals("", FilenameUtils.getPathNoEndSeparator("//server/"));
609 assertEquals("", FilenameUtils.getPathNoEndSeparator("~"));
610 assertEquals("", FilenameUtils.getPathNoEndSeparator("~/"));
611 assertEquals("", FilenameUtils.getPathNoEndSeparator("~user"));
612 assertEquals("", FilenameUtils.getPathNoEndSeparator("~user/"));
613
614 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("a/b/c.txt"));
615 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("/a/b/c.txt"));
616 assertEquals("", FilenameUtils.getPathNoEndSeparator("C:a"));
617 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("C:a/b/c.txt"));
618 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("C:/a/b/c.txt"));
619 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("//server/a/b/c.txt"));
620 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("~/a/b/c.txt"));
621 assertEquals("a/b", FilenameUtils.getPathNoEndSeparator("~user/a/b/c.txt"));
622 }
623
624 public void testGetFullPath() {
625 assertEquals(null, FilenameUtils.getFullPath(null));
626 assertEquals("", FilenameUtils.getFullPath("noseperator.inthispath"));
627 assertEquals("a/b/", FilenameUtils.getFullPath("a/b/c.txt"));
628 assertEquals("a/b/", FilenameUtils.getFullPath("a/b/c"));
629 assertEquals("a/b/c/", FilenameUtils.getFullPath("a/b/c/"));
630 assertEquals("a\\b\\", FilenameUtils.getFullPath("a\\b\\c"));
631
632 assertEquals(null, FilenameUtils.getFullPath(":"));
633 assertEquals(null, FilenameUtils.getFullPath("1:/a/b/c.txt"));
634 assertEquals(null, FilenameUtils.getFullPath("1:"));
635 assertEquals(null, FilenameUtils.getFullPath("1:a"));
636 assertEquals(null, FilenameUtils.getFullPath("///a/b/c.txt"));
637 assertEquals(null, FilenameUtils.getFullPath("//a"));
638
639 assertEquals("", FilenameUtils.getFullPath(""));
640 assertEquals("C:", FilenameUtils.getFullPath("C:"));
641 assertEquals("C:/", FilenameUtils.getFullPath("C:/"));
642 assertEquals("//server/", FilenameUtils.getFullPath("//server/"));
643 assertEquals("~/", FilenameUtils.getFullPath("~"));
644 assertEquals("~/", FilenameUtils.getFullPath("~/"));
645 assertEquals("~user/", FilenameUtils.getFullPath("~user"));
646 assertEquals("~user/", FilenameUtils.getFullPath("~user/"));
647
648 assertEquals("a/b/", FilenameUtils.getFullPath("a/b/c.txt"));
649 assertEquals("/a/b/", FilenameUtils.getFullPath("/a/b/c.txt"));
650 assertEquals("C:", FilenameUtils.getFullPath("C:a"));
651 assertEquals("C:a/b/", FilenameUtils.getFullPath("C:a/b/c.txt"));
652 assertEquals("C:/a/b/", FilenameUtils.getFullPath("C:/a/b/c.txt"));
653 assertEquals("//server/a/b/", FilenameUtils.getFullPath("//server/a/b/c.txt"));
654 assertEquals("~/a/b/", FilenameUtils.getFullPath("~/a/b/c.txt"));
655 assertEquals("~user/a/b/", FilenameUtils.getFullPath("~user/a/b/c.txt"));
656 }
657
658 public void testGetFullPathNoEndSeparator() {
659 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator(null));
660 assertEquals("", FilenameUtils.getFullPathNoEndSeparator("noseperator.inthispath"));
661 assertEquals("a/b", FilenameUtils.getFullPathNoEndSeparator("a/b/c.txt"));
662 assertEquals("a/b", FilenameUtils.getFullPathNoEndSeparator("a/b/c"));
663 assertEquals("a/b/c", FilenameUtils.getFullPathNoEndSeparator("a/b/c/"));
664 assertEquals("a\\b", FilenameUtils.getFullPathNoEndSeparator("a\\b\\c"));
665
666 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator(":"));
667 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator("1:/a/b/c.txt"));
668 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator("1:"));
669 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator("1:a"));
670 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator("///a/b/c.txt"));
671 assertEquals(null, FilenameUtils.getFullPathNoEndSeparator("//a"));
672
673 assertEquals("", FilenameUtils.getFullPathNoEndSeparator(""));
674 assertEquals("C:", FilenameUtils.getFullPathNoEndSeparator("C:"));
675 assertEquals("C:/", FilenameUtils.getFullPathNoEndSeparator("C:/"));
676 assertEquals("//server/", FilenameUtils.getFullPathNoEndSeparator("//server/"));
677 assertEquals("~", FilenameUtils.getFullPathNoEndSeparator("~"));
678 assertEquals("~/", FilenameUtils.getFullPathNoEndSeparator("~/"));
679 assertEquals("~user", FilenameUtils.getFullPathNoEndSeparator("~user"));
680 assertEquals("~user/", FilenameUtils.getFullPathNoEndSeparator("~user/"));
681
682 assertEquals("a/b", FilenameUtils.getFullPathNoEndSeparator("a/b/c.txt"));
683 assertEquals("/a/b", FilenameUtils.getFullPathNoEndSeparator("/a/b/c.txt"));
684 assertEquals("C:", FilenameUtils.getFullPathNoEndSeparator("C:a"));
685 assertEquals("C:a/b", FilenameUtils.getFullPathNoEndSeparator("C:a/b/c.txt"));
686 assertEquals("C:/a/b", FilenameUtils.getFullPathNoEndSeparator("C:/a/b/c.txt"));
687 assertEquals("//server/a/b", FilenameUtils.getFullPathNoEndSeparator("//server/a/b/c.txt"));
688 assertEquals("~/a/b", FilenameUtils.getFullPathNoEndSeparator("~/a/b/c.txt"));
689 assertEquals("~user/a/b", FilenameUtils.getFullPathNoEndSeparator("~user/a/b/c.txt"));
690 }
691
692 public void testGetName() {
693 assertEquals(null, FilenameUtils.getName(null));
694 assertEquals("noseperator.inthispath", FilenameUtils.getName("noseperator.inthispath"));
695 assertEquals("c.txt", FilenameUtils.getName("a/b/c.txt"));
696 assertEquals("c", FilenameUtils.getName("a/b/c"));
697 assertEquals("", FilenameUtils.getName("a/b/c/"));
698 assertEquals("c", FilenameUtils.getName("a\\b\\c"));
699 }
700
701 public void testGetBaseName() {
702 assertEquals(null, FilenameUtils.getBaseName(null));
703 assertEquals("noseperator", FilenameUtils.getBaseName("noseperator.inthispath"));
704 assertEquals("c", FilenameUtils.getBaseName("a/b/c.txt"));
705 assertEquals("c", FilenameUtils.getBaseName("a/b/c"));
706 assertEquals("", FilenameUtils.getBaseName("a/b/c/"));
707 assertEquals("c", FilenameUtils.getBaseName("a\\b\\c"));
708 assertEquals("file.txt", FilenameUtils.getBaseName("file.txt.bak"));
709 }
710
711 public void testGetExtension() {
712 assertEquals(null, FilenameUtils.getExtension(null));
713 assertEquals("ext", FilenameUtils.getExtension("file.ext"));
714 assertEquals("", FilenameUtils.getExtension("README"));
715 assertEquals("com", FilenameUtils.getExtension("domain.dot.com"));
716 assertEquals("jpeg", FilenameUtils.getExtension("image.jpeg"));
717 assertEquals("", FilenameUtils.getExtension("a.b/c"));
718 assertEquals("txt", FilenameUtils.getExtension("a.b/c.txt"));
719 assertEquals("", FilenameUtils.getExtension("a/b/c"));
720 assertEquals("", FilenameUtils.getExtension("a.b\\c"));
721 assertEquals("txt", FilenameUtils.getExtension("a.b\\c.txt"));
722 assertEquals("", FilenameUtils.getExtension("a\\b\\c"));
723 assertEquals("", FilenameUtils.getExtension("C:\\temp\\foo.bar\\README"));
724 assertEquals("ext", FilenameUtils.getExtension("../filename.ext"));
725 }
726
727 public void testRemoveExtension() {
728 assertEquals(null, FilenameUtils.removeExtension(null));
729 assertEquals("file", FilenameUtils.removeExtension("file.ext"));
730 assertEquals("README", FilenameUtils.removeExtension("README"));
731 assertEquals("domain.dot", FilenameUtils.removeExtension("domain.dot.com"));
732 assertEquals("image", FilenameUtils.removeExtension("image.jpeg"));
733 assertEquals("a.b/c", FilenameUtils.removeExtension("a.b/c"));
734 assertEquals("a.b/c", FilenameUtils.removeExtension("a.b/c.txt"));
735 assertEquals("a/b/c", FilenameUtils.removeExtension("a/b/c"));
736 assertEquals("a.b\\c", FilenameUtils.removeExtension("a.b\\c"));
737 assertEquals("a.b\\c", FilenameUtils.removeExtension("a.b\\c.txt"));
738 assertEquals("a\\b\\c", FilenameUtils.removeExtension("a\\b\\c"));
739 assertEquals("C:\\temp\\foo.bar\\README", FilenameUtils.removeExtension("C:\\temp\\foo.bar\\README"));
740 assertEquals("../filename", FilenameUtils.removeExtension("../filename.ext"));
741 }
742
743
744 public void testEquals() {
745 assertEquals(true, FilenameUtils.equals(null, null));
746 assertEquals(false, FilenameUtils.equals(null, ""));
747 assertEquals(false, FilenameUtils.equals("", null));
748 assertEquals(true, FilenameUtils.equals("", ""));
749 assertEquals(true, FilenameUtils.equals("file.txt", "file.txt"));
750 assertEquals(false, FilenameUtils.equals("file.txt", "FILE.TXT"));
751 assertEquals(false, FilenameUtils.equals("a\\b\\file.txt", "a/b/file.txt"));
752 }
753
754 public void testEqualsOnSystem() {
755 assertEquals(true, FilenameUtils.equalsOnSystem(null, null));
756 assertEquals(false, FilenameUtils.equalsOnSystem(null, ""));
757 assertEquals(false, FilenameUtils.equalsOnSystem("", null));
758 assertEquals(true, FilenameUtils.equalsOnSystem("", ""));
759 assertEquals(true, FilenameUtils.equalsOnSystem("file.txt", "file.txt"));
760 assertEquals(WINDOWS, FilenameUtils.equalsOnSystem("file.txt", "FILE.TXT"));
761 assertEquals(false, FilenameUtils.equalsOnSystem("a\\b\\file.txt", "a/b/file.txt"));
762 }
763
764
765 public void testEqualsNormalized() {
766 assertEquals(true, FilenameUtils.equalsNormalized(null, null));
767 assertEquals(false, FilenameUtils.equalsNormalized(null, ""));
768 assertEquals(false, FilenameUtils.equalsNormalized("", null));
769 assertEquals(true, FilenameUtils.equalsNormalized("", ""));
770 assertEquals(true, FilenameUtils.equalsNormalized("file.txt", "file.txt"));
771 assertEquals(false, FilenameUtils.equalsNormalized("file.txt", "FILE.TXT"));
772 assertEquals(true, FilenameUtils.equalsNormalized("a\\b\\file.txt", "a/b/file.txt"));
773 assertEquals(false, FilenameUtils.equalsNormalized("a/b/", "a/b"));
774 }
775
776 public void testEqualsNormalizedOnSystem() {
777 assertEquals(true, FilenameUtils.equalsNormalizedOnSystem(null, null));
778 assertEquals(false, FilenameUtils.equalsNormalizedOnSystem(null, ""));
779 assertEquals(false, FilenameUtils.equalsNormalizedOnSystem("", null));
780 assertEquals(true, FilenameUtils.equalsNormalizedOnSystem("", ""));
781 assertEquals(true, FilenameUtils.equalsNormalizedOnSystem("file.txt", "file.txt"));
782 assertEquals(WINDOWS, FilenameUtils.equalsNormalizedOnSystem("file.txt", "FILE.TXT"));
783 assertEquals(true, FilenameUtils.equalsNormalizedOnSystem("a\\b\\file.txt", "a/b/file.txt"));
784 assertEquals(false, FilenameUtils.equalsNormalizedOnSystem("a/b/", "a/b"));
785 }
786
787 public void testEquals_fullControl() {
788 assertEquals(false, FilenameUtils.equals("file.txt", "FILE.TXT", true, IOCase.SENSITIVE));
789 assertEquals(true, FilenameUtils.equals("file.txt", "FILE.TXT", true, IOCase.INSENSITIVE));
790 assertEquals(WINDOWS, FilenameUtils.equals("file.txt", "FILE.TXT", true, IOCase.SYSTEM));
791 assertEquals(false, FilenameUtils.equals("file.txt", "FILE.TXT", true, null));
792 }
793
794
795 public void testIsExtension() {
796 assertEquals(false, FilenameUtils.isExtension(null, (String) null));
797 assertEquals(false, FilenameUtils.isExtension("file.txt", (String) null));
798 assertEquals(true, FilenameUtils.isExtension("file", (String) null));
799 assertEquals(false, FilenameUtils.isExtension("file.txt", ""));
800 assertEquals(true, FilenameUtils.isExtension("file", ""));
801 assertEquals(true, FilenameUtils.isExtension("file.txt", "txt"));
802 assertEquals(false, FilenameUtils.isExtension("file.txt", "rtf"));
803
804 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", (String) null));
805 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", ""));
806 assertEquals(true, FilenameUtils.isExtension("a/b/file.txt", "txt"));
807 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", "rtf"));
808
809 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", (String) null));
810 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", ""));
811 assertEquals(true, FilenameUtils.isExtension("a.b/file.txt", "txt"));
812 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", "rtf"));
813
814 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", (String) null));
815 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", ""));
816 assertEquals(true, FilenameUtils.isExtension("a\\b\\file.txt", "txt"));
817 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", "rtf"));
818
819 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", (String) null));
820 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", ""));
821 assertEquals(true, FilenameUtils.isExtension("a.b\\file.txt", "txt"));
822 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", "rtf"));
823
824 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", "TXT"));
825 }
826
827 public void testIsExtensionArray() {
828 assertEquals(false, FilenameUtils.isExtension(null, (String[]) null));
829 assertEquals(false, FilenameUtils.isExtension("file.txt", (String[]) null));
830 assertEquals(true, FilenameUtils.isExtension("file", (String[]) null));
831 assertEquals(false, FilenameUtils.isExtension("file.txt", new String[0]));
832 assertEquals(true, FilenameUtils.isExtension("file.txt", new String[] {"txt"}));
833 assertEquals(false, FilenameUtils.isExtension("file.txt", new String[] {"rtf"}));
834 assertEquals(true, FilenameUtils.isExtension("file", new String[] {"rtf", ""}));
835 assertEquals(true, FilenameUtils.isExtension("file.txt", new String[] {"rtf", "txt"}));
836
837 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", (String[]) null));
838 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", new String[0]));
839 assertEquals(true, FilenameUtils.isExtension("a/b/file.txt", new String[] {"txt"}));
840 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", new String[] {"rtf"}));
841 assertEquals(true, FilenameUtils.isExtension("a/b/file.txt", new String[] {"rtf", "txt"}));
842
843 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", (String[]) null));
844 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", new String[0]));
845 assertEquals(true, FilenameUtils.isExtension("a.b/file.txt", new String[] {"txt"}));
846 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", new String[] {"rtf"}));
847 assertEquals(true, FilenameUtils.isExtension("a.b/file.txt", new String[] {"rtf", "txt"}));
848
849 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", (String[]) null));
850 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", new String[0]));
851 assertEquals(true, FilenameUtils.isExtension("a\\b\\file.txt", new String[] {"txt"}));
852 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", new String[] {"rtf"}));
853 assertEquals(true, FilenameUtils.isExtension("a\\b\\file.txt", new String[] {"rtf", "txt"}));
854
855 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", (String[]) null));
856 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new String[0]));
857 assertEquals(true, FilenameUtils.isExtension("a.b\\file.txt", new String[] {"txt"}));
858 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new String[] {"rtf"}));
859 assertEquals(true, FilenameUtils.isExtension("a.b\\file.txt", new String[] {"rtf", "txt"}));
860
861 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new String[] {"TXT"}));
862 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new String[] {"TXT", "RTF"}));
863 }
864
865 public void testIsExtensionCollection() {
866 assertEquals(false, FilenameUtils.isExtension(null, (Collection) null));
867 assertEquals(false, FilenameUtils.isExtension("file.txt", (Collection) null));
868 assertEquals(true, FilenameUtils.isExtension("file", (Collection) null));
869 assertEquals(false, FilenameUtils.isExtension("file.txt", new ArrayList()));
870 assertEquals(true, FilenameUtils.isExtension("file.txt", new ArrayList(Arrays.asList(new String[] {"txt"}))));
871 assertEquals(false, FilenameUtils.isExtension("file.txt", new ArrayList(Arrays.asList(new String[] {"rtf"}))));
872 assertEquals(true, FilenameUtils.isExtension("file", new ArrayList(Arrays.asList(new String[] {"rtf", ""}))));
873 assertEquals(true, FilenameUtils.isExtension("file.txt", new ArrayList(Arrays.asList(new String[] {"rtf", "txt"}))));
874
875 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", (Collection) null));
876 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", new ArrayList()));
877 assertEquals(true, FilenameUtils.isExtension("a/b/file.txt", new ArrayList(Arrays.asList(new String[] {"txt"}))));
878 assertEquals(false, FilenameUtils.isExtension("a/b/file.txt", new ArrayList(Arrays.asList(new String[] {"rtf"}))));
879 assertEquals(true, FilenameUtils.isExtension("a/b/file.txt", new ArrayList(Arrays.asList(new String[] {"rtf", "txt"}))));
880
881 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", (Collection) null));
882 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", new ArrayList()));
883 assertEquals(true, FilenameUtils.isExtension("a.b/file.txt", new ArrayList(Arrays.asList(new String[] {"txt"}))));
884 assertEquals(false, FilenameUtils.isExtension("a.b/file.txt", new ArrayList(Arrays.asList(new String[] {"rtf"}))));
885 assertEquals(true, FilenameUtils.isExtension("a.b/file.txt", new ArrayList(Arrays.asList(new String[] {"rtf", "txt"}))));
886
887 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", (Collection) null));
888 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList()));
889 assertEquals(true, FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList(Arrays.asList(new String[] {"txt"}))));
890 assertEquals(false, FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList(Arrays.asList(new String[] {"rtf"}))));
891 assertEquals(true, FilenameUtils.isExtension("a\\b\\file.txt", new ArrayList(Arrays.asList(new String[] {"rtf", "txt"}))));
892
893 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", (Collection) null));
894 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList()));
895 assertEquals(true, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList(Arrays.asList(new String[] {"txt"}))));
896 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList(Arrays.asList(new String[] {"rtf"}))));
897 assertEquals(true, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList(Arrays.asList(new String[] {"rtf", "txt"}))));
898
899 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList(Arrays.asList(new String[] {"TXT"}))));
900 assertEquals(false, FilenameUtils.isExtension("a.b\\file.txt", new ArrayList(Arrays.asList(new String[] {"TXT", "RTF"}))));
901 }
902
903 }