/************************************************************************* /* File.java -- Tests File class /* /* Copyright (c) 1998 Free Software Foundation, Inc. /* Written by Aaron M. Renn (arenn@urbanophile.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU General Public License as published /* by the Free Software Foundation, version 2. (see COPYING) /* /* This program is distributed in the hope that it will be useful, but /* WITHOUT ANY WARRANTY; without even the implied warranty of /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /* GNU General Public License for more details. /* /* You should have received a copy of the GNU General Public License /* along with this program; if not, write to the Free Software Foundation /* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /*************************************************************************/ import java.io.*; public class FileTest { static PrintWriter pw; public static void dumpFile(File f) throws IOException { pw.println("Name: " + f.getName()); pw.println("Parent: " + f.getParent()); pw.println("Path: " + f.getPath()); pw.println("Absolute: " + f.getAbsolutePath()); pw.println("Canonical: " + f.getCanonicalPath()); pw.println("String: " + f.toString()); } public static void deleteTempDirs() throws IOException { File f = new File("tempfiletest/tmp/tmp"); if (!f.delete()) throw new IOException("Could not delete " + f.getPath()); f = new File("tempfiletest/tmp"); if (!f.delete()) throw new IOException("Could not delete " + f.getPath()); f = new File("tempfiletest/"); if (!f.delete()) throw new IOException("Could not delete " + f.getPath()); } public static void main(String[] argv) { System.out.println("Started test of File"); // This test writes a bunch of things to a file. That file should // be "diff-ed" against one generated when this test is run against // the JDK java.io package. System.out.println("Test 1: Path Operations Test"); try { pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("./file-test.out"))); dumpFile(new File("/")); dumpFile(new File("~arenn/foo")); dumpFile(new File("foo")); dumpFile(new File("../../../jcl/")); dumpFile(new File("/tmp/bar.txt")); dumpFile(new File("/usr")); dumpFile(new File("../..")); pw.flush(); File f = new File("gimme"); if (f.isAbsolute()) throw new IOException("isAbsolute() failed"); f = new File("/etc/services"); if (!f.isFile()) throw new IOException("isFile() failed"); pw.println("length: " + f.length()); pw.println("lastModified: " + f.lastModified()); pw.println("hashCode: " + f.hashCode()); f = new File("/etc/"); if (!f.isDirectory()) throw new IOException("isDirectory() failed"); pw.close(); System.out.println("PASSED: Conditionally Passed Path Operations Test"); } catch(IOException e) { System.out.println("FAILED: Path Operations Test: " + e); pw.close(); } System.out.println("Test 2: File/Directory Manipulation Test"); try { File f = new File("filetest"); if (!f.exists()) throw new IOException("The filetest directory doesn't exist"); String[] filelist = f.list(); if ((filelist == null) || (filelist.length != 3)) throw new IOException("Failed to read directory list"); for (int i = 0; i < filelist.length; i++) System.out.println(filelist[i]); System.out.println("Listing /etc/"); f = new File("/etc/"); filelist = f.list(); for (int i = 0; i < filelist.length; i++) System.out.println(filelist[i]); f = new File("tempfiletest/tmp/tmp"); if (!f.mkdirs()) throw new IOException("Failed to create directories: " + f.getPath()); deleteTempDirs(); f = new File("tempfiletest/tmp/tmp/"); if (!f.mkdirs()) throw new IOException("Failed to create directories: " + f.getPath()); deleteTempDirs(); //f = File.createTempFile("tempfile#old", new File(".")); f = new File("000000"); if (!f.renameTo(new File("tempfiletemp"))) throw new IOException("Failed to rename file: " + f.getPath()); if (!f.delete()) throw new IOException("Failed to delete file: " + f.getPath()); System.out.println("PASSED: File/Directory Manipulation Test"); } catch(IOException e) { System.out.println("FAILED: File/Directory Manipulation Test: " + e); } System.out.println("Test 3: Read/Write Permissions Test"); try { if ((new File("/")).canWrite() == true) throw new IOException("Permission to write / unexpectedly"); if ((new File("/etc/services")).canRead() == false) throw new IOException("No permission to read /etc/services"); System.out.println("PASSED: Read/Write Permissions Test"); } catch (IOException e) { System.out.println("FAILED: Read/Write Permissions Test: " + e); } System.out.println("Test 4: Name Comparison Tests"); try { File f1, f2; f1 = new File("/etc/"); f2 = new File("/etc/"); if (!f1.equals(f2)) throw new IOException(f1 + " " + f2); f2 = new File("/etc"); if (f1.equals(f2)) throw new IOException(f1 + " " + f2); /* f1 = new File("a"); f2 = new File("b"); if (f1.compareTo(f2) >= 0) throw new IOException(f1 + " " + f2); f1 = new File("z"); f2 = new File("y"); if (f1.compareTo(f2) <= 0) throw new IOException(f1 + " " + f2); f1 = new File("../../jcl/"); f2 = new File(".././.././jcl/."); if (f1.compareTo(f2) != 0) throw new IOException(f1 + " " + f2); */ System.out.println("PASSED: Name Comparison Tests"); } catch (IOException e) { System.out.println("FAILED: Name Comparison Tests: " + e); } System.out.println("Finished test of File"); } }