001: /* ****************************************************************************
002: * FileUtils_Test.java
003: * ****************************************************************************/
004:
005: /* J_LZ_COPYRIGHT_BEGIN *******************************************************
006: * Copyright 2001-2004 Laszlo Systems, Inc. All Rights Reserved. *
007: * Use is subject to license terms. *
008: * J_LZ_COPYRIGHT_END *********************************************************/
009:
010: package org.openlaszlo.utils;
011:
012: import java.io.*;
013: import java.util.*;
014: import junit.framework.*;
015:
016: /*
017: * junit.awtui.TestRunner
018: * junit.swingui.TestRunner
019: * junit.textui.TestRunner
020: *
021: * java junit.textui.TestRunner org.openlaszlo.utils.FileUtils_Test
022: *
023: * @author Oliver Steele
024: */
025:
026: public class FileUtils_Test extends TestCase {
027: public FileUtils_Test(String name) {
028: super (name);
029: }
030:
031: public void setUp() {
032: }
033:
034: public void testPathnameFunctions() {
035: assertEquals("getBase 1", FileUtils.getBase("base"), "base");
036: assertEquals("getBase 2", FileUtils.getBase("base.ext"), "base");
037: assertEquals("getBase 3", FileUtils.getBase("dir/base"),
038: "dir/base");
039: assertEquals("getBase 4", FileUtils.getBase("dir/base.ext"),
040: "dir/base");
041: assertEquals("getExtension 1", FileUtils.getExtension("base"),
042: "");
043: assertEquals("getExtension 1", FileUtils
044: .getExtension("base.ext"), "ext");
045: assertEquals("getExtension 2", FileUtils
046: .getExtension("dir/base"), "");
047: assertEquals("getExtension 3", FileUtils
048: .getExtension("dir/base.ext"), "ext");
049: }
050:
051: public void textFixAbsWindowsPaths() {
052: assertEquals("fixAbs 1", FileUtils.fixAbsWindowsPaths("a/b/c"),
053: "a/b/c");
054: assertEquals("fixAbs 2",
055: FileUtils.fixAbsWindowsPaths("/a/b/c"), "/a/b/c");
056: assertEquals("fixAbs 3",
057: FileUtils.fixAbsWindowsPaths("a:/b/c"), "a/b/c");
058: assertEquals("fixAbs 4",
059: FileUtils.fixAbsWindowsPaths("A:/b/c"), "a/b/c");
060: assertEquals("fixAbs 5", FileUtils.fixAbsWindowsPaths("A:"), "");
061: assertEquals("fixAbs 6", FileUtils.fixAbsWindowsPaths("A"), "");
062: }
063:
064: public void testAdjustRelativePath() {
065: // Test split first, since everything else depends on it.
066: assertEquals("split 1", Arrays.asList(StringUtils
067: .split("", "/")), Arrays.asList(new String[] {}));
068: assertEquals("split 2", Arrays.asList(StringUtils.split("a",
069: "/")), Arrays.asList(new String[] { "a" }));
070: assertEquals("split 3", Arrays.asList(StringUtils.split("a/b",
071: "/")), Arrays.asList(new String[] { "a", "b" }));
072: assertEquals("split 4", Arrays.asList(StringUtils.split("/a",
073: "/")), Arrays.asList(new String[] { "", "a" }));
074: assertEquals("split 5", Arrays.asList(StringUtils.split("a/",
075: "/")), Arrays.asList(new String[] { "a", "" }));
076: assertEquals("split 6", Arrays.asList(StringUtils.split("/a/",
077: "/")), Arrays.asList(new String[] { "", "a", "" }));
078: assertEquals("split 7", Arrays.asList(StringUtils.split("a//b",
079: "/")), Arrays.asList(new String[] { "a", "", "b" }));
080: assertEquals("split 7b", Arrays.asList(StringUtils.split(
081: "a///b", "/")), Arrays.asList(new String[] { "a", "",
082: "", "b" }));
083: assertEquals("split 8", Arrays.asList(StringUtils.split("//a",
084: "/")), Arrays.asList(new String[] { "", "", "a" }));
085: assertEquals("split 9", Arrays.asList(StringUtils.split("a//",
086: "/")), Arrays.asList(new String[] { "a", "", "" }));
087: for (Iterator iter = Arrays.asList(
088: new String[] { "", "a", "/a", "a/b", "/a/b", "/", "a/",
089: "/a/", "a/b/", "/a/b/" }).iterator(); iter
090: .hasNext();) {
091: String s = (String) iter.next();
092: assertEquals("split/join(" + s + ")", StringUtils.join(
093: StringUtils.split(s, "/"), "/"), s);
094: // File("a/") turns into File("a"), so don't even bother
095: if (s.equals("/") || !s.endsWith("/")) {
096: assertEquals("toURLPath(" + s + ")", FileUtils
097: .toURLPath(new File(s)), s);
098: }
099: }
100: String tests[] = {
101: // sourcedir, destdir, source, dest
102: "", "",
103: "base.ext",
104: "base.ext", // 1
105: "from", "to",
106: "base.ext",
107: "../to/base.ext", // 2
108: "from1/from2", "to1/to2",
109: "base.ext",
110: "../../to1/to2/base.ext", // 3
111: "from1", "to1/to2", "base.ext",
112: "../to1/to2/base.ext", // 4
113: "from1/from2", "to", "base.ext",
114: "../../to/base.ext", // 5
115: "/a/b/c", "/a/b/c", "base.ext",
116: "base.ext", // 6
117: "/a/b/c", "/a/d/e", "base.ext",
118: "../../d/e/base.ext", // 7
119: "/a/b", "/a/d/e", "base.ext",
120: "../d/e/base.ext", // 8
121: "/a/b/c", "/a/d", "base.ext",
122: "../../d/base.ext", // 9
123: "c:/a/b/c", "c:/a/b/c", "base.ext",
124: "base.ext", // 10
125: "c:/a/b/c", "c:/a/d/e", "base.ext",
126: "../../d/e/base.ext", // 11
127: "c:/a/b", "c:/a/d/e", "base.ext", "../d/e/base.ext", // 12
128: "c:/a/b/c", "c:/a/d", "base.ext", "../../d/base.ext", // 13
129:
130: ".", "", "base.ext", "base.ext", // 14
131: "", ".", "base.ext", "base.ext", // 15
132: ".", ".", "base.ext", "base.ext", // 16
133: };
134: int i = 0;
135: while (i < tests.length) {
136: String fromdir = tests[i++];
137: String todir = tests[i++];
138: String fromfile = tests[i++];
139: String tofile = tests[i++];
140: for (int j = 0; j < 3; j++) {
141: String fromdir_ = fromdir;
142: if ((j & 1) != 0)
143: fromdir_ += "/";
144: String todir_ = todir;
145: if ((j & 2) != 0)
146: todir_ += "/";
147: if (i != 0
148: && (fromdir_.equals("/") || todir_.equals("/")))
149: continue;
150: assertEquals("" + i / 4 + " adjustRelativePath("
151: + fromfile + "," + fromdir_ + ", " + todir_
152: + ")", FileUtils.adjustRelativePath(fromfile,
153: fromdir_, todir_), tofile);
154: }
155: }
156:
157: // TODO [ows 11/18/02] run this on Windows
158: if (false) {
159: String errTests[] = { "c:/", "d:/", "c:/", "", "", "d:/" };
160: i = 0;
161: while (i < errTests.length) {
162: String sourcedir = errTests[i++];
163: String destdir = errTests[i++];
164: try {
165: FileUtils.adjustRelativePath("base.ext", sourcedir,
166: destdir); // for effect
167: fail("adjustRelativePath(..., " + sourcedir + ", "
168: + destdir + ") "
169: + "should have thrown an exception");
170: } catch (FileUtils.RelativizationError e) {
171: }
172: }
173: }
174: }
175:
176: public void testRelativePath() {
177: assertEquals("relpath 1", FileUtils.relativePath(
178: "C:\\foo\\bar\\foobar", "C:\\foo\\bar"), "/foobar");
179: assertEquals("relpath 2", FileUtils.relativePath(
180: "C:\\foo\\bar\\foobar", "C:\\foo\\bar\\"), "/foobar");
181: assertEquals("relpath 2", FileUtils.relativePath(
182: "C:\\fxoo\\bar\\foobar", "C:\\foo\\bar\\"),
183: "C:/fxoo/bar/foobar");
184: }
185:
186: }
|