matth       2003/10/17 13:15:46

  Modified:    io/src/java/org/apache/commons/io FileUtils.java
               io/src/test/org/apache/commons/io FileUtilsTestCase.java
  Added:       io/src/java/org/apache/commons/io/input package.html
               io/src/java/org/apache/commons/io/output package.html
  Log:
  Bugzilla #22738 from yours truly.
  
  Revision  Changes    Path
  1.16      +24 -22    
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/FileUtils.java
  
  Index: FileUtils.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/io/src/java/org/apache/commons/io/FileUtils.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- FileUtils.java    13 Oct 2003 07:04:52 -0000      1.15
  +++ FileUtils.java    17 Oct 2003 20:15:46 -0000      1.16
  @@ -57,11 +57,12 @@
   import java.io.FileInputStream;
   import java.io.FileNotFoundException;
   import java.io.FileOutputStream;
  -import java.io.InputStream;
   import java.io.IOException;
  +import java.io.InputStream;
   import java.net.URL;
  +import java.util.ArrayList;
  +import java.util.Collection;
   import java.util.Date;
  -import java.util.Vector;
   
   /**
    * This class provides basic facilities for manipulating files and file paths.
  @@ -241,16 +242,6 @@
       }
   
       /**
  -     * Creates a file handle.
  -     *
  -     * @param fileName The name of the file.
  -     * @return A <code>File</code> instance.
  -     */
  -    public static File getFile(String fileName) {
  -        return new File(fileName);
  -    }
  -
  -    /**
        * Given a directory and an array of extensions... return an array of
        * compliant files.
        *
  @@ -264,9 +255,9 @@
           String directory,
           String[] extensions) {
   
  -        Vector files = new Vector();
  +        Collection files = new ArrayList();
   
  -        java.io.File currentDir = new java.io.File(directory);
  +        File currentDir = new File(directory);
   
           String[] unknownFiles = currentDir.list();
   
  @@ -279,7 +270,7 @@
                   directory
                       + System.getProperty("file.separator")
                       + unknownFiles[i];
  -            java.io.File currentFile = new java.io.File(currentFileName);
  +            File currentFile = new java.io.File(currentFileName);
   
               if (currentFile.isDirectory()) {
   
  @@ -293,14 +284,14 @@
   
                   String[] fetchFiles =
                       getFilesFromExtension(currentFileName, extensions);
  -                files = blendFilesToVector(files, fetchFiles);
  +                files = blendFiles(files, fetchFiles);
   
               } else {
                   //ok... add the file
   
                   String add = currentFile.getAbsolutePath();
                   if (isValidFile(add, extensions)) {
  -                    files.addElement(add);
  +                    files.add(add);
   
                   }
   
  @@ -310,7 +301,7 @@
           //ok... move the Vector into the files list...
   
           String[] foundFiles = new String[files.size()];
  -        files.copyInto(foundFiles);
  +        files.toArray(foundFiles);
   
           return foundFiles;
   
  @@ -319,13 +310,13 @@
       /**
        * Private hepler method for getFilesFromExtension()
        */
  -    private static Vector blendFilesToVector(Vector v, String[] files) {
  +    private static Collection blendFiles(Collection c, String[] files) {
   
           for (int i = 0; i < files.length; ++i) {
  -            v.addElement(files[i]);
  +            c.add(files[i]);
           }
   
  -        return v;
  +        return c;
       }
   
       /**
  @@ -1270,6 +1261,17 @@
           throws Exception {
           String content = fileRead(inFileName);
           fileWrite(outFileName, content);
  +    }
  +
  +    /**
  +     * Creates a file handle.
  +     *
  +     * @param fileName The name of the file.
  +     * @return A <code>File</code> instance.
  +     * @deprecated Use [EMAIL PROTECTED] java.io.File#Constructor(String)}
  +     */
  +    public static File getFile(String fileName) {
  +        return new File(fileName);
       }
   
   }
  
  
  
  1.1                  
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/input/package.html
  
  Index: package.html
  ===================================================================
  Implementations of input classes, such as |InputStream| and |Reader|.
  
  
  
  
  1.1                  
