1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileFilter;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileOutputStream;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FilePermission;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FilenameFilter;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectStreamClass;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectStreamField;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.RandomAccessFile;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.MalformedURLException;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URI;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URISyntaxException;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.net.URL;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.CodeSource;
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permission;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.PermissionCollection;
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Permissions;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Policy;
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.ProtectionDomain;
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_Exec;
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport tests.support.Support_PlatformFile;
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class FileTest extends TestCase {
49fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String platformId = "JDK"
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        + System.getProperty("java.vm.version").replace('.', '-');
52fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static void deleteTempFolder(File dir) {
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String files[] = dir.list();
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (files != null) {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (f.isDirectory()) {
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    deleteTempFolder(f);
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    f.delete();
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.delete();
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
67fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static String addTrailingSlash(String path) {
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == path.charAt(path.length() - 1)) {
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return path;
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        return path + File.separator;
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
74fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /** Location to store tests in */
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private File tempDirectory;
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public String fileString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_File\nTest_FileDescriptor\nTest_FileInputStream\nTest_FileNotFoundException\nTest_FileOutputStream\nTest_java_io_FilterInputStream\nTest_java_io_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n";
79fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() throws IOException {
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        /** Setup the temporary directory */
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tempDirectory = new File(addTrailingSlash(System.getProperty("java.io.tmpdir")) + "harmony-test-" + getClass().getSimpleName() + File.separator);
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tempDirectory.mkdirs();
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (tempDirectory != null) {
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            deleteTempFolder(tempDirectory);
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            tempDirectory = null;
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.io.File, java.lang.String)
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String0() {
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory.getPath(), "input.tst");
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Created Incorrect File ", addTrailingSlash(tempDirectory.getPath()) + "input.tst", f.getPath());
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
100fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String1() {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new File(tempDirectory, null);
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException Not Thrown.");
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
108fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String2() throws IOException {
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File((File)null, "input.tst");
111fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes        assertEquals("Created Incorrect File",
112fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes                new File("input.tst").getAbsolutePath(),
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.getAbsolutePath());
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
115fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String3() {
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-382
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File("/abc");
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File d = new File((File)null, "/abc");
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Created Incorrect File",
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     d.getAbsolutePath(), f.getAbsolutePath());
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
123fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String4() {
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-21
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File path = new File("/dir/file");
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File root = new File("/");
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file = new File(root, "/dir/file");
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Assert 1: wrong path result ", path.getPath(), file
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getPath());
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\') {
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Assert 1.1: path not absolute ", new File("\\\\\\a\b")
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       .isAbsolute());
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse("Assert 1.1: path absolute ", new File("\\\\\\a\b")
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       .isAbsolute());
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
139fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String5() {
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test data used in a few places below
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String dirName = tempDirectory.getPath();
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String fileName = "input.tst";
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check filename is preserved correctly
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File d = new File(dirName);
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(d, fileName);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dirName = addTrailingSlash(dirName);
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dirName += fileName;
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Assert 1: Created incorrect file ",
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     dirName, f.getPath());
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Check null argument is handled
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f = new File(d, null);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Assert 2: NullPointerException not thrown.");
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected.
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
161fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileLjava_lang_String6() {
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-46
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = new File("a");
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File("a/");
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Trailing slash file name is incorrect", f1, f2);
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.lang.String)
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_String() {
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String fileName = null;
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new File(fileName);
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException Not Thrown.");
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = addTrailingSlash(tempDirectory.getPath());
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName += "input.tst";
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(fileName);
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Created incorrect File", fileName, f.getPath());
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.lang.String, java.lang.String)
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_StringLjava_lang_String() throws IOException {
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String dirName = null;
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String fileName = "input.tst";
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(dirName, fileName);
195fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes        assertEquals("Test 1: Created Incorrect File",
196fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes                new File("input.tst").getAbsolutePath(),
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.getAbsolutePath());
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dirName = tempDirectory.getPath();
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = null;
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f = new File(dirName, fileName);
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException Not Thrown.");
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = "input.tst";
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(dirName, fileName);
210fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes        assertEquals("Test 2: Created Incorrect File",
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                addTrailingSlash(tempDirectory.getPath()) + "input.tst",
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.getPath());
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-382
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String s = null;
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File("/abc");
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File d = new File(s, "/abc");
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test3: Created Incorrect File", d.getAbsolutePath(), f
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAbsolutePath());
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.lang.String, java.lang.String)
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_Constructor_String_String_112270() {
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File ref1 = new File("/dir1/file1");
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file1 = new File("/", "/dir1/file1");
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 1", ref1.getPath(), file1.getPath());
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file2 = new File("/", "//dir1/file1");
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 2", ref1.getPath(), file2.getPath());
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\') {
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file3 = new File("\\", "\\dir1\\file1");
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("wrong result 3", ref1.getPath(), file3.getPath());
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file4 = new File("\\", "\\\\dir1\\file1");
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("wrong result 4", ref1.getPath(), file4.getPath());
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File ref2 = new File("/lib/content-types.properties");
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file5 = new File("/", "lib/content-types.properties");
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 5", ref2.getPath(), file5.getPath());
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.io.File, java.lang.String)
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_Constructor_File_String_112270() {
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File ref1 = new File("/dir1/file1");
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File root = new File("/");
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file1 = new File(root, "/dir1/file1");
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 1", ref1.getPath(), file1.getPath());
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file2 = new File(root, "//dir1/file1");
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 2", ref1.getPath(), file2.getPath());
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\') {
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file3 = new File(root, "\\dir1\\file1");
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("wrong result 3", ref1.getPath(), file3.getPath());
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file4 = new File(root, "\\\\dir1\\file1");
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("wrong result 4", ref1.getPath(), file4.getPath());
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File ref2 = new File("/lib/content-types.properties");
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file5 = new File(root, "lib/content-types.properties");
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("wrong result 5", ref2.getPath(), file5.getPath());
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#File(java.net.URI)
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_net_URI() throws URISyntaxException {
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URI uri = null;
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new File(uri);
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException Not Thrown.");
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // invalid file URIs
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] uris = new String[] { "mailto:user@domain.com", // not
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // hierarchical
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "ftp:///path", // not file scheme
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "//host/path/", // not absolute
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "file://host/path", // non empty authority
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "file:///path?query", // non empty query
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "file:///path#fragment", // non empty fragment
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "file:///path?", "file:///path#" };
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < uris.length; i++) {
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            uri = new URI(uris[i]);
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new File(uri);
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Expected IllegalArgumentException for new File(" + uri
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + ")");
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // a valid File URI
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(new URI("file:///pa%20th/another\u20ac/pa%25th"));
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Created incorrect File " + f.getPath(), f.getPath().equals(
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File.separator + "pa th" + File.separator + "another\u20ac" + File.separator + "pa%th"));
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#canRead()
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_canRead() throws IOException {
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // canRead only returns if the file exists so cannot be fully tested.
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, platformId + "canRead.tst");
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileOutputStream fos = new FileOutputStream(f);
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("canRead returned false", f.canRead());
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#canWrite()
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_canWrite() throws IOException {
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // canWrite only returns if the file exists so cannot be fully tested.
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, platformId + "canWrite.tst");
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileOutputStream fos = new FileOutputStream(f);
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("canWrite returned false", f.canWrite());
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#compareTo(java.io.File)
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_compareToLjava_io_File() {
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = new File("thisFile.file");
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File("thisFile.file");
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f3 = new File("thatFile.file");
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Equal files did not answer zero for compareTo", 0, f1
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .compareTo(f2));
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("f3.compareTo(f1) did not result in value < 0", f3
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .compareTo(f1) < 0);
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("f1.compareTo(f3) did not result in value > 0", f1
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .compareTo(f3) > 0);
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#createNewFile()
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_createNewFile_EmptyString() {
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File("");
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.createNewFile();
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IOException");
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#createNewFile()
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_createNewFile() throws IOException {
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int numDir = 1;
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, String.valueOf(numDir));
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Making sure that the directory does not exist.
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // If the directory exists, add one to the directory number
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // (making it a new directory name.)
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                numDir++;
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, String.valueOf(numDir));
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for trying to create a file in a directory that does not
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // exist.
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Try to create a file in a directory that does not exist
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f1 = new File(dir, "tempfile.tst");
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.createNewFile();
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IOException not thrown");
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.mkdir();
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = new File(dir, "tempfile.tst");
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File(dir, "tempfile.tst");
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.deleteOnExit();
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.deleteOnExit();
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.deleteOnExit();
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("File Should Not Exist", f1.isFile());
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.createNewFile();
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("File Should Exist.", f1.isFile());
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("File Should Exist.", f2.isFile());
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String dirName = f1.getParent();
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!dirName.endsWith(File.separator)) {
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dirName += File.separator;
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("File Saved To Wrong Directory.",
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     dir.getPath() + File.separator, dirName);
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("File Saved With Incorrect Name.", "tempfile.tst",
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f1.getName());
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for creating a file that already exists.
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("File Already Exists, createNewFile Should Return False.",
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2.createNewFile());
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test create an illegal file
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String sep = File.separator;
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File(sep + "..");
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.createNewFile();
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IOE");
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected;
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File(sep + "a" + sep + ".." + sep + ".." + sep);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.createNewFile();
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IOE");
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected;
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // This test is invalid. createNewFile should return false
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // not IOE when the file exists (in this case it exists and is
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // a directory). TODO: We should probably replace this test
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // with some that cover this behaviour. It might even be
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // different on unix and windows since it directly reflects
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // the open syscall behaviour.
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        //
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // // Test create an exist path
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // f1 = new File(base);
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // try {
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // assertFalse(f1.createNewFile());
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // fail("should throw IOE");
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // } catch (IOException e) {
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // // expected;
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // }
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#createTempFile(java.lang.String, java.lang.String)
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_createTempFileLjava_lang_StringLjava_lang_String()
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws IOException {
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Error protection against using a suffix without a "."?
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = null;
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = null;
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = File.createTempFile("harmony-test-FileTest_tempFile_abc", ".tmp");
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2 = File.createTempFile("harmony-test-FileTest_tempFile_tf", null);
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String fileLocation = addTrailingSlash(f1.getParent());
468fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String tempDir = addTrailingSlash(System.getProperty("java.io.tmpdir"));
470fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "File did not save to the default temporary-file location.",
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    tempDir, fileLocation);
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to see if correct suffix was used to create the tempfile.
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File currentFile;
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String fileName;
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Testing two files, one with suffix ".tmp" and one with null
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < 2; i++) {
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                currentFile = i == 0 ? f1 : f2;
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fileName = currentFile.getPath();
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("File Created With Incorrect Suffix.", fileName
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .endsWith(".tmp"));
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Tests to see if the correct prefix was used to create the
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // tempfiles.
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fileName = f1.getName();
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 1: File Created With Incorrect Prefix.", fileName
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .startsWith("harmony-test-FileTest_tempFile_abc"));
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fileName = f2.getName();
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 2: File Created With Incorrect Prefix.", fileName
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .startsWith("harmony-test-FileTest_tempFile_tf"));
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Tests for creating a tempfile with a filename shorter than 3
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // characters.
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f3 = File.createTempFile("ab", ".tst");
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f3.delete();
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException Not Thrown.");
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f3 = File.createTempFile("a", ".tst");
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f3.delete();
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException Not Thrown.");
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f3 = File.createTempFile("", ".tst");
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f3.delete();
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException Not Thrown.");
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f1 != null) {
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f2 != null) {
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2.delete();
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#createTempFile(java.lang.String, java.lang.String,
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        java.io.File)
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_createTempFileLjava_lang_StringLjava_lang_StringLjava_io_File()
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            throws IOException {
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = null;
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = null;
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = System.getProperty("java.io.tmpdir");
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to make sure that the tempfile was saved in the correct
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // location and with the correct prefix/suffix.
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", null, null);
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File dir = new File(base);
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", ".tmp", dir);
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File currentFile;
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String fileLocation;
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String fileName;
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < 2; i++) {
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                currentFile = i == 0 ? f1 : f2;
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fileLocation = addTrailingSlash(currentFile.getParent());
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                base = addTrailingSlash(base);
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals(
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        "File not created in the default temporary-file location.",
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        base, fileLocation);
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fileName = currentFile.getName();
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("File created with incorrect suffix.", fileName
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .endsWith(".tmp"));
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("File created with incorrect prefix.", fileName
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .startsWith("harmony-test-FileTest_tempFile2_tf"));
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                currentFile.delete();
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test for creating a tempfile in a directory that does not exist.
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int dirNumber = 1;
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean dirExists = true;
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Set dir to a non-existent directory inside the temporary
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // directory
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir = new File(base, String.valueOf(dirNumber));
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Making sure that the directory does not exist.
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            while (dirExists) {
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // If the directory exists, add one to the directory number
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // (making it
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // a new directory name.)
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (dir.exists()) {
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dirNumber++;
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir = new File(base, String.valueOf(dirNumber));
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                } else {
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dirExists = false;
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Try to create a file in a directory that does not exist
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f3 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", null, dir);
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f3.delete();
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IOException not thrown");
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Tests for creating a tempfile with a filename shorter than 3
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // characters.
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f4 = File.createTempFile("ab", null, null);
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f4.delete();
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException not thrown.");
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f4 = File.createTempFile("a", null, null);
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f4.delete();
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException not thrown.");
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f4 = File.createTempFile("", null, null);
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f4.delete();
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException not thrown.");
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f1 != null) {
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f2 != null) {
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#delete()
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_delete() throws IOException {
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(tempDirectory, platformId
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "filechk");
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.mkdir();
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Directory does not exist", dir.exists());
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Directory is not directory", dir.isDirectory());
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(dir, "filechk.tst");
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(f);
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Error Creating File For Delete Test", f.exists());
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.delete();
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Directory Should Not Have Been Deleted.", dir.exists());
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("File Was Not Deleted", !f.exists());
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.delete();
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Directory Was Not Deleted", !dir.exists());
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // GCH
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // TODO : This test passes on Windows but fails on Linux with a
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // java.lang.NoClassDefFoundError. Temporarily removing from the test
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // suite while I investigate the cause.
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // /**
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // * @tests java.io.File#deleteOnExit()
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // */
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // public void test_deleteOnExit() {
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // File f1 = new File(System.getProperty("java.io.tmpdir"), platformId
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // + "deleteOnExit.tst");
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // try {
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // FileOutputStream fos = new FileOutputStream(f1);
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // fos.close();
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // } catch (IOException e) {
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // fail("Unexpected IOException During Test : " + e.getMessage());
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // }
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // assertTrue("File Should Exist.", f1.exists());
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    //
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // try {
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Support_Exec.execJava(new String[] {
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // "tests.support.Support_DeleteOnExitTest", f1.getPath() },
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // null, true);
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // } catch (IOException e) {
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // fail("Unexpected IOException During Test + " + e.getMessage());
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // } catch (InterruptedException e) {
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // fail("Unexpected InterruptedException During Test: " + e);
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // }
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    //
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // boolean gone = !f1.exists();
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // f1.delete();
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // assertTrue("File Should Already Be Deleted.", gone);
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // }
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#equals(java.lang.Object)
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_equalsLjava_lang_Object() throws IOException {
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = new File("filechk.tst");
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File("filechk.tst");
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f3 = new File("xxxx");
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Equality test failed", f1.equals(f2));
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Files Should Not Return Equal.", !f1.equals(f3));
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3 = new File("FiLeChK.tst");
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onWindows = File.separatorChar == '\\';
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onUnix = File.separatorChar == '/';
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (onWindows) {
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Files Should Return Equal.", f1.equals(f3));
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else if (onUnix) {
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Files Should NOT Return Equal.", !f1.equals(f3));
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File(tempDirectory, "casetest.tmp");
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = new File(tempDirectory, "CaseTest.tmp");
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new FileOutputStream(f1).close(); // create the file
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (f1.equals(f2)) {
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileInputStream fis = new FileInputStream(f2);
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fis.close();
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("File system is case sensitive");
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean exception = false;
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileInputStream fis = new FileInputStream(f2);
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fis.close();
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                exception = true;
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File system is case insensitive", exception);
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.delete();
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#exists()
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_exists() throws IOException {
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, platformId
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "exists.tst");
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Exists returned true for non-existent file", !f.exists());
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(f);
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Exists returned false file", f.exists());
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getAbsoluteFile()
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAbsoluteFile() {
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = addTrailingSlash(tempDirectory.getPath());
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base, "temp.tst");
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = f.getAbsoluteFile();
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Incorrect File Returned.", 0, f2.compareTo(f
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAbsoluteFile()));
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "Temp" + File.separator + File.separator + "temp.tst");
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = f.getAbsoluteFile();
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Incorrect File Returned.", 0, f2.compareTo(f
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAbsoluteFile()));
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + File.separator + ".." + File.separator + "temp.tst");
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = f.getAbsoluteFile();
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 3: Incorrect File Returned.", 0, f2.compareTo(f
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getAbsoluteFile()));
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.delete();
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getAbsolutePath()
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getAbsolutePath() {
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = addTrailingSlash(tempDirectory.getPath());
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base, "temp.tst");
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Incorrect Path Returned.",
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     base + "temp.tst", f.getAbsolutePath());
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "Temp" + File.separator + File.separator + File.separator + "Testing" + File.separator
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "temp.tst");
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Incorrect Path Returned.",
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		     base + "Temp" + File.separator + "Testing" + File.separator + "temp.tst",
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f.getAbsolutePath());
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "a" + File.separator + File.separator + ".." + File.separator + "temp.tst");
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 3: Incorrect Path Returned.",
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     base + "a" + File.separator + ".." + File.separator + "temp.tst",
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f.getAbsolutePath());
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getCanonicalFile()
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getCanonicalFile() throws IOException {
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = addTrailingSlash(tempDirectory.getPath());
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base, "temp.tst");
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = f.getCanonicalFile();
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Incorrect File Returned.", 0, f2
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalFile().compareTo(f.getCanonicalFile()));
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "Temp" + File.separator + File.separator + "temp.tst");
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = f.getCanonicalFile();
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Incorrect File Returned.", 0, f2
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalFile().compareTo(f.getCanonicalFile()));
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "Temp" + File.separator + File.separator + ".." + File.separator + "temp.tst");
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = f.getCanonicalFile();
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 3: Incorrect File Returned.", 0, f2
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalFile().compareTo(f.getCanonicalFile()));
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for when long directory/file names in Windows
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onWindows = File.separatorChar == '\\';
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (onWindows) {
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File testdir = new File(base, "long-" + platformId);
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testdir.mkdir();
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File dir = new File(testdir, "longdirectory" + platformId);
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir.mkdir();
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f = new File(dir, "longfilename.tst");
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2 = f.getCanonicalFile();
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertEquals("Test 4: Incorrect File Returned.", 0, f2
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        .getCanonicalFile().compareTo(f.getCanonicalFile()));
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2 = new File(testdir + File.separator + "longdi~1" + File.separator
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + "longfi~1.tst");
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File canonicalf2 = f2.getCanonicalFile();
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                /*
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 * If the "short file name" doesn't exist, then assume that the
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 * 8.3 file name compatibility is disabled.
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 */
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (canonicalf2.exists()) {
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertTrue("Test 5: Incorrect File Returned: "
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + canonicalf2, canonicalf2.compareTo(f
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            .getCanonicalFile()) == 0);
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2.delete();
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir.delete();
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testdir.delete();
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getCanonicalPath()
830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getCanonicalPath() throws IOException {
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Should work for Unix/Windows.
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String dots = "..";
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getCanonicalPath();
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        base = addTrailingSlash(base);
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base, "temp.tst");
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Incorrect Path Returned.", base + "temp.tst", f
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalPath());
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "Temp" + File.separator + dots + File.separator + "temp.tst");
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Incorrect Path Returned.", base + "temp.tst", f
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalPath());
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Finding a non-existent directory for tests 3 and 4
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // This is necessary because getCanonicalPath is case sensitive and
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // could cause a failure in the test if the directory exists but with
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // different case letters (e.g "Temp" and "temp")
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir1 = new File(base, String.valueOf(dirNumber));
850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir1.exists()) {
852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir1 = new File(base, String.valueOf(dirNumber));
854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + dirNumber + File.separator + dots + File.separator + dirNumber
859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + File.separator + "temp.tst");
860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 3: Incorrect Path Returned.", base + dirNumber
861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + File.separator + "temp.tst", f.getCanonicalPath());
862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + dirNumber + File.separator + "Temp" + File.separator + dots + File.separator
863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "Test" + File.separator + "temp.tst");
864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 4: Incorrect Path Returned.", base + dirNumber
865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + File.separator + "Test" + File.separator + "temp.tst", f.getCanonicalPath());
866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "1234.567");
868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 5: Incorrect Path Returned.", base + "1234.567", f
869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getCanonicalPath());
870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for long file names on Windows
872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onWindows = (File.separatorChar == '\\');
873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (onWindows) {
874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File testdir = new File(base, "long-" + platformId);
875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            testdir.mkdir();
876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f1 = new File(testdir, "longfilename" + platformId + ".tst");
877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileOutputStream fos = new FileOutputStream(f1);
878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f2 = null, f3 = null, dir2 = null;
879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                String dirName1 = f1.getCanonicalPath();
882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f4 = new File(testdir, "longfi~1.tst");
883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                /*
884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 * If the "short file name" doesn't exist, then assume that the
885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 * 8.3 file name compatibility is disabled.
886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                 */
887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (f4.exists()) {
888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    String dirName2 = f4.getCanonicalPath();
889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals("Test 6: Incorrect Path Returned.", dirName1,
890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            dirName2);
891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir2 = new File(testdir, "longdirectory" + platformId);
892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (!dir2.exists()) {
893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        assertTrue("Could not create dir: " + dir2, dir2
894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                .mkdir());
895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    f2 = new File(testdir.getPath() + File.separator + "longdirectory"
897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + platformId + File.separator + "Test" + File.separator + dots
898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + File.separator + "longfilename.tst");
899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    FileOutputStream fos2 = new FileOutputStream(f2);
900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    fos2.close();
901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dirName1 = f2.getCanonicalPath();
902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    f3 = new File(testdir.getPath() + File.separator + "longdi~1"
903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + File.separator + "Test" + File.separator + dots + File.separator
904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            + "longfi~1.tst");
905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dirName2 = f3.getCanonicalPath();
906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals("Test 7: Incorrect Path Returned.", dirName1,
907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                            dirName2);
908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (f2 != null) {
912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    f2.delete();
913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (dir2 != null) {
915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir2.delete();
916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                testdir.delete();
918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getName()
924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getName() {
926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File("name.tst");
927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Returned incorrect name", "name.tst", f.getName());
928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File("");
930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Returned incorrect name", "", f.getName());
931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getParent()
937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getParent() {
939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File("p.tst");
940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Incorrect path returned", f.getParent());
941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "p.tst");
942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect path returned",
943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     System.getProperty("user.home"), f.getParent());
944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = new File("/directory");
947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong parent test 1", File.separator, f1.getParent());
948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File("/directory/file");
949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong parent test 2",
950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     File.separator + "directory", f1.getParent());
951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File("directory/file");
952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Wrong parent test 3", "directory", f1.getParent());
953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File("/");
954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Wrong parent test 4", f1.getParent());
955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File("directory");
956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Wrong parent test 5", f1.getParent());
957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\' && new File("d:/").isAbsolute()) {
959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File("d:/directory");
960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Wrong parent test 1a", "d:" + File.separator, f1.getParent());
961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File("d:/directory/file");
962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Wrong parent test 2a",
963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         "d:" + File.separator + "directory", f1.getParent());
964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File("d:directory/file");
965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Wrong parent test 3a", "d:directory", f1.getParent());
966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File("d:/");
967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertNull("Wrong parent test 4a", f1.getParent());
968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File("d:directory");
969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Wrong parent test 5a", "d:", f1.getParent());
970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getParentFile()
975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getParentFile() {
977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File("tempfile.tst");
978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Incorrect path returned", f.getParentFile());
979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(tempDirectory, "tempfile1.tmp");
980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File(tempDirectory, "tempfile2.tmp");
981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f3 = new File(tempDirectory, "/a/tempfile.tmp");
982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect File Returned", 0, f.getParentFile().compareTo(
983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2.getParentFile()));
984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect File Returned", f.getParentFile().compareTo(
985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f3.getParentFile()) != 0);
986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.delete();
988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3.delete();
989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#getPath()
993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getPath() {
995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = System.getProperty("user.home");
996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String fname;
997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1;
998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!base.regionMatches((base.length() - 1), File.separator, 0, 1)) {
999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            base += File.separator;
1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fname = base + "filechk.tst";
1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File(base, "filechk.tst");
1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File("filechk.tst");
1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f3 = new File("c:");
1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f4 = new File(base + "a" + File.separator + File.separator + ".." + File.separator
1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "filechk.tst");
1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getPath returned incorrect path(f1)",
1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     fname, f1.getPath());
1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getPath returned incorrect path(f2)",
1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     "filechk.tst", f2.getPath());
1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getPath returned incorrect path(f3)","c:", f3.getPath());
1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("getPath returned incorrect path(f4)",
1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     base + "a" + File.separator + ".." + File.separator + "filechk.tst",
1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f4.getPath());
1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1.delete();
1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2.delete();
1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3.delete();
1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f4.delete();
1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-444
1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file;
1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String separator = File.separator;
1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        file = new File((File) null, "x/y/z");
1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("x" + separator + "y" + separator + "z", file.getPath());
1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        file = new File((String) null, "x/y/z");
1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("x" + separator + "y" + separator + "z", file.getPath());
1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-829
1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String f1ParentName = "01";
1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f1 = new File(f1ParentName, "");
1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(f1ParentName, f1.getPath());
1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String f2ParentName = "0";
1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f2 = new File(f2ParentName, "");
1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(-1, f2.compareTo(f1));
1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, f1.compareTo(f2));
1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File parent = tempDirectory;
1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f3 = new File(parent, "");
1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(parent.getPath(), f3.getPath());
1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10461ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        File file0 = new File("");
10471ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertEquals("", file0.getPath());
1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
10491ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        // Regression for HARMONY-3869
10501ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        // Behavior here is system-dependent according to the RI javadoc.
10511ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        String path1 = new File("", "").getPath();
10521ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertTrue(path1.equals(File.separator) || path1.isEmpty());
10531ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        String path2 = new File(new File(""), "").getPath();
10541ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertTrue(path2.equals(File.separator) || path2.isEmpty());
1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#hashCode()
1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_hashCode() {
1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-53
1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File mfile = new File("SoMe FiLeNaMe"); // Mixed case
1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File lfile = new File("some filename"); // Lower case
1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (mfile.equals(lfile)) {
1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Assert 0: wrong hashcode", mfile.hashCode() == lfile
1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .hashCode());
1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse("Assert 1: wrong hashcode", mfile.hashCode() == lfile
1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .hashCode());
1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#isAbsolute()
1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isAbsolute() {
1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\') {
1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f = new File("c:\\test");
1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f1 = new File("\\test");
1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // One or the other should be absolute on Windows or CE
1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Absolute returned false", (f.isAbsolute() && !f1
1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .isAbsolute())
1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    || (!f.isAbsolute() && f1.isAbsolute()));
1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("C:/").isAbsolute());
1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("f:/").isAbsolute());
1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("f:\\").isAbsolute());
1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("f:").isAbsolute());
1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("K:").isAbsolute());
1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("\\\\").isAbsolute());
1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("\\\\\\").isAbsolute());
1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("\\\\hello").isAbsolute());
1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("\\").isAbsolute());
1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("/").isAbsolute());
1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f = new File("/test");
1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File f1 = new File("\\test");
1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Absolute returned false", f.isAbsolute());
1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse("Absolute returned true", f1.isAbsolute());
1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue(new File("//test").isAbsolute());
1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("test").isAbsolute());
1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("c:/").isAbsolute());
1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("c:\\").isAbsolute());
1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("c:").isAbsolute());
1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("\\").isAbsolute());
1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertFalse(new File("\\\\").isAbsolute());
1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Non-Absolute returned true", !new File("../test")
1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .isAbsolute());
1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#isDirectory()
1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isDirectory() {
1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = addTrailingSlash(tempDirectory.getPath());
1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base);
1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test 1: Directory Returned False", f.isDirectory());
1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base + "zxzxzxz" + platformId);
1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test 2: (Not Created) Directory Returned True.", !f
1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .isDirectory());
1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.mkdir();
1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 3: Directory Returned False.", f.isDirectory());
1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#isFile()
1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isFile() throws IOException {
1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(base);
1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse("Directory Returned True As Being A File.", f.isFile());
1138fc95c99cfa4921fef424f3f411d013b821589e69Elliott Hughes
1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        base = addTrailingSlash(base);
1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(base, platformId + "amiafile");
1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Non-existent File Returned True", !f.isFile());
1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(f);
1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("File returned false", f.isFile());
1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_isHidden() throws IOException, InterruptedException {
1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onUnix = File.separatorChar == '/';
11501ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertTrue(onUnix);
11511ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes
1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // On Unix hidden files are marked with a "." at the beginning
1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // of the file name.
11541ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        File f1 = File.createTempFile("harmony-test-FileTest_notHidden_", ".tmp");
11551ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        File f2 = File.createTempFile(".harmony-test-FileTest_isHidden_", ".tmp");
11561ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertFalse(f1.isHidden());
11571ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertTrue(f2.isHidden());
11581ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        // We can still delete hidden files.
11591ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        assertTrue(f2.delete());
11601ca31a87029e076a632a886400cdada568cab4a5Elliott Hughes        f1.delete();
1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#lastModified()
1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_lastModified() throws IOException {
1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(System.getProperty("java.io.tmpdir"), platformId
1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "lModTest.tst");
1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        long lastModifiedTime = f.lastModified();
1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("LastModified Time Should Have Returned 0.", 0,
1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                lastModifiedTime);
1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(f);
1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.setLastModified(315550800000L);
1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        lastModifiedTime = f.lastModified();
1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("LastModified Time Incorrect",
1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     315550800000L, lastModifiedTime);
1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-2146
1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File("/../");
1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(f.lastModified() > 0);
1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#length()
1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_length() throws IOException {
1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, platformId
1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                + "input.tst");
1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("File Length Should Have Returned 0.", 0, f.length());
1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(f);
1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(fileString.getBytes());
1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect file length returned",
1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		     fileString.length(), f.length());
1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.delete();
1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // regression test for HARMONY-1497
1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = File.createTempFile("test", "tmp");
1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.deleteOnExit();
1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        RandomAccessFile raf = new RandomAccessFile(f, "rwd");
1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        raf.write(0x41);
1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, f.length());
1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#list()
1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_list() throws IOException {
1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Old test left behind "garbage files" so this time it creates a
1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // directory that is guaranteed not to already exist (and deletes it
1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // afterward.)
1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = null;
1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir = new File(base, platformId + String.valueOf(dirNumber));
1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, String.valueOf(dirNumber));
1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] flist = dir.list();
1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Method list() Should Have Returned null.", flist);
1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Could not create parent directory for list test", dir
1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .mkdir());
1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] files = { "mtzz1.xx", "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(
1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "Method list() Should Have Returned An Array Of Length 0.",
1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    0, dir.list().length);
1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file = new File(dir, "notADir.tst");
1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(file);
1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(
1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        file.list());
1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                file.delete();
1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            flist = dir.list();
1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (flist.length != files.length) {
1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("Incorrect list returned");
1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Checking to make sure the correct files were are listed in the
1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // array.
1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean[] check = new boolean[flist.length];
1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                check[i] = false;
1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (int j = 0; j < flist.length; j++) {
1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (flist[j].equals(files[i])) {
1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        check[i] = true;
1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        break;
1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int checkCount = 0;
1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (check[i] == false) {
1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    checkCount++;
1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid file returned in listing", 0, checkCount);
1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Could not delete parent directory for list test.", dir
1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .delete());
1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#listFiles()
1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_listFiles() throws IOException, InterruptedException {
1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Finding a non-existent directory to create.
1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, platformId + String.valueOf(dirNumber));
1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Making sure that the directory does not exist.
1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // If the directory exists, add one to the directory number
1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // (making it a new directory name.)
1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, String.valueOf(dirNumber));
1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for attempting to call listFiles on a non-existent directory.
1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("listFiles Should Return Null.", dir.listFiles());
1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed To Create Parent Directory.", dir.mkdir());
1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] files = { "1.tst", "2.tst", "3.tst", "" };
1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir.listFiles().length);
1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file = new File(dir, "notADir.tst");
1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(file);
1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(
1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        file.listFiles());
1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                file.delete();
1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < (files.length - 1); i++) {
1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new File(dir, "doesNotExist.tst");
1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File[] flist = dir.listFiles();
1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to make sure that only the 3 files that were created are
1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // listed.
1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Files Returned.", 3, flist.length);
1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to make sure that listFiles can read hidden files.
1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean onUnix = File.separatorChar == '/';
1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean onWindows = File.separatorChar == '\\';
1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (onWindows) {
1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                files[3] = "4.tst";
1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, "4.tst");
1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Runtime r = Runtime.getRuntime();
1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Process p = r.exec("attrib +h \"" + f.getPath() + "\"");
1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p.waitFor();
1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (onUnix) {
1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                files[3] = ".4.tst";
1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, ".4.tst");
1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            flist = dir.listFiles();
1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Files Returned.", 4, flist.length);
1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Checking to make sure the correct files were are listed in
1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // the array.
1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean[] check = new boolean[flist.length];
1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                check[i] = false;
1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (int j = 0; j < flist.length; j++) {
1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (flist[j].getName().equals(files[i])) {
1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        check[i] = true;
1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        break;
1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int checkCount = 0;
1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (check[i] == false) {
1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    checkCount++;
1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid file returned in listing", 0, checkCount);
1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (onWindows) {
1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Runtime r = Runtime.getRuntime();
1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                Process p = r.exec("attrib -h \""
1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        + new File(dir, files[3]).getPath() + "\"");
1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p.waitFor();
1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Parent Directory Not Deleted.", dir.delete());
1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#listFiles(java.io.FileFilter)
1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_listFilesLjava_io_FileFilter() throws IOException {
1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = System.getProperty("java.io.tmpdir");
1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Finding a non-existent directory to create.
1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File baseDir = new File(base, platformId + String.valueOf(dirNumber));
1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Making sure that the directory does not exist.
1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // If the directory exists, add one to the directory number (making
1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // it a new directory name.)
1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (baseDir.exists()) {
1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                baseDir = new File(base, String.valueOf(dirNumber));
1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Creating a filter that catches directories.
1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileFilter dirFilter = new FileFilter() {
1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public boolean accept(File f) {
1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return f.isDirectory();
1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("listFiles Should Return Null.", baseDir
1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .listFiles(dirFilter));
1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed To Create Parent Directory.", baseDir.mkdir());
1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir1 = null;
1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] files = { "1.tst", "2.tst", "3.tst" };
1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    baseDir.listFiles(dirFilter).length);
1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file = new File(baseDir, "notADir.tst");
1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(file);
1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(
1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        file.listFiles(dirFilter));
1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                file.delete();
1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(baseDir, files[i]);
1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir1 = new File(baseDir, "Temp1");
1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir1.mkdir();
1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Creating a filter that catches files.
1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileFilter fileFilter = new FileFilter() {
1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                public boolean accept(File f) {
1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    return f.isFile();
1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            };
1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to see if the correct number of directories are returned.
1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File[] directories = baseDir.listFiles(dirFilter);
1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Directories Returned.", 1,
1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    directories.length);
1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to see if the directory was saved with the correct name.
1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Directory Returned.", 0, directories[0]
1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .compareTo(dir1));
1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Test to see if the correct number of files are returned.
1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File[] flist = baseDir.listFiles(fileFilter);
1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Files Returned.",
1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         files.length, flist.length);
1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Checking to make sure the correct files were are listed in the
1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // array.
1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean[] check = new boolean[flist.length];
1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                check[i] = false;
1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (int j = 0; j < flist.length; j++) {
1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (flist[j].getName().equals(files[i])) {
1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        check[i] = true;
1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        break;
1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int checkCount = 0;
1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (check[i] == false) {
1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    checkCount++;
1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid file returned in listing", 0, checkCount);
1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(baseDir, files[i]);
1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir1.delete();
1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Parent Directory Not Deleted.", baseDir.delete());
1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(baseDir, files[i]);
1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir1 != null) {
1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir1.delete();
1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            baseDir.delete();
1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#listFiles(java.io.FilenameFilter)
1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_listFilesLjava_io_FilenameFilter() throws IOException {
1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = System.getProperty("java.io.tmpdir");
1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Finding a non-existent directory to create.
1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, platformId + String.valueOf(dirNumber));
1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Making sure that the directory does not exist.
1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // If the directory exists, add one to the directory number (making
1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // it a new directory name.)
1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, platformId + String.valueOf(dirNumber));
1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Creating a filter that catches "*.tst" files.
1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FilenameFilter tstFilter = new FilenameFilter() {
1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public boolean accept(File f, String fileName) {
1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return fileName.endsWith(".tst");
1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("listFiles Should Return Null.", dir.listFiles(tstFilter));
1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed To Create Parent Directory.", dir.mkdir());
1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] files = { "1.tst", "2.tst", "3.tmp" };
1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir.listFiles(tstFilter).length);
1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File file = new File(dir, "notADir.tst");
1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(file);
1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertNull(
1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        file.listFiles(tstFilter));
1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } finally {
1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                file.delete();
1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Creating a filter that catches "*.tmp" files.
1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FilenameFilter tmpFilter = new FilenameFilter() {
1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                public boolean accept(File f, String fileName) {
1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    // If the suffix is ".tmp" then send it to the array
1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (fileName.endsWith(".tmp")) {
1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return true;
1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    } else {
1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        return false;
1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            };
1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Tests to see if the correct number of files were returned.
1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            File[] flist = dir.listFiles(tstFilter);
1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Files Passed Through tstFilter.",
1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    2, flist.length);
1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < flist.length; i++) {
1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                assertTrue("File Should Not Have Passed The tstFilter.",
1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        flist[i].getPath().endsWith(".tst"));
1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            flist = dir.listFiles(tmpFilter);
1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Files Passed Through tmpFilter.",
1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    1, flist.length);
1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File Should Not Have Passed The tmpFilter.", flist[0]
1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .getPath().endsWith(".tmp"));
1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Parent Directory Not Deleted.", dir.delete());
1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#list(java.io.FilenameFilter)
1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_listLjava_io_FilenameFilter() throws IOException {
1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Old test left behind "garbage files" so this time it creates a
1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // directory that is guaranteed not to already exist (and deletes it
1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // afterward.)
1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, platformId + String.valueOf(dirNumber));
1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, String.valueOf(dirNumber));
1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FilenameFilter filter = new FilenameFilter() {
1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            public boolean accept(File dir, String name) {
1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                return !name.equals("mtzz1.xx");
1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        };
1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] flist = dir.list(filter);
1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull("Method list(FilenameFilter) Should Have Returned Null.",
1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                flist);
1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Could not create parent directory for test", dir.mkdir());
1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] files = { "mtzz1.xx", "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            /*
1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * Do not return null when trying to use list(Filename Filter) on a
1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * file rather than a directory. All other "list" methods return
1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * null for this test case.
1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             */
1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            /*
1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * File file = new File(dir, "notADir.tst"); try { FileOutputStream
1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * fos = new FileOutputStream(file); fos.close(); } catch
1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * (IOException e) { fail("Unexpected IOException During Test."); }
1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * flist = dir.list(filter); assertNull("listFiles Should Have
1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * Returned Null When Used On A File Instead Of A Directory.",
1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             * flist); file.delete();
1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes             */
1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            flist = dir.list(filter);
1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Array Of Length 0 Should Have Returned.", 0,
1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    flist.length);
1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                FileOutputStream fos = new FileOutputStream(f);
1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            flist = dir.list(filter);
1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect list returned", flist.length,
1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    files.length - 1);
1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Checking to make sure the correct files were are listed in the
1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // array.
1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean[] check = new boolean[flist.length];
1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                check[i] = false;
1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String[] wantedFiles = { "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < wantedFiles.length; i++) {
1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                for (int j = 0; j < flist.length; j++) {
1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    if (flist[j].equals(wantedFiles[i])) {
1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        check[i] = true;
1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                        break;
1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    }
1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            int checkCount = 0;
1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < check.length; i++) {
1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (check[i] == false) {
1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    checkCount++;
1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Invalid file returned in listing", 0, checkCount);
1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Could not delete parent directory for test.", dir
1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .delete());
1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            for (int i = 0; i < files.length; i++) {
1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                File f = new File(dir, files[i]);
1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f.delete();
1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#listRoots()
1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_listRoots() {
1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File[] roots = File.listRoots();
1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onUnix = File.separatorChar == '/';
1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean onWindows = File.separatorChar == '\\';
1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (onUnix) {
1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Incorrect Number Of Root Directories.", 1,
1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    roots.length);
1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String fileLoc = roots[0].getPath();
1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Incorrect Root Directory Returned.", fileLoc
1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    .startsWith(File.separator));
1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else if (onWindows) {
1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Need better test for Windows
1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Incorrect Number Of Root Directories.",
1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    roots.length > 0);
1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#mkdir()
1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_mkdir() throws IOException {
1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Old test left behind "garbage files" so this time it creates a
1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // directory that is guaranteed not to already exist (and deletes it
1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // afterward.)
1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int dirNumber = 1;
1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean dirExists = true;
1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, String.valueOf(dirNumber));
1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dirExists) {
1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dir.exists()) {
1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirNumber++;
1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir = new File(base, String.valueOf(dirNumber));
1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dirExists = false;
1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("mkdir failed", dir.mkdir());
1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	assertTrue("mkdir worked but exists check failed", dir.exists());
1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.deleteOnExit();
1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String longDirName = "abcdefghijklmnopqrstuvwx";// 24 chars
1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String newbase = new String(dir + File.separator);
1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        StringBuilder sb = new StringBuilder(dir + File.separator);
1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        StringBuilder sb2 = new StringBuilder(dir + File.separator);
1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test make a long path
1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dir.getCanonicalPath().length() < 256 - longDirName.length()) {
1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            sb.append(longDirName + File.separator);
1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir = new File(sb.toString());
1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir failed", dir.mkdir());
1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	    assertTrue("mkdir worked but exists check failed", dir.exists());
1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.deleteOnExit();
1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dir.getCanonicalPath().length() < 256) {
1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            sb.append(0);
1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir = new File(sb.toString());
1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath().length() + " failed",
1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir.mkdir());
1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath().length()
1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       + " worked but exists check failed", dir.exists());
1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.deleteOnExit();
1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir = new File(sb2.toString());
1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test make many paths
1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (dir.getCanonicalPath().length() < 256) {
1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            sb2.append(0);
1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir = new File(sb2.toString());
1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath().length() + " failed",
1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    dir.mkdir());
1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath().length()
1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       + " worked but exists check failed", dir.exists());
1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.deleteOnExit();
1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-3656
1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] ss = { "dir\u3400", "abc", "abc@123", "!@#$%^&",
1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "~\u4E00!\u4E8C@\u4E09$", "\u56DB\u4E94\u516D",
1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "\u4E03\u516B\u4E5D" };
1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < ss.length; i++) {
1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir = new File(newbase, ss[i]);
1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath() + " failed",
1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       dir.mkdir());
1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("mkdir " + dir.getCanonicalPath()
1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       + " worked but exists check failed",
1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                       dir.exists());
1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.deleteOnExit();
1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#mkdir()
1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *
1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * HARMONY-6041
1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_mkdir_special_unicode() throws IOException {
1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File specialDir = new File(this.tempDirectory,"\u5C73");
1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int i = 0;
1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        while (specialDir.exists()) {
1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            specialDir = new File("\u5C73" + i);
1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            ++i;
1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(specialDir.exists());
1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(specialDir.mkdir());
1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(specialDir.exists());
1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#mkdirs()
1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_mkdirs() {
1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String userHome = addTrailingSlash(tempDirectory.getPath());
1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(userHome + "mdtest" + platformId + File.separator + "mdtest2",
1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "p.tst");
1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File g = new File(userHome + "mdtest" + platformId + File.separator + "mdtest2");
1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File h = new File(userHome + "mdtest" + platformId);
1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f.mkdirs();
1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Base Directory not created", h.exists());
1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Directories not created", g.exists());
1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File not created", f.exists());
1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            g.delete();
1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            h.delete();
1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#renameTo(java.io.File)
1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_renameToLjava_io_File() throws IOException {
1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String base = tempDirectory.getPath();
1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(base, platformId);
1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.mkdir();
1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(dir, "xxx.xxx");
1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File rfile = new File(dir, "yyy.yyy");
1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = new File(dir, "zzz.zzz");
1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileOutputStream fos = new FileOutputStream(f);
1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(fileString.getBytes());
1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            long lengthOfFile = f.length();
1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            rfile.delete(); // in case it already exists
1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 1: File Rename Failed", f.renameTo(rfile));
1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 2: File Rename Failed.", rfile.exists());
1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 3: Size Of File Changed.",
1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         lengthOfFile, rfile.length());
1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos = new FileOutputStream(rfile);
1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.delete(); // in case it already exists
1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 4: File Rename Failed", rfile.renameTo(f2));
1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Test 5: File Rename Failed.", f2.exists());
1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            rfile.delete();
1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.delete();
1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.delete();
1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#setLastModified(long)
1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setLastModifiedJ() throws IOException {
1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = null;
1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = new File(Support_PlatformFile.getNewPlatformFile(
1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    "harmony-test-FileTest_setLastModified", ".tmp"));
1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.createNewFile();
1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            long orgTime = f1.lastModified();
1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Subtracting 100 000 milliseconds from the orgTime of File f1
1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setLastModified(orgTime - 100000);
1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            long lastModified = f1.lastModified();
1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 1: LastModifed time incorrect",
1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         orgTime - 100000, lastModified);
1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Subtracting 10 000 000 milliseconds from the orgTime of File f1
1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setLastModified(orgTime - 10000000);
1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lastModified = f1.lastModified();
1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 2: LastModifed time incorrect",
1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         orgTime - 10000000, lastModified);
1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Adding 100 000 milliseconds to the orgTime of File f1
1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setLastModified(orgTime + 100000);
1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lastModified = f1.lastModified();
1927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 3: LastModifed time incorrect",
1928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         orgTime + 100000, lastModified);
1929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Adding 10 000 000 milliseconds from the orgTime of File f1
1930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setLastModified(orgTime + 10000000);
1931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lastModified = f1.lastModified();
1932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 4: LastModifed time incorrect",
1933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         orgTime + 10000000, lastModified);
1934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Trying to set time to an exact number
1935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setLastModified(315550800000L);
1936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            lastModified = f1.lastModified();
1937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Test 5: LastModified time incorrect",
1938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                         315550800000L, lastModified);
1939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String osName = System.getProperty("os.name", "unknown");
1940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (osName.equals("Windows 2000") || osName.equals("Windows NT")) {
1941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Trying to set time to a large exact number
1942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                boolean result = f1.setLastModified(4354837199000L);
1943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                long next = f1.lastModified();
1944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Dec 31 23:59:59 EST 2107 is overflow on FAT file systems, and
1945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // the call fails
1946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                if (result) {
1947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    assertEquals("Test 6: LastModified time incorrect",
1948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                                 4354837199000L, next);
1949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                }
1950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Trying to set time to a negative number
1952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.setLastModified(-25);
1954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IllegalArgumentException Not Thrown.");
1955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IllegalArgumentException e) {
1956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
1958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f1 != null) {
1959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
1960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
1962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
1963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
1964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
1965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#setReadOnly()
1966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
1967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setReadOnly() throws IOException, InterruptedException {
1968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f1 = null;
1969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f2 = null;
1970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
1971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1 = File.createTempFile("harmony-test-FileTest_setReadOnly", ".tmp");
1972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2 = File.createTempFile("harmony-test-FileTest_setReadOnly", ".tmp");
1973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Assert is flawed because canWrite does not work.
1974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // assertTrue("File f1 Is Set To ReadOnly." , f1.canWrite());
1975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f1.setReadOnly();
1976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Assert is flawed because canWrite does not work.
1977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // assertTrue("File f1 Is Not Set To ReadOnly." , !f1.canWrite());
1978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
1979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Attempt to write to a file that is setReadOnly.
1980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new FileOutputStream(f1);
1981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IOException not thrown.");
1982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
1983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
1984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Runtime r = Runtime.getRuntime();
1986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            Process p;
1987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            boolean onUnix = File.separatorChar == '/';
1988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (onUnix) {
1989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p = r.exec("chmod +w " + f1.getAbsolutePath());
1990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
1991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p = r.exec("attrib -r \"" + f1.getAbsolutePath() + "\"");
1992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
1993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            p.waitFor();
1994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Assert is flawed because canWrite does not work.
1995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // assertTrue("File f1 Is Set To ReadOnly." , f1.canWrite());
1996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            FileOutputStream fos = new FileOutputStream(f1);
1997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(fileString.getBytes());
1998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
1999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File Was Not Able To Be Written To.",
2000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                    f1.length() == fileString.length());
2001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File f1 Did Not Delete", f1.delete());
2002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Assert is flawed because canWrite does not work.
2004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // assertTrue("File f2 Is Set To ReadOnly." , f2.canWrite());
2005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos = new FileOutputStream(f2);
2006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Write to a file.
2007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(fileString.getBytes());
2008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
2009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.setReadOnly();
2010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Assert is flawed because canWrite does not work.
2011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // assertTrue("File f2 Is Not Set To ReadOnly." , !f2.canWrite());
2012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            try {
2013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Attempt to write to a file that has previously been written
2014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // to.
2015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // and is now set to read only.
2016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos = new FileOutputStream(f2);
2017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fail("IOException not thrown.");
2018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } catch (IOException e) {
2019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                // Expected
2020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            r = Runtime.getRuntime();
2022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (onUnix) {
2023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p = r.exec("chmod +w " + f2.getAbsolutePath());
2024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            } else {
2025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                p = r.exec("attrib -r \"" + f2.getAbsolutePath() + "\"");
2026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            p.waitFor();
2028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File f2 Is Set To ReadOnly.", f2.canWrite());
2029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos = new FileOutputStream(f2);
2030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(fileString.getBytes());
2031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
2032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.setReadOnly();
2033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("File f2 Did Not Delete", f2.delete());
2034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Similarly, trying to delete a read-only directory should succeed
2035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2 = new File(tempDirectory, "deltestdir");
2036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.mkdir();
2037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f2.setReadOnly();
2038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Directory f2 Did Not Delete", f2.delete());
2039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertTrue("Directory f2 Did Not Delete", !f2.exists());
2040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
2041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f1 != null) {
2042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f1.delete();
2043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (f2 != null) {
2045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                f2.delete();
2046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#toString()
2052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() {
2054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String fileName = System.getProperty("user.home") + File.separator + "input.tst";
2055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(fileName);
2056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect string returned", fileName, f.toString());
2057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (File.separatorChar == '\\') {
2059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            String result = new File("c:\\").toString();
2060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals("Removed backslash", "c:\\", result);
2061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#toURI()
2066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toURI() throws URISyntaxException {
2068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Need a directory that exists
2069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = tempDirectory;
2070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for toURI when the file is a directory.
2072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String newURIPath = dir.getAbsolutePath();
2073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newURIPath = newURIPath.replace(File.separatorChar, '/');
2074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!newURIPath.startsWith("/")) {
2075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newURIPath = "/" + newURIPath;
2076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!newURIPath.endsWith("/")) {
2078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newURIPath += '/';
2079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URI uri = dir.toURI();
2082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1A: Incorrect URI Returned.", dir.getAbsoluteFile(), new File(uri));
2083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1B: Incorrect URI Returned.",
2084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     new URI("file", null, newURIPath, null, null), uri);
2085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for toURI with a file name with illegal chars.
2087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(dir, "te% \u20ac st.tst");
2088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newURIPath = f.getAbsolutePath();
2089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newURIPath = newURIPath.replace(File.separatorChar, '/');
2090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!newURIPath.startsWith("/")) {
2091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newURIPath = "/" + newURIPath;
2092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uri = f.toURI();
2095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2A: Incorrect URI Returned.",
2096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f.getAbsoluteFile(), new File(uri));
2097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2B: Incorrect URI Returned.",
2098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     new URI("file", null, newURIPath, null, null), uri);
2099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-3207
2101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir = new File(""); // current directory
2102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        uri = dir.toURI();
2103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test current dir: URI does not end with slash.", uri
2104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .toString().endsWith("/"));
2105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#toURL()
2109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toURL() throws MalformedURLException {
2111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Need a directory that exists
2112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = tempDirectory;
2113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for toURL when the file is a directory.
2115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String newDirURL = dir.getAbsolutePath();
2116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newDirURL = newDirURL.replace(File.separatorChar, '/');
2117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (newDirURL.startsWith("/")) {
2118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newDirURL = "file:" + newDirURL;
2119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
2120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newDirURL = "file:/" + newDirURL;
2121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!newDirURL.endsWith("/")) {
2123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newDirURL += '/';
2124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 1: Incorrect URL Returned.",
2126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     dir.toURL().toString(), newDirURL);
2127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Test for toURL with a file.
2129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(dir, "test.tst");
2130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String newURL = f.getAbsolutePath();
2131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newURL = newURL.replace(File.separatorChar, '/');
2132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (newURL.startsWith("/")) {
2133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newURL = "file:" + newURL;
2134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } else {
2135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            newURL = "file:/" + newURL;
2136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Test 2: Incorrect URL Returned.",
2138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                     f.toURL().toString(), newURL);
2139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-3207
2141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir = new File(""); // current directory
2142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        newDirURL = dir.toURL().toString();
2143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Test current dir: URL does not end with slash.", newDirURL
2144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .endsWith("/"));
2145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#toURI()
2149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toURI2() throws URISyntaxException {
2151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, "a/b/c/../d/e/./f");
2152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String path = f.getAbsolutePath();
2154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        path = path.replace(File.separatorChar, '/');
2155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!path.startsWith("/")) {
2156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            path = "/" + path;
2157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URI uri1 = new URI("file", null, path, null);
2160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URI uri2 = f.toURI();
2161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("uris not equal", uri1, uri2);
2162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#toURL()
2166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toURL2() throws MalformedURLException {
2168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File f = new File(tempDirectory, "a/b/c/../d/e/./f");
2169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String path = f.getAbsolutePath();
2171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        path = path.replace(File.separatorChar, '/');
2172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!path.startsWith("/")) {
2173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            path = "/" + path;
2174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url1 = new URL("file", "", path);
2177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        URL url2 = f.toURL();
2178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("urls not equal", url1, url2);
2179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.File#deleteOnExit()
2183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_deleteOnExit() throws IOException, InterruptedException {
2185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File("dir4filetest");
2186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        dir.mkdir();
2187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(dir.exists());
2188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File subDir = new File("dir4filetest/subdir");
2189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        subDir.mkdir();
2190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(subDir.exists());
2191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Support_Exec.execJava(new String[] {
2193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                "tests.support.Support_DeleteOnExitTest",
2194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                dir.getAbsolutePath(), subDir.getAbsolutePath() },
2195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new String[] {}, false);
2196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(dir.exists());
2197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertFalse(subDir.exists());
2198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serilization
2202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_objectStreamClass_getFields() throws Exception {
2204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-2674
2205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectStreamClass objectStreamClass = ObjectStreamClass
2206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .lookup(File.class);
2207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectStreamField[] objectStreamFields = objectStreamClass.getFields();
2208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(1, objectStreamFields.length);
2209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ObjectStreamField objectStreamField = objectStreamFields[0];
2210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("path", objectStreamField.getName());
2211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(String.class, objectStreamField.getType());
2212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Regression test for HARMONY-4493
2215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_list_withUnicodeFileName() throws Exception {
2216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File rootDir = new File("P");
2217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!rootDir.exists()) {
2218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            rootDir.mkdir();
2219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            rootDir.deleteOnExit();
2220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String dirName = new String("src\u3400");
2223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File dir = new File(rootDir, dirName);
2224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (!dir.exists()) {
2225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.mkdir();
2226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            dir.deleteOnExit();
2227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        boolean exist = false;
2229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        String[] fileNames = rootDir.list();
2230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (String fileName : fileNames) {
2231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (dirName.equals(fileName)) {
2232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                exist = true;
2233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                break;
2234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
2235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
2236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue(exist);
2237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization.
2241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_serialization_self() throws Exception {
2243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File testFile = new File("test.ser");
2244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifySelf(testFile);
2245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
2247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
2248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests serialization/deserialization compatibility with RI.
2249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
2250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_serialization_compatibility() throws Exception {
2251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file = new File("FileTest.golden.ser");
2252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        SerializationTest.verifyGolden(this, file);
2253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
2254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
2255