/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.camel.util;
import java.io.File;
import junit.framework.TestCase;
/**
* @version
*/
public class FileUtilTest extends TestCase {
public void testNormalizePath() {
if (FileUtil.isWindows()) {
assertEquals("foo\\bar", FileUtil.normalizePath("foo/bar"));
assertEquals("foo\\bar\\baz", FileUtil.normalizePath("foo/bar\\baz"));
assertEquals("movefile\\sub\\sub2\\.done\\goodday.txt", FileUtil.normalizePath("movefile/sub/sub2\\.done\\goodday.txt"));
} else {
assertEquals("foo/bar", FileUtil.normalizePath("foo/bar"));
assertEquals("foo/bar/baz", FileUtil.normalizePath("foo/bar\\baz"));
assertEquals("movefile/sub/sub2/.done/goodday.txt", FileUtil.normalizePath("movefile/sub/sub2\\.done\\goodday.txt"));
}
}
public void testStripLeadingSeparator() {
assertEquals(null, FileUtil.stripLeadingSeparator(null));
assertEquals("foo", FileUtil.stripLeadingSeparator("foo"));
assertEquals("foo/bar", FileUtil.stripLeadingSeparator("foo/bar"));
assertEquals("foo/", FileUtil.stripLeadingSeparator("foo/"));
assertEquals("foo/bar", FileUtil.stripLeadingSeparator("/foo/bar"));
assertEquals("foo/bar", FileUtil.stripLeadingSeparator("//foo/bar"));
assertEquals("foo/bar", FileUtil.stripLeadingSeparator("///foo/bar"));
}
public void testHasLeadingSeparator() {
assertEquals(false, FileUtil.hasLeadingSeparator(null));
assertEquals(false, FileUtil.hasLeadingSeparator("foo"));
assertEquals(false, FileUtil.hasLeadingSeparator("foo/bar"));
assertEquals(false, FileUtil.hasLeadingSeparator("foo/"));
assertEquals(true, FileUtil.hasLeadingSeparator("/foo/bar"));
assertEquals(true, FileUtil.hasLeadingSeparator("//foo/bar"));
assertEquals(true, FileUtil.hasLeadingSeparator("///foo/bar"));
}
public void testStripFirstLeadingSeparator() {
assertEquals(null, FileUtil.stripFirstLeadingSeparator(null));
assertEquals("foo", FileUtil.stripFirstLeadingSeparator("foo"));
assertEquals("foo/bar", FileUtil.stripFirstLeadingSeparator("foo/bar"));
assertEquals("foo/", FileUtil.stripFirstLeadingSeparator("foo/"));
assertEquals("foo/bar", FileUtil.stripFirstLeadingSeparator("/foo/bar"));
assertEquals("/foo/bar", FileUtil.stripFirstLeadingSeparator("//foo/bar"));
assertEquals("//foo/bar", FileUtil.stripFirstLeadingSeparator("///foo/bar"));
}
public void testStripTrailingSeparator() {
assertEquals(null, FileUtil.stripTrailingSeparator(null));
assertEquals("foo", FileUtil.stripTrailingSeparator("foo"));
assertEquals("foo/bar", FileUtil.stripTrailingSeparator("foo/bar"));
assertEquals("foo", FileUtil.stripTrailingSeparator("foo/"));
assertEquals("foo/bar", FileUtil.stripTrailingSeparator("foo/bar/"));
assertEquals("/foo/bar", FileUtil.stripTrailingSeparator("/foo/bar"));
assertEquals("/foo/bar", FileUtil.stripTrailingSeparator("/foo/bar/"));
assertEquals("/foo/bar", FileUtil.stripTrailingSeparator("/foo/bar//"));
assertEquals("/foo/bar", FileUtil.stripTrailingSeparator("/foo/bar///"));
assertEquals("/foo", FileUtil.stripTrailingSeparator("/foo"));
assertEquals("/foo", FileUtil.stripTrailingSeparator("/foo/"));
assertEquals("/", FileUtil.stripTrailingSeparator("/"));
assertEquals("//", FileUtil.stripTrailingSeparator("//"));
}
public void testStripPath() {
assertEquals(null, FileUtil.stripPath(null));
assertEquals("", FileUtil.stripPath("/"));
assertEquals("foo.xml", FileUtil.stripPath("/foo.xml"));
assertEquals("foo", FileUtil.stripPath("foo"));
assertEquals("bar", FileUtil.stripPath("foo/bar"));
assertEquals("bar", FileUtil.stripPath("/foo/bar"));
}
public void testStripPathWithMixedSeparators() {
assertEquals(null, FileUtil.stripPath(null));
assertEquals("", FileUtil.stripPath("/"));
assertEquals("foo.xml", FileUtil.stripPath("/foo.xml"));
assertEquals("foo", FileUtil.stripPath("foo"));
assertEquals("baz", FileUtil.stripPath("foo/bar\\baz"));
assertEquals("bar", FileUtil.stripPath("\\foo\\bar"));
assertEquals("baz", FileUtil.stripPath("/foo\\bar/baz"));
}
public void testStripExt() {
assertEquals(null, FileUtil.stripExt(null));
assertEquals("foo", FileUtil.stripExt("foo"));
assertEquals("foo", FileUtil.stripExt("foo.xml"));
assertEquals("/foo/bar", FileUtil.stripExt("/foo/bar.xml"));
}
public void testOnlyExt() {
assertEquals(null, FileUtil.onlyExt(null));
assertEquals(null, FileUtil.onlyExt("foo"));
assertEquals("xml", FileUtil.onlyExt("foo.xml"));
assertEquals("xml", FileUtil.onlyExt("/foo/bar.xml"));
assertEquals("tar.gz", FileUtil.onlyExt("/foo/bigfile.tar.gz"));
assertEquals("tar.gz", FileUtil.onlyExt("/foo.bar/bigfile.tar.gz"));
}
public void testOnlyPath() {
assertEquals(null, FileUtil.onlyPath(null));
assertEquals(null, FileUtil.onlyPath("foo"));
assertEquals(null, FileUtil.onlyPath("foo.xml"));
assertEquals("foo", FileUtil.onlyPath("foo/bar.xml"));
assertEquals("/foo", FileUtil.onlyPath("/foo/bar.xml"));
assertEquals("/foo/bar", FileUtil.onlyPath("/foo/bar/baz.xml"));
assertEquals("/", FileUtil.onlyPath("/foo.xml"));
assertEquals("/bar", FileUtil.onlyPath("/bar/foo.xml"));
}
public void testOnlyPathWithMixedSeparators() {
assertEquals(null, FileUtil.onlyPath(null));
assertEquals(null, FileUtil.onlyPath("foo"));
assertEquals(null, FileUtil.onlyPath("foo.xml"));
assertEquals("foo", FileUtil.onlyPath("foo/bar.xml"));
assertEquals("/foo", FileUtil.onlyPath("/foo\\bar.xml"));
assertEquals("\\foo\\bar", FileUtil.onlyPath("\\foo\\bar/baz.xml"));
assertEquals("\\", FileUtil.onlyPath("\\foo.xml"));
assertEquals("/bar", FileUtil.onlyPath("/bar\\foo.xml"));
}
public void testCompactPath() {
assertEquals(null, FileUtil.compactPath(null));
if (FileUtil.isWindows()) {
assertEquals("..\\foo", FileUtil.compactPath("..\\foo"));
assertEquals("..\\..\\foo", FileUtil.compactPath("..\\..\\foo"));
assertEquals("..\\..\\foo\\bar", FileUtil.compactPath("..\\..\\foo\\bar"));
assertEquals("..\\..\\foo", FileUtil.compactPath("..\\..\\foo\\bar\\.."));
assertEquals("foo", FileUtil.compactPath("foo"));
assertEquals("bar", FileUtil.compactPath("foo\\..\\bar"));
assertEquals("bar\\baz", FileUtil.compactPath("foo\\..\\bar\\baz"));
assertEquals("foo\\baz", FileUtil.compactPath("foo\\bar\\..\\baz"));
assertEquals("baz", FileUtil.compactPath("foo\\bar\\..\\..\\baz"));
assertEquals("..\\baz", FileUtil.compactPath("foo\\bar\\..\\..\\..\\baz"));
assertEquals("..\\foo\\bar", FileUtil.compactPath("..\\foo\\bar"));
assertEquals("foo\\bar\\baz", FileUtil.compactPath("foo\\bar\\.\\baz"));
assertEquals("foo\\bar\\baz", FileUtil.compactPath("foo\\bar\\\\baz"));
assertEquals("\\foo\\bar\\baz", FileUtil.compactPath("\\foo\\bar\\baz"));
assertEquals("\\", FileUtil.compactPath("\\"));
assertEquals("\\", FileUtil.compactPath("/"));
assertEquals("/", FileUtil.compactPath("\\", '/'));
assertEquals("/", FileUtil.compactPath("/", '/'));
} else {
assertEquals("../foo", FileUtil.compactPath("../foo"));
assertEquals("../../foo", FileUtil.compactPath("../../foo"));
assertEquals("../../foo/bar", FileUtil.compactPath("../../foo/bar"));
assertEquals("../../foo", FileUtil.compactPath("../../foo/bar/.."));
assertEquals("foo", FileUtil.compactPath("foo"));
assertEquals("bar", FileUtil.compactPath("foo/../bar"));
assertEquals("bar/baz", FileUtil.compactPath("foo/../bar/baz"));
assertEquals("foo/baz", FileUtil.compactPath("foo/bar/../baz"));
assertEquals("baz", FileUtil.compactPath("foo/bar/../../baz"));
assertEquals("../baz", FileUtil.compactPath("foo/bar/../../../baz"));
assertEquals("../foo/bar", FileUtil.compactPath("../foo/bar"));
assertEquals("foo/bar/baz", FileUtil.compactPath("foo/bar/./baz"));
assertEquals("foo/bar/baz", FileUtil.compactPath("foo/bar//baz"));
assertEquals("/foo/bar/baz", FileUtil.compactPath("/foo/bar/baz"));
assertEquals("/", FileUtil.compactPath("/"));
assertEquals("/", FileUtil.compactPath("\\"));
assertEquals("/", FileUtil.compactPath("/", '/'));
assertEquals("/", FileUtil.compactPath("\\", '/'));
}
}
public void testCompactWindowsStylePath() {
String path = "E:\\workspace\\foo\\bar\\some-thing\\.\\target\\processes\\2";
String expected = "E:\\workspace\\foo\\bar\\some-thing\\target\\processes\\2";
assertEquals(expected, FileUtil.compactPath(path, '\\'));
}
public void testCompactPathSeparator() {
assertEquals(null, FileUtil.compactPath(null, '\''));
assertEquals("..\\foo", FileUtil.compactPath("..\\foo", '\\'));
assertEquals("../foo", FileUtil.compactPath("../foo", '/'));
assertEquals("../foo/bar", FileUtil.compactPath("../foo\\bar", '/'));
assertEquals("..\\foo\\bar", FileUtil.compactPath("../foo\\bar", '\\'));
}
public void testDefaultTempFileSuffixAndPrefix() throws Exception {
File tmp = FileUtil.createTempFile("tmp-", ".tmp");
assertNotNull(tmp);
assertTrue("Should be a file", tmp.isFile());
}
public void testDefaultTempFile() throws Exception {
File tmp = FileUtil.createTempFile(null, null);
assertNotNull(tmp);
assertTrue("Should be a file", tmp.isFile());
}
public void testDefaultTempFileParent() throws Exception {
File tmp = FileUtil.createTempFile(null, null, new File("target"));
assertNotNull(tmp);
assertTrue("Should be a file", tmp.isFile());
}
public void testCreateNewFile() throws Exception {
File file = new File("target/foo.txt");
if (file.exists()) {
FileUtil.deleteFile(file);
}
assertFalse("File should not exist " + file, file.exists());
assertTrue("A new file should be created " + file, FileUtil.createNewFile(file));
}
public void testShutdown() throws Exception {
File tmpFile = FileUtil.createTempFile(null, null);
File tmpDir = tmpFile.getParentFile();
assertTrue(tmpDir.exists());
FileUtil.shutdown();
assertFalse(tmpDir.exists());
}
public void testRenameUsingDelete() throws Exception {
File file = new File("target/foo.txt");
if (!file.exists()) {
FileUtil.createNewFile(file);
}
File target = new File("target/bar.txt");
FileUtil.renameFileUsingCopy(file, target);
assertTrue("File not copied", target.exists());
assertFalse("File not deleted", file.exists());
}
}