jakarta-commons-sandbox/io/src/java/org/apache/commons/io/output/package.html
  
  Index: package.html
  ===================================================================
  Implementations of output classes, such as |OutputStream| and |Writer|.
  
  
  
  
  1.4       +317 -62   
jakarta-commons-sandbox/io/src/test/org/apache/commons/io/FileUtilsTestCase.java
  
  Index: FileUtilsTestCase.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/io/src/test/org/apache/commons/io/FileUtilsTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FileUtilsTestCase.java    13 Oct 2003 07:06:04 -0000      1.3
  +++ FileUtilsTestCase.java    17 Oct 2003 20:15:46 -0000      1.4
  @@ -60,10 +60,11 @@
   package org.apache.commons.io;
   
   import java.io.File;
  +import java.io.FileInputStream;
   import java.io.IOException;
   import java.net.URL;
   
  -import org.apache.commons.io.testtools.*;
  +import org.apache.commons.io.testtools.FileBasedTestCase;
   
   import junit.framework.Test;
   import junit.framework.TestSuite;
  @@ -72,16 +73,25 @@
   /**
    * This is used to test FileUtils for correctness.
    *
  - * @author <a href="mailto:[EMAIL PROTECTED]">Peter Donald</a>
  + * @author Peter Donald
  + * @author Matthew Hawthorne
  + * @version $Id$
  + * @see FileUtils
    */
   public final class FileUtilsTestCase extends FileBasedTestCase {
   
       // Test data
  -    private static final int FILE1_SIZE = 1;
  -    private static final int FILE2_SIZE = 1024 * 4 + 1;
   
  -    private final File m_testFile1;
  -    private final File m_testFile2;
  +    /**
  +     * Size of test directory.
  +     */
  +    private static final int TEST_DIRECTORY_SIZE = 0;
  +
  +    private final File testFile1;
  +    private final File testFile2;
  +
  +    private static int testFile1Size;
  +    private static int testFile2Size;
   
       public static void main(String[] args) {
           TestRunner.run(suite());
  @@ -94,19 +104,22 @@
       public FileUtilsTestCase(final String name) throws IOException {
           super(name);
   
  -        m_testFile1 = new File(getTestDirectory(), "file1-test.txt");
  -        m_testFile2 = new File(getTestDirectory(), "file1a-test.txt");
  +        testFile1 = new File(getTestDirectory(), "file1-test.txt");
  +        testFile2 = new File(getTestDirectory(), "file1a-test.txt");
  +
  +        testFile1Size = (int)testFile1.length();
  +        testFile2Size = (int)testFile2.length();
       }
   
       /** @see junit.framework.TestCase#setUp() */
       protected void setUp() throws Exception {
           getTestDirectory().mkdirs();
  -        createFile(m_testFile1, FILE1_SIZE);
  -        createFile(m_testFile2, FILE2_SIZE);
  +        createFile(testFile1, testFile1Size);
  +        createFile(testFile2, testFile2Size);
           FileUtils.deleteDirectory(getTestDirectory());
           getTestDirectory().mkdirs();
  -        createFile(m_testFile1, FILE1_SIZE);
  -        createFile(m_testFile2, FILE2_SIZE);
  +        createFile(testFile1, testFile1Size);
  +        createFile(testFile2, testFile2Size);
       }
   
       /** @see junit.framework.TestCase#tearDown() */
  @@ -114,20 +127,242 @@
           FileUtils.deleteDirectory(getTestDirectory());
       }
   
  +    // byteCountToDisplaySize
  +
  +    public void testByteCountToDisplaySize() {
  +        assertEquals(FileUtils.byteCountToDisplaySize(0), "0 bytes");
  +        assertEquals(FileUtils.byteCountToDisplaySize(1024), "1 KB");
  +        assertEquals(FileUtils.byteCountToDisplaySize(1024 * 1024), "1 MB");
  +        assertEquals(
  +            FileUtils.byteCountToDisplaySize(1024 * 1024 * 1024),
  +            "1 GB");
  +    }
  +
  +    // waitFor
  +
  +    public void testWaitFor() {
  +        FileUtils.waitFor("", -1);
  +
  +        FileUtils.waitFor("", 2);
  +    }
  +
  +    // toURL
  +
  +    public void testToURLs() throws Exception {
  +        final File[] files = new File[] { new File("file1"), new File("file2")};
  +
  +        final URL[] urls = FileUtils.toURLs(files);
  +
  +        // Path separator causes equality tests to fail
  +        //assertEquals(urls[0].getFile(), File.separator + 
files[0].getAbsolutePath());
  +        //assertEquals(urls[1].getFile(), File.separator + 
files[1].getAbsolutePath());
  +
  +    }
  +
  +    public void testGetFilesFromExtension() {
  +        // TODO I'm not sure what is supposed to happen here
  +        FileUtils.getFilesFromExtension("dir", null);
  +
  +        // Non-existent files
  +        final String[] emptyFileNames =
  +            FileUtils.getFilesFromExtension(
  +                getTestDirectory().getAbsolutePath(),
  +                new String[] { "java" });
  +        assertTrue(emptyFileNames.length == 0);
  +
  +        // Existing files
  +        // TODO Figure out how to test this
  +        /*
  +        final String[] fileNames =
  +            FileUtils.getFilesFromExtension(
  +                getClass().getResource("/java/util/").getFile(),
  +                new String[] { "class" });
  +        assertTrue(fileNames.length > 0);
  +        */
  +    }
  +
  +    // mkdir
  +
  +    public void testMkdir() {
  +        final File dir = new File(getTestDirectory(), "testdir");
  +        FileUtils.mkdir(dir.getAbsolutePath());
  +        dir.deleteOnExit();
  +    }
  +
  +    // contentEquals
  +
  +    public void testContentEquals() throws Exception {
  +        // Non-existent files
  +        final File file = new File(getTestDirectory(), getName());
  +        assertTrue(FileUtils.contentEquals(file, file));
  +
  +        // TODO Should comparing 2 directories throw an Exception instead of 
returning false?
  +        // Directories
  +        assertTrue(
  +            !FileUtils.contentEquals(getTestDirectory(), getTestDirectory()));
  +
  +        // Different files
  +        final File objFile1 =
  +            new File(getTestDirectory(), getName() + ".object");
  +        objFile1.deleteOnExit();
  +        FileUtils.copyURLToFile(
  +            getClass().getResource("/java/lang/Object.class"),
  +            objFile1);
  +
  +        final File objFile2 =
  +            new File(getTestDirectory(), getName() + ".collection");
  +        objFile2.deleteOnExit();
  +        FileUtils.copyURLToFile(
  +            getClass().getResource("/java/util/Collection.class"),
  +            objFile2);
  +
  +        assertTrue(
  +            "Files should not be equal.",
  +            !FileUtils.contentEquals(objFile1, objFile2));
  +
  +        // Equal files
  +        file.createNewFile();
  +        assertTrue(FileUtils.contentEquals(file, file));
  +    }
  +
  +    // removePath
  +
  +    public void testRemovePath() {
  +        final String fileName =
  +            FileUtils.removePath(
  +                new File(getTestDirectory(), getName()).getAbsolutePath());
  +        assertEquals(getName(), fileName);
  +    }
  +
  +    // getPath
  +
  +    public void testGetPath() {
  +        final String fileName =
  +            FileUtils.getPath(
  +                new File(getTestDirectory(), getName()).getAbsolutePath());
  +        assertEquals(getTestDirectory().getAbsolutePath(), fileName);
  +    }
  +
  +    // copyURLToFile
  +
  +    public void testCopyURLToFile() throws Exception {
  +        // Creates file
  +        final File file = new File(getTestDirectory(), getName());
  +        file.deleteOnExit();
  +
  +        // Loads resource
  +        final String resourceName = "/java/lang/Object.class";
  +        FileUtils.copyURLToFile(getClass().getResource(resourceName), file);
  +
  +        // Tests that resuorce was copied correctly
  +        final FileInputStream fis = new FileInputStream(file);
  +        try {
  +            assertTrue(
  +                "Content is not equal.",
  +                IOUtils.contentEquals(
  +                    getClass().getResourceAsStream(resourceName),
  +                    fis));
  +        } finally {
  +            fis.close();
  +        }
  +    }
  +
  +    // catPath
  +
  +    public void testCatPath() {
  +        // TODO StringIndexOutOfBoundsException thrown if file doesn't contain 
slash.
  +        // Is this acceptable?
  +        //assertEquals("", FileUtils.catPath("a", "b"));
  +
  +        assertEquals("/a/c", FileUtils.catPath("/a/b", "c"));
  +        assertEquals("/a/d", FileUtils.catPath("/a/b/c", "../d"));
  +    }
  +
  +    // forceMkdir
  +
  +    public void testForceMkdir() throws Exception {
  +        // Tests with existing directory
  +        FileUtils.forceMkdir(getTestDirectory());
  +
  +        // Creates test file
  +        final File testFile = new File(getTestDirectory(), getName());
  +        testFile.deleteOnExit();
  +        testFile.createNewFile();
  +        assertTrue("Test file does not exist.", testFile.exists());
  +
  +        // Tests with existing file
  +        try {
  +            FileUtils.forceMkdir(testFile);
  +            fail("Exception expected.");
  +        } catch (IOException ex) {}
  +
  +        testFile.delete();
  +
  +        // Tests with non-existent directory
  +        FileUtils.forceMkdir(testFile);
  +        assertTrue("Directory was not created.", testFile.exists());
  +    }
  +
  +    // sizeOfDirectory
  +
  +    public void testSizeOfDirectory() throws Exception {
  +        final File file = new File(getTestDirectory(), getName());
  +
  +        // Non-existent file
  +        try {
  +            FileUtils.sizeOfDirectory(file);
  +            fail("Exception expected.");
  +        } catch (IllegalArgumentException ex) {}
  +
  +        // Creates file
  +        file.createNewFile();
  +        file.deleteOnExit();
  +
  +        // Existing file
  +        try {
  +            FileUtils.sizeOfDirectory(file);
  +            fail("Exception expected.");
  +        } catch (IllegalArgumentException ex) {}
  +
  +        // Existing directory
  +        file.delete();
  +        file.mkdir();
  +
  +        assertEquals(
  +            "Unexpected directory size",
  +            TEST_DIRECTORY_SIZE,
  +            FileUtils.sizeOfDirectory(file));
  +    }
  +
  +    // isFileNewer
  +
  +    // TODO Finish test
  +    public void XtestIsFileNewer() {}
  +
  +    // TODO Remove after debugging
  +    private final void log(Object obj) {
  +        System.out.println(
  +            FileUtilsTestCase.class +" " + getName() + " " + obj);
  +    }
  +
  +    // copyFile
  +
       public void testCopyFile1() throws Exception {
           final File destination = new File(getTestDirectory(), "copy1.txt");
  -        FileUtils.copyFile(m_testFile1, destination);
  +        FileUtils.copyFile(testFile1, destination);
           assertTrue("Check Exist", destination.exists());
  -        assertTrue("Check Full copy", destination.length() == FILE1_SIZE);
  +        assertTrue("Check Full copy", destination.length() == testFile1Size);
       }
   
       public void testCopyFile2() throws Exception {
           final File destination = new File(getTestDirectory(), "copy2.txt");
  -        FileUtils.copyFile(m_testFile2, destination);
  +        FileUtils.copyFile(testFile1, destination);
           assertTrue("Check Exist", destination.exists());
  -        assertTrue("Check Full copy", destination.length() == FILE2_SIZE);
  +        assertTrue("Check Full copy", destination.length() == testFile2Size);
       }
   
  +    // forceDelete
  +
       public void testForceDeleteAFile1() throws Exception {
           final File destination = new File(getTestDirectory(), "copy1.txt");
           destination.createNewFile();
  @@ -144,31 +379,39 @@
           assertTrue("Check No Exist", !destination.exists());
       }
   
  +    // copyFileToDirectory
  +
       public void testCopyFile1ToDir() throws Exception {
           final File directory = new File(getTestDirectory(), "subdir");
           if (!directory.exists())
               directory.mkdirs();
  -        final File destination = new File(directory, m_testFile1.getName());
  -        FileUtils.copyFileToDirectory(m_testFile1, directory);
  +        final File destination = new File(directory, testFile1.getName());
  +        FileUtils.copyFileToDirectory(testFile1, directory);
           assertTrue("Check Exist", destination.exists());
  -        assertTrue("Check Full copy", destination.length() == FILE1_SIZE);
  +        assertTrue("Check Full copy", destination.length() == testFile1Size);
       }
   
       public void testCopyFile2ToDir() throws Exception {
           final File directory = new File(getTestDirectory(), "subdir");
           if (!directory.exists())
               directory.mkdirs();
  -        final File destination = new File(directory, m_testFile2.getName());
  -        FileUtils.copyFileToDirectory(m_testFile2, directory);
  +        final File destination = new File(directory, testFile1.getName());
  +        FileUtils.copyFileToDirectory(testFile1, directory);
           assertTrue("Check Exist", destination.exists());
  -        assertTrue("Check Full copy", destination.length() == FILE2_SIZE);
  +        assertTrue("Check Full copy", destination.length() == testFile2Size);
       }
   
  +    // forceDelete
  +
       public void testForceDeleteDir() throws Exception {
           FileUtils.forceDelete(getTestDirectory().getParentFile());
  -        assertTrue("Check No Exist", !getTestDirectory().getParentFile().exists());
  +        assertTrue(
  +            "Check No Exist",
  +            !getTestDirectory().getParentFile().exists());
       }
   
  +    // resolveFile
  +
       public void testResolveFileDotDot() throws Exception {
           final File file = FileUtils.resolveFile(getTestDirectory(), "..");
           assertEquals(
  @@ -182,6 +425,8 @@
           assertEquals("Check . operator", file, getTestDirectory());
       }
   
  +    // normalize
  +
       public void testNormalize() throws Exception {
           final String[] src =
               {
  @@ -233,7 +478,10 @@
           }
       }
   
  -    private String replaceAll(String text, String lookFor, String replaceWith) {
  +    private String replaceAll(
  +        String text,
  +        String lookFor,
  +        String replaceWith) {
           StringBuffer sb = new StringBuffer(text);
           while (true) {
               int idx = sb.indexOf(lookFor);
  @@ -248,7 +496,7 @@
       /**
        *  Test the FileUtils implementation.
        */
  -    /// Used to exist as IOTestCase class
  +    // Used to exist as IOTestCase class
       public void testFileUtils() throws Exception {
           // Loads file from classpath
           final String path = "/test.txt";
  @@ -264,7 +512,9 @@
               "test.txt extension == \"txt\"",
               FileUtils.getExtension(filename).equals("txt"));
   
  -        assertTrue("Test file does not exist: " + filename, 
FileUtils.fileExists(filename));
  +        assertTrue(
  +            "Test file does not exist: " + filename,
  +            FileUtils.fileExists(filename));
   
           assertTrue(
               "Second test file does not exist",
  @@ -289,63 +539,68 @@
       }
   
       public void testGetExtension() {
  -        final String[][] tests = {
  -            {"filename.ext", "ext"},
  -            {"README", ""},
  -            {"domain.dot.com", "com"},
  -            {"image.jpeg", "jpeg"}};
  +        final String[][] tests = { { "filename.ext", "ext" }, {
  +                "README", "" }, {
  +                "domain.dot.com", "com" }, {
  +                "image.jpeg", "jpeg" }
  +        };
           for (int i = 0; i < tests.length; i++) {
               assertEquals(tests[i][1], FileUtils.getExtension(tests[i][0]));
               //assertEquals(tests[i][1], FileUtils.extension(tests[i][0]));
           }
       }
  -    
  +
       /* TODO: Reenable this test */
       public void DISABLED__testGetExtensionWithPaths() {
  -        final String[][] testsWithPaths = {
  -            {"/tmp/foo/filename.ext", "ext"},
  -            {"C:\\temp\\foo\\filename.ext", "ext"},
  -            {"/tmp/foo.bar/filename.ext", "ext"},
  -            {"C:\\temp\\foo.bar\\filename.ext", "ext"},
  -            {"/tmp/foo.bar/README", ""},
  -            {"C:\\temp\\foo.bar\\README", ""},
  -            {"../filename.ext", "ext"}};
  +        final String[][] testsWithPaths =
  +            { { "/tmp/foo/filename.ext", "ext" }, {
  +                "C:\\temp\\foo\\filename.ext", "ext" }, {
  +                "/tmp/foo.bar/filename.ext", "ext" }, {
  +                "C:\\temp\\foo.bar\\filename.ext", "ext" }, {
  +                "/tmp/foo.bar/README", "" }, {
  +                "C:\\temp\\foo.bar\\README", "" }, {
  +                "../filename.ext", "ext" }
  +        };
           for (int i = 0; i < testsWithPaths.length; i++) {
  -            assertEquals(testsWithPaths[i][1], 
FileUtils.getExtension(testsWithPaths[i][0]));
  +            assertEquals(
  +                testsWithPaths[i][1],
  +                FileUtils.getExtension(testsWithPaths[i][0]));
               //assertEquals(testsWithPaths[i][1], 
FileUtils.extension(testsWithPaths[i][0]));
           }
       }
   
       public void testRemoveExtension() {
  -        final String[][] tests = {
  -            {"filename.ext", "filename"},
  -            {"first.second.third.ext", "first.second.third"},
  -            {"README", "README"},
  -            {"domain.dot.com", "domain.dot"},
  -            {"image.jpeg", "image"}};
  -                                
  +        final String[][] tests = { { "filename.ext", "filename" }, {
  +                "first.second.third.ext", "first.second.third" }, {
  +                "README", "README" }, {
  +                "domain.dot.com", "domain.dot" }, {
  +                "image.jpeg", "image" }
  +        };
  +
           for (int i = 0; i < tests.length; i++) {
               assertEquals(tests[i][1], FileUtils.removeExtension(tests[i][0]));
               //assertEquals(tests[i][1], FileUtils.basename(tests[i][0]));
           }
       }
  -    
  +
       /* TODO: Reenable this test */
       public void DISABLED__testRemoveExtensionWithPaths() {
  -        final String[][] testsWithPaths = {
  -            {"/tmp/foo/filename.ext", "filename"},
  -            {"C:\\temp\\foo\\filename.ext", "filename"},
  -            {"/tmp/foo.bar/filename.ext", "filename"},
  -            {"C:\\temp\\foo.bar\\filename.ext", "filename"},
  -            {"/tmp/foo.bar/README", "README"},
  -            {"C:\\temp\\foo.bar\\README", "README"},
  -            {"../filename.ext", "filename"}};
  +        final String[][] testsWithPaths =
  +            { { "/tmp/foo/filename.ext", "filename" }, {
  +                "C:\\temp\\foo\\filename.ext", "filename" }, {
  +                "/tmp/foo.bar/filename.ext", "filename" }, {
  +                "C:\\temp\\foo.bar\\filename.ext", "filename" }, {
  +                "/tmp/foo.bar/README", "README" }, {
  +                "C:\\temp\\foo.bar\\README", "README" }, {
  +                "../filename.ext", "filename" }
  +        };
   
           for (int i = 0; i < testsWithPaths.length; i++) {
  -            assertEquals(testsWithPaths[i][1], 
FileUtils.removeExtension(testsWithPaths[i][0]));
  +            assertEquals(
  +                testsWithPaths[i][1],
  +                FileUtils.removeExtension(testsWithPaths[i][0]));
               //assertEquals(testsWithPaths[i][1], 
FileUtils.basename(testsWithPaths[i][0]));
           }
       }
   
   }
  -
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to