1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileFilter;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileOutputStream;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FilenameFilter;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectStreamClass;
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectStreamField;
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.RandomAccessFile;
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.MalformedURLException;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URI;
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URISyntaxException;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URL;
322b7c83942a5e28c53698232182193d5118028e6cNarayan Kamathimport junit.framework.TestCase;
331aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamathimport libcore.io.Libcore;
342b7c83942a5e28c53698232182193d5118028e6cNarayan Kamathimport org.apache.harmony.testframework.serialization.SerializationTest;
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class FileTest extends TestCase {
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static String platformId = "JDK"
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            + System.getProperty("java.vm.version").replace('.', '-');
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static void deleteTempFolder(File dir) {
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String files[] = dir.list();
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (files != null) {
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (f.isDirectory()) {
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    deleteTempFolder(f);
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f.delete();
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.delete();
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static String addTrailingSlash(String path) {
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == path.charAt(path.length() - 1)) {
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return path;
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        return path + File.separator;
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Location to store tests in
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private File tempDirectory;
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    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";
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void setUp() throws IOException {
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        /** Setup the temporary directory */
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tempDirectory = new File(addTrailingSlash(System.getProperty("java.io.tmpdir")) + "harmony-test-" + getClass().getSimpleName() + File.separator);
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        tempDirectory.mkdirs();
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void tearDown() {
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (tempDirectory != null) {
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            deleteTempFolder(tempDirectory);
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            tempDirectory = null;
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.io.File, java.lang.String)
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String0() {
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory.getPath(), "input.tst");
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Created Incorrect File ", addTrailingSlash(tempDirectory.getPath()) + "input.tst", f.getPath());
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String1() {
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new File(tempDirectory, null);
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException Not Thrown.");
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String2() throws IOException {
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File((File) null, "input.tst");
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Created Incorrect File",
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new File("input.tst").getAbsolutePath(),
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getAbsolutePath());
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String3() {
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-382
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File("/abc");
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File d = new File((File) null, "/abc");
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test3: Created Incorrect File",
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                d.getAbsolutePath(), f.getAbsolutePath());
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String4() {
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-21
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File path = new File("/dir/file");
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File root = new File("/");
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file = new File(root, "/dir/file");
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Assert 1: wrong path result ", path.getPath(), file
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getPath());
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\') {
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Assert 1.1: path not absolute ", new File("\\\\\\a\b")
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .isAbsolute());
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else {
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse("Assert 1.1: path absolute ", new File("\\\\\\a\b")
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .isAbsolute());
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String5() {
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test data used in a few places below
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String dirName = tempDirectory.getPath();
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String fileName = "input.tst";
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Check filename is preserved correctly
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File d = new File(dirName);
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(d, fileName);
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dirName = addTrailingSlash(dirName);
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dirName += fileName;
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Assert 1: Created incorrect file ",
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirName, f.getPath());
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Check null argument is handled
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new File(d, null);
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("Assert 2: NullPointerException not thrown.");
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected.
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_FileLjava_lang_String6() {
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-46
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = new File("a");
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File("a/");
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Trailing slash file name is incorrect", f1, f2);
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.lang.String)
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_String() {
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String fileName = null;
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new File(fileName);
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException Not Thrown.");
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fileName = addTrailingSlash(tempDirectory.getPath());
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fileName += "input.tst";
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(fileName);
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Created incorrect File", fileName, f.getPath());
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.lang.String, java.lang.String)
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_lang_StringLjava_lang_String() throws IOException {
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String dirName = null;
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String fileName = "input.tst";
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(dirName, fileName);
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Created Incorrect File",
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new File("input.tst").getAbsolutePath(),
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getAbsolutePath());
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dirName = tempDirectory.getPath();
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fileName = null;
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f = new File(dirName, fileName);
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException Not Thrown.");
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fileName = "input.tst";
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(dirName, fileName);
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Created Incorrect File",
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                addTrailingSlash(tempDirectory.getPath()) + "input.tst",
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getPath());
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-382
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String s = null;
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File("/abc");
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File d = new File(s, "/abc");
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test3: Created Incorrect File", d.getAbsolutePath(), f
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getAbsolutePath());
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.lang.String, java.lang.String)
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor_String_String_112270() {
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File ref1 = new File("/dir1/file1");
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file1 = new File("/", "/dir1/file1");
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 1", ref1.getPath(), file1.getPath());
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file2 = new File("/", "//dir1/file1");
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 2", ref1.getPath(), file2.getPath());
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\') {
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file3 = new File("\\", "\\dir1\\file1");
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("wrong result 3", ref1.getPath(), file3.getPath());
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file4 = new File("\\", "\\\\dir1\\file1");
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("wrong result 4", ref1.getPath(), file4.getPath());
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
230db4d0bd54407d4f6116e51ba0668869f3f790b40Narayan Kamath        File ref2 = new File("/lib/test_112270.properties");
231db4d0bd54407d4f6116e51ba0668869f3f790b40Narayan Kamath        File file5 = new File("/", "lib/test_112270.properties");
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 5", ref2.getPath(), file5.getPath());
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.io.File, java.lang.String)
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_Constructor_File_String_112270() {
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File ref1 = new File("/dir1/file1");
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File root = new File("/");
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file1 = new File(root, "/dir1/file1");
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 1", ref1.getPath(), file1.getPath());
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file2 = new File(root, "//dir1/file1");
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 2", ref1.getPath(), file2.getPath());
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\') {
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file3 = new File(root, "\\dir1\\file1");
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("wrong result 3", ref1.getPath(), file3.getPath());
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file4 = new File(root, "\\\\dir1\\file1");
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("wrong result 4", ref1.getPath(), file4.getPath());
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File ref2 = new File("/lib/content-types.properties");
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file5 = new File(root, "lib/content-types.properties");
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("wrong result 5", ref2.getPath(), file5.getPath());
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#File(java.net.URI)
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_net_URI() throws URISyntaxException {
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URI uri = null;
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new File(uri);
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("NullPointerException Not Thrown.");
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // invalid file URIs
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] uris = new String[] { "mailto:user@domain.com", // not
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // hierarchical
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "ftp:///path", // not file scheme
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "//host/path/", // not absolute
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "file://host/path", // non empty authority
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "file:///path?query", // non empty query
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "file:///path#fragment", // non empty fragment
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "file:///path?", "file:///path#" };
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < uris.length; i++) {
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            uri = new URI(uris[i]);
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new File(uri);
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("Expected IllegalArgumentException for new File(" + uri
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        + ")");
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // a valid File URI
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(new URI("file:///pa%20th/another\u20ac/pa%25th"));
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Created incorrect File " + f.getPath(), f.getPath().equals(
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File.separator + "pa th" + File.separator + "another\u20ac" + File.separator + "pa%th"));
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#canRead()
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_canRead() throws IOException {
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // canRead only returns if the file exists so cannot be fully tested.
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, platformId + "canRead.tst");
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileOutputStream fos = new FileOutputStream(f);
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("canRead returned false", f.canRead());
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.delete();
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#canWrite()
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_canWrite() throws IOException {
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // canWrite only returns if the file exists so cannot be fully tested.
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, platformId + "canWrite.tst");
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileOutputStream fos = new FileOutputStream(f);
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("canWrite returned false", f.canWrite());
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.delete();
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#compareTo(java.io.File)
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_compareToLjava_io_File() {
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = new File("thisFile.file");
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File("thisFile.file");
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f3 = new File("thatFile.file");
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Equal files did not answer zero for compareTo", 0, f1
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .compareTo(f2));
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("f3.compareTo(f1) did not result in value < 0", f3
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .compareTo(f1) < 0);
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("f1.compareTo(f3) did not result in value > 0", f1
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .compareTo(f3) > 0);
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#createNewFile()
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_createNewFile_EmptyString() {
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File("");
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.createNewFile();
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IOException");
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException e) {
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#createNewFile()
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_createNewFile() throws IOException {
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int numDir = 1;
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, String.valueOf(numDir));
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Making sure that the directory does not exist.
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // If the directory exists, add one to the directory number
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // (making it a new directory name.)
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                numDir++;
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, String.valueOf(numDir));
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for trying to create a file in a directory that does not
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // exist.
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Try to create a file in a directory that does not exist
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f1 = new File(dir, "tempfile.tst");
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.createNewFile();
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("IOException not thrown");
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException e) {
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.mkdir();
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = new File(dir, "tempfile.tst");
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File(dir, "tempfile.tst");
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1.deleteOnExit();
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2.deleteOnExit();
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.deleteOnExit();
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("File Should Not Exist", f1.isFile());
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1.createNewFile();
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("File Should Exist.", f1.isFile());
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("File Should Exist.", f2.isFile());
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String dirName = f1.getParent();
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!dirName.endsWith(File.separator)) {
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dirName += File.separator;
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("File Saved To Wrong Directory.",
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir.getPath() + File.separator, dirName);
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("File Saved With Incorrect Name.", "tempfile.tst",
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.getName());
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for creating a file that already exists.
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("File Already Exists, createNewFile Should Return False.",
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2.createNewFile());
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test create an illegal file
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String sep = File.separator;
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File(sep + "..");
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.createNewFile();
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IOE");
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException e) {
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected;
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File(sep + "a" + sep + ".." + sep + ".." + sep);
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.createNewFile();
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IOE");
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException e) {
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected;
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // This test is invalid. createNewFile should return false
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // not IOE when the file exists (in this case it exists and is
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // a directory). TODO: We should probably replace this test
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // with some that cover this behaviour. It might even be
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // different on unix and windows since it directly reflects
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // the open syscall behaviour.
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        //
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // // Test create an exist path
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // f1 = new File(base);
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // try {
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // assertFalse(f1.createNewFile());
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // fail("should throw IOE");
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // } catch (IOException e) {
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // // expected;
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // }
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#createTempFile(java.lang.String, java.lang.String)
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_createTempFileLjava_lang_StringLjava_lang_String()
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Error protection against using a suffix without a "."?
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = null;
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = null;
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = File.createTempFile("harmony-test-FileTest_tempFile_abc", ".tmp");
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2 = File.createTempFile("harmony-test-FileTest_tempFile_tf", null);
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String fileLocation = addTrailingSlash(f1.getParent());
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String tempDir = addTrailingSlash(System.getProperty("java.io.tmpdir"));
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "File did not save to the default temporary-file location.",
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    tempDir, fileLocation);
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to see if correct suffix was used to create the tempfile.
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File currentFile;
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String fileName;
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Testing two files, one with suffix ".tmp" and one with null
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < 2; i++) {
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                currentFile = i == 0 ? f1 : f2;
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fileName = currentFile.getPath();
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue("File Created With Incorrect Suffix.", fileName
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .endsWith(".tmp"));
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Tests to see if the correct prefix was used to create the
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // tempfiles.
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fileName = f1.getName();
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 1: File Created With Incorrect Prefix.", fileName
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .startsWith("harmony-test-FileTest_tempFile_abc"));
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fileName = f2.getName();
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 2: File Created With Incorrect Prefix.", fileName
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .startsWith("harmony-test-FileTest_tempFile_tf"));
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Tests for creating a tempfile with a filename shorter than 3
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // characters.
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f3 = File.createTempFile("ab", ".tst");
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f3.delete();
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException Not Thrown.");
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f3 = File.createTempFile("a", ".tst");
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f3.delete();
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException Not Thrown.");
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f3 = File.createTempFile("", ".tst");
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f3.delete();
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException Not Thrown.");
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f1 != null) {
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f2 != null) {
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2.delete();
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#createTempFile(java.lang.String, java.lang.String,
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *java.io.File)
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_createTempFileLjava_lang_StringLjava_lang_StringLjava_io_File()
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            throws IOException {
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = null;
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = null;
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = System.getProperty("java.io.tmpdir");
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to make sure that the tempfile was saved in the correct
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // location and with the correct prefix/suffix.
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", null, null);
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File dir = new File(base);
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", ".tmp", dir);
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File currentFile;
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String fileLocation;
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String fileName;
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < 2; i++) {
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                currentFile = i == 0 ? f1 : f2;
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fileLocation = addTrailingSlash(currentFile.getParent());
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                base = addTrailingSlash(base);
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals(
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "File not created in the default temporary-file location.",
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        base, fileLocation);
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fileName = currentFile.getName();
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue("File created with incorrect suffix.", fileName
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .endsWith(".tmp"));
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue("File created with incorrect prefix.", fileName
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .startsWith("harmony-test-FileTest_tempFile2_tf"));
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                currentFile.delete();
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test for creating a tempfile in a directory that does not exist.
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int dirNumber = 1;
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean dirExists = true;
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Set dir to a non-existent directory inside the temporary
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // directory
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir = new File(base, String.valueOf(dirNumber));
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Making sure that the directory does not exist.
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            while (dirExists) {
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // If the directory exists, add one to the directory number
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // (making it
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // a new directory name.)
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (dir.exists()) {
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dirNumber++;
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir = new File(base, String.valueOf(dirNumber));
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                } else {
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dirExists = false;
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Try to create a file in a directory that does not exist
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f3 = File.createTempFile("harmony-test-FileTest_tempFile2_tf", null, dir);
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f3.delete();
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IOException not thrown");
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IOException e) {
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Tests for creating a tempfile with a filename shorter than 3
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // characters.
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f4 = File.createTempFile("ab", null, null);
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f4.delete();
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException not thrown.");
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f4 = File.createTempFile("a", null, null);
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f4.delete();
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException not thrown.");
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f4 = File.createTempFile("", null, null);
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f4.delete();
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException not thrown.");
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f1 != null) {
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f2 != null) {
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#delete()
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_delete() throws IOException {
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(tempDirectory, platformId
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "filechk");
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.mkdir();
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Directory does not exist", dir.exists());
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Directory is not directory", dir.isDirectory());
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(dir, "filechk.tst");
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileOutputStream fos = new FileOutputStream(f);
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.close();
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Error Creating File For Delete Test", f.exists());
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.delete();
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Directory Should Not Have Been Deleted.", dir.exists());
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("File Was Not Deleted", !f.exists());
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.delete();
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Directory Was Not Deleted", !dir.exists());
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // GCH
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // TODO : This test passes on Windows but fails on Linux with a
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // java.lang.NoClassDefFoundError. Temporarily removing from the test
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // suite while I investigate the cause.
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // /**
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // * java.io.File#deleteOnExit()
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // */
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // public void test_deleteOnExit() {
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // File f1 = new File(System.getProperty("java.io.tmpdir"), platformId
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // + "deleteOnExit.tst");
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // try {
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // FileOutputStream fos = new FileOutputStream(f1);
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // fos.close();
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // } catch (IOException e) {
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // fail("Unexpected IOException During Test : " + e.getMessage());
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // }
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // assertTrue("File Should Exist.", f1.exists());
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    //
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // try {
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Support_Exec.execJava(new String[] {
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // "tests.support.Support_DeleteOnExitTest", f1.getPath() },
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // null, true);
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // } catch (IOException e) {
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // fail("Unexpected IOException During Test + " + e.getMessage());
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // } catch (InterruptedException e) {
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // fail("Unexpected InterruptedException During Test: " + e);
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // }
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    //
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // boolean gone = !f1.exists();
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // f1.delete();
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // assertTrue("File Should Already Be Deleted.", gone);
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // }
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#equals(java.lang.Object)
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_equalsLjava_lang_Object() throws IOException {
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = new File("filechk.tst");
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File("filechk.tst");
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f3 = new File("xxxx");
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Equality test failed", f1.equals(f2));
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Files Should Not Return Equal.", !f1.equals(f3));
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File(tempDirectory, "casetest.tmp");
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = new File(tempDirectory, "CaseTest.tmp");
6791aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath        assertFalse(f1.equals(f2));
6801aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath        assertTrue(f1.createNewFile());
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1.delete();
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#exists()
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_exists() throws IOException {
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, platformId
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "exists.tst");
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Exists returned true for non-existent file", !f.exists());
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileOutputStream fos = new FileOutputStream(f);
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.close();
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Exists returned false file", f.exists());
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getAbsoluteFile()
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getAbsoluteFile() {
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = addTrailingSlash(tempDirectory.getPath());
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base, "temp.tst");
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = f.getAbsoluteFile();
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Incorrect File Returned.", 0, f2.compareTo(f
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getAbsoluteFile()));
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "Temp" + File.separator + File.separator + "temp.tst");
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = f.getAbsoluteFile();
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Incorrect File Returned.", 0, f2.compareTo(f
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getAbsoluteFile()));
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + File.separator + ".." + File.separator + "temp.tst");
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = f.getAbsoluteFile();
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 3: Incorrect File Returned.", 0, f2.compareTo(f
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getAbsoluteFile()));
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2.delete();
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getAbsolutePath()
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getAbsolutePath() {
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = addTrailingSlash(tempDirectory.getPath());
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base, "temp.tst");
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Incorrect Path Returned.",
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                base + "temp.tst", f.getAbsolutePath());
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "Temp" + File.separator + File.separator + File.separator + "Testing" + File.separator
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "temp.tst");
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Incorrect Path Returned.",
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                base + "Temp" + File.separator + "Testing" + File.separator + "temp.tst",
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getAbsolutePath());
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "a" + File.separator + File.separator + ".." + File.separator + "temp.tst");
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 3: Incorrect Path Returned.",
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                base + "a" + File.separator + ".." + File.separator + "temp.tst",
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getAbsolutePath());
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getCanonicalFile()
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getCanonicalFile() throws IOException {
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = addTrailingSlash(tempDirectory.getPath());
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base, "temp.tst");
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = f.getCanonicalFile();
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Incorrect File Returned.", 0, f2
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalFile().compareTo(f.getCanonicalFile()));
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "Temp" + File.separator + File.separator + "temp.tst");
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = f.getCanonicalFile();
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Incorrect File Returned.", 0, f2
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalFile().compareTo(f.getCanonicalFile()));
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "Temp" + File.separator + File.separator + ".." + File.separator + "temp.tst");
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = f.getCanonicalFile();
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 3: Incorrect File Returned.", 0, f2
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalFile().compareTo(f.getCanonicalFile()));
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for when long directory/file names in Windows
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean onWindows = File.separatorChar == '\\';
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (onWindows) {
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File testdir = new File(base, "long-" + platformId);
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testdir.mkdir();
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File dir = new File(testdir, "longdirectory" + platformId);
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir.mkdir();
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f = new File(dir, "longfilename.tst");
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2 = f.getCanonicalFile();
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertEquals("Test 4: Incorrect File Returned.", 0, f2
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        .getCanonicalFile().compareTo(f.getCanonicalFile()));
770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2 = new File(testdir + File.separator + "longdi~1" + File.separator
773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        + "longfi~1.tst");
774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File canonicalf2 = f2.getCanonicalFile();
775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                /*
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 * If the "short file name" doesn't exist, then assume that the
777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 * 8.3 file name compatibility is disabled.
778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 */
779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (canonicalf2.exists()) {
780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertTrue("Test 5: Incorrect File Returned: "
781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + canonicalf2, canonicalf2.compareTo(f
782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            .getCanonicalFile()) == 0);
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2.delete();
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir.delete();
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                testdir.delete();
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getCanonicalPath()
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getCanonicalPath() throws IOException {
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Should work for Unix/Windows.
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String dots = "..";
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getCanonicalPath();
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        base = addTrailingSlash(base);
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base, "temp.tst");
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Incorrect Path Returned.", base + "temp.tst", f
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalPath());
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "Temp" + File.separator + dots + File.separator + "temp.tst");
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Incorrect Path Returned.", base + "temp.tst", f
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalPath());
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Finding a non-existent directory for tests 3 and 4
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // This is necessary because getCanonicalPath is case sensitive and
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // could cause a failure in the test if the directory exists but with
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // different case letters (e.g "Temp" and "temp")
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir1 = new File(base, String.valueOf(dirNumber));
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir1.exists()) {
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir1 = new File(base, String.valueOf(dirNumber));
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + dirNumber + File.separator + dots + File.separator + dirNumber
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + File.separator + "temp.tst");
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 3: Incorrect Path Returned.", base + dirNumber
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + File.separator + "temp.tst", f.getCanonicalPath());
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + dirNumber + File.separator + "Temp" + File.separator + dots + File.separator
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "Test" + File.separator + "temp.tst");
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 4: Incorrect Path Returned.", base + dirNumber
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + File.separator + "Test" + File.separator + "temp.tst", f.getCanonicalPath());
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "1234.567");
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 5: Incorrect Path Returned.", base + "1234.567", f
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getCanonicalPath());
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for long file names on Windows
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean onWindows = (File.separatorChar == '\\');
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (onWindows) {
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File testdir = new File(base, "long-" + platformId);
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            testdir.mkdir();
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f1 = new File(testdir, "longfilename" + platformId + ".tst");
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileOutputStream fos = new FileOutputStream(f1);
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f2 = null, f3 = null, dir2 = null;
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                String dirName1 = f1.getCanonicalPath();
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f4 = new File(testdir, "longfi~1.tst");
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                /*
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 * If the "short file name" doesn't exist, then assume that the
850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 * 8.3 file name compatibility is disabled.
851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                 */
852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (f4.exists()) {
853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    String dirName2 = f4.getCanonicalPath();
854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals("Test 6: Incorrect Path Returned.", dirName1,
855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            dirName2);
856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir2 = new File(testdir, "longdirectory" + platformId);
857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (!dir2.exists()) {
858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        assertTrue("Could not create dir: " + dir2, dir2
859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                                .mkdir());
860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f2 = new File(testdir.getPath() + File.separator + "longdirectory"
862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + platformId + File.separator + "Test" + File.separator + dots
863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + File.separator + "longfilename.tst");
864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    FileOutputStream fos2 = new FileOutputStream(f2);
865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    fos2.close();
866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dirName1 = f2.getCanonicalPath();
867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f3 = new File(testdir.getPath() + File.separator + "longdi~1"
868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + File.separator + "Test" + File.separator + dots + File.separator
869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            + "longfi~1.tst");
870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dirName2 = f3.getCanonicalPath();
871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals("Test 7: Incorrect Path Returned.", dirName1,
872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            dirName2);
873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (f2 != null) {
877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    f2.delete();
878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (dir2 != null) {
880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir2.delete();
881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                testdir.delete();
883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getName()
889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getName() {
891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File("name.tst");
892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Returned incorrect name", "name.tst", f.getName());
893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File("");
895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Returned incorrect name", "", f.getName());
896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getParent()
902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getParent() {
904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File("p.tst");
905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Incorrect path returned", f.getParent());
906593a2e1667f8923dff875268169bb5dfa4c67befNarayan Kamath        f = new File("/user/home/p.tst");
907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect path returned",
908593a2e1667f8923dff875268169bb5dfa4c67befNarayan Kamath                "/user/home", f.getParent());
909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = new File("/directory");
911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong parent test 1", File.separator, f1.getParent());
912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File("/directory/file");
913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong parent test 2",
914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File.separator + "directory", f1.getParent());
915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File("directory/file");
916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Wrong parent test 3", "directory", f1.getParent());
917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File("/");
918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Wrong parent test 4", f1.getParent());
919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File("directory");
920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Wrong parent test 5", f1.getParent());
921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\' && new File("d:/").isAbsolute()) {
923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = new File("d:/directory");
924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Wrong parent test 1a", "d:" + File.separator, f1.getParent());
925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = new File("d:/directory/file");
926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Wrong parent test 2a",
927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "d:" + File.separator + "directory", f1.getParent());
928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = new File("d:directory/file");
929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Wrong parent test 3a", "d:directory", f1.getParent());
930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = new File("d:/");
931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertNull("Wrong parent test 4a", f1.getParent());
932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = new File("d:directory");
933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Wrong parent test 5a", "d:", f1.getParent());
934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getParentFile()
939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getParentFile() {
941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File("tempfile.tst");
942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Incorrect path returned", f.getParentFile());
943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(tempDirectory, "tempfile1.tmp");
944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File(tempDirectory, "tempfile2.tmp");
945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f3 = new File(tempDirectory, "/a/tempfile.tmp");
946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect File Returned", 0, f.getParentFile().compareTo(
947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2.getParentFile()));
948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Incorrect File Returned", f.getParentFile().compareTo(
949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f3.getParentFile()) != 0);
950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2.delete();
952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f3.delete();
953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#getPath()
957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_getPath() {
959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = System.getProperty("user.home");
960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String fname;
961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1;
962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!base.regionMatches((base.length() - 1), File.separator, 0, 1)) {
963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            base += File.separator;
964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fname = base + "filechk.tst";
966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File(base, "filechk.tst");
967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File("filechk.tst");
968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f3 = new File("c:");
969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f4 = new File(base + "a" + File.separator + File.separator + ".." + File.separator
970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "filechk.tst");
971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("getPath returned incorrect path(f1)",
972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fname, f1.getPath());
973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("getPath returned incorrect path(f2)",
974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "filechk.tst", f2.getPath());
975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("getPath returned incorrect path(f3)", "c:", f3.getPath());
976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("getPath returned incorrect path(f4)",
977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                base + "a" + File.separator + ".." + File.separator + "filechk.tst",
978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f4.getPath());
979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1.delete();
980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2.delete();
981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f3.delete();
982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f4.delete();
983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-444
985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file;
986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String separator = File.separator;
987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        file = new File((File) null, "x/y/z");
989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("x" + separator + "y" + separator + "z", file.getPath());
990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        file = new File((String) null, "x/y/z");
992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("x" + separator + "y" + separator + "z", file.getPath());
993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-829
995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String f1ParentName = "01";
996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1 = new File(f1ParentName, "");
997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(f1ParentName, f1.getPath());
998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String f2ParentName = "0";
1000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f2 = new File(f2ParentName, "");
1001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(-1, f2.compareTo(f1));
1003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, f1.compareTo(f2));
1004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File parent = tempDirectory;
1006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f3 = new File(parent, "");
1007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(parent.getPath(), f3.getPath());
1009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file0 = new File("");
1011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("", file0.getPath());
1012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-3869
1014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Behavior here is system-dependent according to the RI javadoc.
1015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String path1 = new File("", "").getPath();
1016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(path1.equals(File.separator) || path1.isEmpty());
1017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String path2 = new File(new File(""), "").getPath();
1018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(path2.equals(File.separator) || path2.isEmpty());
1019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#hashCode()
1023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_hashCode() {
1025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-53
1026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File mfile = new File("SoMe FiLeNaMe"); // Mixed case
1027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File lfile = new File("some filename"); // Lower case
1028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (mfile.equals(lfile)) {
1030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Assert 0: wrong hashcode", mfile.hashCode() == lfile
1031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .hashCode());
1032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else {
1033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse("Assert 1: wrong hashcode", mfile.hashCode() == lfile
1034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .hashCode());
1035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#isAbsolute()
1040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isAbsolute() {
1042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\') {
1043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f = new File("c:\\test");
1044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f1 = new File("\\test");
1045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // One or the other should be absolute on Windows or CE
1046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Absolute returned false", (f.isAbsolute() && !f1
1047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .isAbsolute())
1048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    || (!f.isAbsolute() && f1.isAbsolute()));
1049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("C:/").isAbsolute());
1051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("f:/").isAbsolute());
1052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("f:\\").isAbsolute());
1053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("f:").isAbsolute());
1054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("K:").isAbsolute());
1055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("\\\\").isAbsolute());
1056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("\\\\\\").isAbsolute());
1057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("\\\\hello").isAbsolute());
1058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("\\").isAbsolute());
1059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("/").isAbsolute());
1060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else {
1061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f = new File("/test");
1062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File f1 = new File("\\test");
1063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Absolute returned false", f.isAbsolute());
1064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse("Absolute returned true", f1.isAbsolute());
1065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue(new File("//test").isAbsolute());
1066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("test").isAbsolute());
1067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("c:/").isAbsolute());
1068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("c:\\").isAbsolute());
1069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("c:").isAbsolute());
1070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("\\").isAbsolute());
1071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertFalse(new File("\\\\").isAbsolute());
1072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Non-Absolute returned true", !new File("../test")
1074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isAbsolute());
1075cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1077cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#isDirectory()
1079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isDirectory() {
1081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = addTrailingSlash(tempDirectory.getPath());
1082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base);
1083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Test 1: Directory Returned False", f.isDirectory());
1084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base + "zxzxzxz" + platformId);
1085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Test 2: (Not Created) Directory Returned True.", !f
1086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .isDirectory());
1087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.mkdir();
1088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 3: Directory Returned False.", f.isDirectory());
1090cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.delete();
1092cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#isFile()
1097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isFile() throws IOException {
1099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(base);
1101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse("Directory Returned True As Being A File.", f.isFile());
1102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        base = addTrailingSlash(base);
1104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = new File(base, platformId + "amiafile");
1105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Non-existent File Returned True", !f.isFile());
1106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileOutputStream fos = new FileOutputStream(f);
1107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.close();
1108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("File returned false", f.isFile());
1109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
1110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_isHidden() throws IOException, InterruptedException {
1113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean onUnix = File.separatorChar == '/';
1114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(onUnix);
1115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // On Unix hidden files are marked with a "." at the beginning
1117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // of the file name.
1118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = File.createTempFile("harmony-test-FileTest_notHidden_", ".tmp");
1119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = File.createTempFile(".harmony-test-FileTest_isHidden_", ".tmp");
1120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(f1.isHidden());
1121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f2.isHidden());
1122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // We can still delete hidden files.
1123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(f2.delete());
1124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f1.delete();
1125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#lastModified()
1129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_lastModified() throws IOException {
1131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(System.getProperty("java.io.tmpdir"), platformId
1132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "lModTest.tst");
1133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
1134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        long lastModifiedTime = f.lastModified();
1135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("LastModified Time Should Have Returned 0.", 0,
1136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                lastModifiedTime);
1137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileOutputStream fos = new FileOutputStream(f);
1138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.close();
1139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.setLastModified(315550800000L);
1140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        lastModifiedTime = f.lastModified();
1141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("LastModified Time Incorrect",
1142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                315550800000L, lastModifiedTime);
1143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
1144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#length()
1148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_length() throws IOException {
1150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, platformId
1151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                + "input.tst");
1152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("File Length Should Have Returned 0.", 0, f.length());
1153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileOutputStream fos = new FileOutputStream(f);
1154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.write(fileString.getBytes());
1155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        fos.close();
1156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect file length returned",
1157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fileString.length(), f.length());
1158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.delete();
1159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // regression test for HARMONY-1497
1161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f = File.createTempFile("test", "tmp");
1162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.deleteOnExit();
1163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        RandomAccessFile raf = new RandomAccessFile(f, "rwd");
1164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        raf.write(0x41);
1165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, f.length());
1166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#list()
1170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_list() throws IOException {
1172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Old test left behind "garbage files" so this time it creates a
1174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // directory that is guaranteed not to already exist (and deletes it
1175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // afterward.)
1176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = null;
1179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir = new File(base, platformId + String.valueOf(dirNumber));
1180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
1182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, String.valueOf(dirNumber));
1184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] flist = dir.list();
1190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Method list() Should Have Returned null.", flist);
1192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Could not create parent directory for list test", dir
1194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .mkdir());
1195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] files = { "mtzz1.xx", "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(
1199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    "Method list() Should Have Returned An Array Of Length 0.",
1200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    0, dir.list().length);
1201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file = new File(dir, "notADir.tst");
1203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(file);
1205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(
1207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        file.list());
1209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
1210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                file.delete();
1211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            flist = dir.list();
1220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (flist.length != files.length) {
1221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("Incorrect list returned");
1222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Checking to make sure the correct files were are listed in the
1225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // array.
1226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean[] check = new boolean[flist.length];
1227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                check[i] = false;
1229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (int j = 0; j < flist.length; j++) {
1232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (flist[j].equals(files[i])) {
1233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        check[i] = true;
1234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        break;
1235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int checkCount = 0;
1239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (check[i] == false) {
1241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    checkCount++;
1242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Invalid file returned in listing", 0, checkCount);
1245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Could not delete parent directory for list test.", dir
1252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .delete());
1253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
1259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#listFiles()
1264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_listFiles() throws IOException, InterruptedException {
1266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Finding a non-existent directory to create.
1268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, platformId + String.valueOf(dirNumber));
1271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Making sure that the directory does not exist.
1272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // If the directory exists, add one to the directory number
1274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // (making it a new directory name.)
1275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
1276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, String.valueOf(dirNumber));
1278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for attempting to call listFiles on a non-existent directory.
1283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("listFiles Should Return Null.", dir.listFiles());
1284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed To Create Parent Directory.", dir.mkdir());
1286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] files = { "1.tst", "2.tst", "3.tst", "" };
1288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.listFiles().length);
1291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file = new File(dir, "notADir.tst");
1293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(file);
1295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(
1297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        file.listFiles());
1299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
1300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                file.delete();
1301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < (files.length - 1); i++) {
1304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new File(dir, "doesNotExist.tst");
1310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File[] flist = dir.listFiles();
1311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to make sure that only the 3 files that were created are
1313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // listed.
1314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Files Returned.", 3, flist.length);
1315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to make sure that listFiles can read hidden files.
1317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean onUnix = File.separatorChar == '/';
1318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean onWindows = File.separatorChar == '\\';
1319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (onWindows) {
1320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                files[3] = "4.tst";
1321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, "4.tst");
1322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Runtime r = Runtime.getRuntime();
1325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Process p = r.exec("attrib +h \"" + f.getPath() + "\"");
1326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                p.waitFor();
1327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (onUnix) {
1329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                files[3] = ".4.tst";
1330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, ".4.tst");
1331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            flist = dir.listFiles();
1335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Files Returned.", 4, flist.length);
1336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Checking to make sure the correct files were are listed in
1338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // the array.
1339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean[] check = new boolean[flist.length];
1340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                check[i] = false;
1342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (int j = 0; j < flist.length; j++) {
1345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (flist[j].getName().equals(files[i])) {
1346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        check[i] = true;
1347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        break;
1348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int checkCount = 0;
1352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (check[i] == false) {
1354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    checkCount++;
1355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Invalid file returned in listing", 0, checkCount);
1358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (onWindows) {
1360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Runtime r = Runtime.getRuntime();
1361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                Process p = r.exec("attrib -h \""
1362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        + new File(dir, files[3]).getPath() + "\"");
1363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                p.waitFor();
1364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Parent Directory Not Deleted.", dir.delete());
1371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
1377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#listFiles(java.io.FileFilter)
1382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_listFilesLjava_io_FileFilter() throws IOException {
1384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = System.getProperty("java.io.tmpdir");
1385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Finding a non-existent directory to create.
1386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File baseDir = new File(base, platformId + String.valueOf(dirNumber));
1389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Making sure that the directory does not exist.
1390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // If the directory exists, add one to the directory number (making
1392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // it a new directory name.)
1393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (baseDir.exists()) {
1394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                baseDir = new File(base, String.valueOf(dirNumber));
1396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Creating a filter that catches directories.
1402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FileFilter dirFilter = new FileFilter() {
1403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public boolean accept(File f) {
1404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return f.isDirectory();
1405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("listFiles Should Return Null.", baseDir
1409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .listFiles(dirFilter));
1410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed To Create Parent Directory.", baseDir.mkdir());
1412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir1 = null;
1414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] files = { "1.tst", "2.tst", "3.tst" };
1415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    baseDir.listFiles(dirFilter).length);
1418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file = new File(baseDir, "notADir.tst");
1420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(file);
1422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(
1424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        file.listFiles(dirFilter));
1426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
1427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                file.delete();
1428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(baseDir, files[i]);
1432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir1 = new File(baseDir, "Temp1");
1436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir1.mkdir();
1437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Creating a filter that catches files.
1439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileFilter fileFilter = new FileFilter() {
1440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                public boolean accept(File f) {
1441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    return f.isFile();
1442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            };
1444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to see if the correct number of directories are returned.
1446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File[] directories = baseDir.listFiles(dirFilter);
1447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Directories Returned.", 1,
1448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    directories.length);
1449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to see if the directory was saved with the correct name.
1451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Directory Returned.", 0, directories[0]
1452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .compareTo(dir1));
1453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Test to see if the correct number of files are returned.
1455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File[] flist = baseDir.listFiles(fileFilter);
1456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Files Returned.",
1457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    files.length, flist.length);
1458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Checking to make sure the correct files were are listed in the
1460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // array.
1461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean[] check = new boolean[flist.length];
1462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                check[i] = false;
1464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (int j = 0; j < flist.length; j++) {
1467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (flist[j].getName().equals(files[i])) {
1468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        check[i] = true;
1469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        break;
1470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int checkCount = 0;
1474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (check[i] == false) {
1476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    checkCount++;
1477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Invalid file returned in listing", 0, checkCount);
1480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(baseDir, files[i]);
1483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir1.delete();
1486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Parent Directory Not Deleted.", baseDir.delete());
1487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(baseDir, files[i]);
1490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir1 != null) {
1493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir1.delete();
1494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            baseDir.delete();
1496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#listFiles(java.io.FilenameFilter)
1501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_listFilesLjava_io_FilenameFilter() throws IOException {
1503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = System.getProperty("java.io.tmpdir");
1504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Finding a non-existent directory to create.
1505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, platformId + String.valueOf(dirNumber));
1508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Making sure that the directory does not exist.
1509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // If the directory exists, add one to the directory number (making
1511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // it a new directory name.)
1512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
1513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, platformId + String.valueOf(dirNumber));
1515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Creating a filter that catches "*.tst" files.
1521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FilenameFilter tstFilter = new FilenameFilter() {
1522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public boolean accept(File f, String fileName) {
1523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return fileName.endsWith(".tst");
1524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("listFiles Should Return Null.", dir.listFiles(tstFilter));
1528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Failed To Create Parent Directory.", dir.mkdir());
1530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] files = { "1.tst", "2.tst", "3.tmp" };
1532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("listFiles Should Return An Array Of Length 0.", 0,
1534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.listFiles(tstFilter).length);
1535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File file = new File(dir, "notADir.tst");
1537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(file);
1539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertNull(
1541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        "listFiles Should Have Returned Null When Used On A File Instead Of A Directory.",
1542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        file.listFiles(tstFilter));
1543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } finally {
1544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                file.delete();
1545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Creating a filter that catches "*.tmp" files.
1554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FilenameFilter tmpFilter = new FilenameFilter() {
1555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                public boolean accept(File f, String fileName) {
1556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    // If the suffix is ".tmp" then send it to the array
1557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (fileName.endsWith(".tmp")) {
1558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        return true;
1559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    } else {
1560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        return false;
1561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            };
1564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Tests to see if the correct number of files were returned.
1566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            File[] flist = dir.listFiles(tstFilter);
1567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Files Passed Through tstFilter.",
1568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    2, flist.length);
1569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < flist.length; i++) {
1570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                assertTrue("File Should Not Have Passed The tstFilter.",
1571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        flist[i].getPath().endsWith(".tst"));
1572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            flist = dir.listFiles(tmpFilter);
1575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Files Passed Through tmpFilter.",
1576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    1, flist.length);
1577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("File Should Not Have Passed The tmpFilter.", flist[0]
1578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .getPath().endsWith(".tmp"));
1579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Parent Directory Not Deleted.", dir.delete());
1585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
1591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#list(java.io.FilenameFilter)
1596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_listLjava_io_FilenameFilter() throws IOException {
1598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Old test left behind "garbage files" so this time it creates a
1600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // directory that is guaranteed not to already exist (and deletes it
1601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // afterward.)
1602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, platformId + String.valueOf(dirNumber));
1605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
1607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, String.valueOf(dirNumber));
1609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        FilenameFilter filter = new FilenameFilter() {
1615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            public boolean accept(File dir, String name) {
1616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                return !name.equals("mtzz1.xx");
1617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        };
1619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] flist = dir.list(filter);
1621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertNull("Method list(FilenameFilter) Should Have Returned Null.",
1622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                flist);
1623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Could not create parent directory for test", dir.mkdir());
1625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] files = { "mtzz1.xx", "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            /*
1629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * Do not return null when trying to use list(Filename Filter) on a
1630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * file rather than a directory. All other "list" methods return
1631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * null for this test case.
1632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             */
1633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            /*
1634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * File file = new File(dir, "notADir.tst"); try { FileOutputStream
1635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * fos = new FileOutputStream(file); fos.close(); } catch
1636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * (IOException e) { fail("Unexpected IOException During Test."); }
1637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * flist = dir.list(filter); assertNull("listFiles Should Have
1638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * Returned Null When Used On A File Instead Of A Directory.",
1639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             * flist); file.delete();
1640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath             */
1641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            flist = dir.list(filter);
1643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Array Of Length 0 Should Have Returned.", 0,
1644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    flist.length);
1645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                FileOutputStream fos = new FileOutputStream(f);
1649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos.close();
1650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            flist = dir.list(filter);
1653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect list returned", flist.length,
1655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    files.length - 1);
1656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Checking to make sure the correct files were are listed in the
1658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // array.
1659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            boolean[] check = new boolean[flist.length];
1660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                check[i] = false;
1662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String[] wantedFiles = { "mtzz2.xx", "mtzz3.yy", "mtzz4.yy" };
1664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < wantedFiles.length; i++) {
1665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                for (int j = 0; j < flist.length; j++) {
1666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    if (flist[j].equals(wantedFiles[i])) {
1667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        check[i] = true;
1668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                        break;
1669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    }
1670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            int checkCount = 0;
1673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < check.length; i++) {
1674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (check[i] == false) {
1675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    checkCount++;
1676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Invalid file returned in listing", 0, checkCount);
1679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Could not delete parent directory for test.", dir
1685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .delete());
1686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            for (int i = 0; i < files.length; i++) {
1688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                File f = new File(dir, files[i]);
1689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.delete();
1690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
1692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#listRoots()
1697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_listRoots() {
1699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File[] roots = File.listRoots();
1700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean onUnix = File.separatorChar == '/';
1701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean onWindows = File.separatorChar == '\\';
1702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (onUnix) {
1703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Incorrect Number Of Root Directories.", 1,
1704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    roots.length);
1705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String fileLoc = roots[0].getPath();
1706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Incorrect Root Directory Returned.", fileLoc
1707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    .startsWith(File.separator));
1708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else if (onWindows) {
1709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Need better test for Windows
1710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Incorrect Number Of Root Directories.",
1711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    roots.length > 0);
1712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#mkdir()
1717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_mkdir() throws IOException {
1719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Old test left behind "garbage files" so this time it creates a
1721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // directory that is guaranteed not to already exist (and deletes it
1722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // afterward.)
1723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int dirNumber = 1;
1724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean dirExists = true;
1725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, String.valueOf(dirNumber));
1726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dirExists) {
1727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dir.exists()) {
1728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirNumber++;
1729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir = new File(base, String.valueOf(dirNumber));
1730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } else {
1731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dirExists = false;
1732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("mkdir failed", dir.mkdir());
1736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("mkdir worked but exists check failed", dir.exists());
1737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.deleteOnExit();
1738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String longDirName = "abcdefghijklmnopqrstuvwx";// 24 chars
1740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String newbase = new String(dir + File.separator);
1741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuilder sb = new StringBuilder(dir + File.separator);
1742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        StringBuilder sb2 = new StringBuilder(dir + File.separator);
1743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test make a long path
1745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dir.getCanonicalPath().length() < 256 - longDirName.length()) {
1746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.append(longDirName + File.separator);
1747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir = new File(sb.toString());
1748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir failed", dir.mkdir());
1749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir worked but exists check failed", dir.exists());
1750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.deleteOnExit();
1751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dir.getCanonicalPath().length() < 256) {
1754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb.append(0);
1755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir = new File(sb.toString());
1756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath().length() + " failed",
1757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.mkdir());
1758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath().length()
1759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " worked but exists check failed", dir.exists());
1760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.deleteOnExit();
1761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir = new File(sb2.toString());
1763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test make many paths
1764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (dir.getCanonicalPath().length() < 256) {
1765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            sb2.append(0);
1766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir = new File(sb2.toString());
1767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath().length() + " failed",
1768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.mkdir());
1769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath().length()
1770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " worked but exists check failed", dir.exists());
1771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.deleteOnExit();
1772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-3656
1775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] ss = { "dir\u3400", "abc", "abc@123", "!@#$%^&",
1776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "~\u4E00!\u4E8C@\u4E09$", "\u56DB\u4E94\u516D",
1777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "\u4E03\u516B\u4E5D" };
1778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < ss.length; i++) {
1779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir = new File(newbase, ss[i]);
1780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath() + " failed",
1781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.mkdir());
1782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("mkdir " + dir.getCanonicalPath()
1783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    + " worked but exists check failed",
1784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    dir.exists());
1785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.deleteOnExit();
1786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#mkdir()
1791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * <p/>
1792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * HARMONY-6041
1793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_mkdir_special_unicode() throws IOException {
1795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File specialDir = new File(this.tempDirectory, "\u5C73");
1796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int i = 0;
1797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        while (specialDir.exists()) {
1798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            specialDir = new File("\u5C73" + i);
1799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            ++i;
1800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertFalse(specialDir.exists());
1802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(specialDir.mkdir());
1803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(specialDir.exists());
1804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#mkdirs()
1808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_mkdirs() {
1810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String userHome = addTrailingSlash(tempDirectory.getPath());
1811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(userHome + "mdtest" + platformId + File.separator + "mdtest2",
1812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                "p.tst");
1813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File g = new File(userHome + "mdtest" + platformId + File.separator + "mdtest2");
1814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File h = new File(userHome + "mdtest" + platformId);
1815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        f.mkdirs();
1816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Base Directory not created", h.exists());
1818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Directories not created", g.exists());
1819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("File not created", f.exists());
1820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.delete();
1822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            g.delete();
1823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            h.delete();
1824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#renameTo(java.io.File)
1829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_renameToLjava_io_File() throws IOException {
1831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String base = tempDirectory.getPath();
1832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(base, platformId);
1833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir.mkdir();
1834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(dir, "xxx.xxx");
1835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File rfile = new File(dir, "yyy.yyy");
1836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = new File(dir, "zzz.zzz");
1837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileOutputStream fos = new FileOutputStream(f);
1839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.write(fileString.getBytes());
1840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
1841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            long lengthOfFile = f.length();
1842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            rfile.delete(); // in case it already exists
1844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 1: File Rename Failed", f.renameTo(rfile));
1846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 2: File Rename Failed.", rfile.exists());
1847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 3: Size Of File Changed.",
1848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    lengthOfFile, rfile.length());
1849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos = new FileOutputStream(rfile);
1851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
1852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.delete(); // in case it already exists
1854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 4: File Rename Failed", rfile.renameTo(f2));
1855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Test 5: File Rename Failed.", f2.exists());
1856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f.delete();
1858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            rfile.delete();
1859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.delete();
1860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.delete();
1861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#setLastModified(long)
1866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
1867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_setLastModifiedJ() throws IOException {
1868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = null;
1869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
18702b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            f1 = File.createTempFile("harmony-test-FileTest_setLastModified", ".tmp");
1871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            long orgTime = f1.lastModified();
1872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Subtracting 100 000 milliseconds from the orgTime of File f1
1873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.setLastModified(orgTime - 100000);
1874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            long lastModified = f1.lastModified();
1875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 1: LastModifed time incorrect",
1876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    orgTime - 100000, lastModified);
1877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Subtracting 10 000 000 milliseconds from the orgTime of File f1
1878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.setLastModified(orgTime - 10000000);
1879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lastModified = f1.lastModified();
1880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 2: LastModifed time incorrect",
1881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    orgTime - 10000000, lastModified);
1882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Adding 100 000 milliseconds to the orgTime of File f1
1883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.setLastModified(orgTime + 100000);
1884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lastModified = f1.lastModified();
1885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 3: LastModifed time incorrect",
1886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    orgTime + 100000, lastModified);
1887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Adding 10 000 000 milliseconds from the orgTime of File f1
1888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.setLastModified(orgTime + 10000000);
1889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lastModified = f1.lastModified();
1890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 4: LastModifed time incorrect",
1891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    orgTime + 10000000, lastModified);
1892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Trying to set time to an exact number
1893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1.setLastModified(315550800000L);
1894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            lastModified = f1.lastModified();
1895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Test 5: LastModified time incorrect",
1896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    315550800000L, lastModified);
1897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String osName = System.getProperty("os.name", "unknown");
1898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (osName.equals("Windows 2000") || osName.equals("Windows NT")) {
1899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Trying to set time to a large exact number
1900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                boolean result = f1.setLastModified(4354837199000L);
1901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                long next = f1.lastModified();
1902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Dec 31 23:59:59 EST 2107 is overflow on FAT file systems, and
1903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // the call fails
1904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                if (result) {
1905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                    assertEquals("Test 6: LastModified time incorrect",
1906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                            4354837199000L, next);
1907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                }
1908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Trying to set time to a negative number
1910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.setLastModified(-25);
1912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IllegalArgumentException Not Thrown.");
1913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IllegalArgumentException e) {
1914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f1 != null) {
1917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
1918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
1920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
1921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
1923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#setReadOnly()
1924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
19252b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath    public void test_setReadOnly() throws Exception {
1926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f1 = null;
1927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f2 = null;
19281aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath        if (Libcore.os.getuid() == 0) {
19291aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath            System.err.println("Skipping #test_setReadOnly: test runner is root");
19301aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath            return;
19311aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath        }
19321aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath
1933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
1934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f1 = File.createTempFile("harmony-test-FileTest_setReadOnly", ".tmp");
1935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2 = File.createTempFile("harmony-test-FileTest_setReadOnly", ".tmp");
1936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Assert is flawed because canWrite does not work.
1937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // assertTrue("File f1 Is Set To ReadOnly." , f1.canWrite());
19381aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath            assertTrue(f1.setReadOnly());
19391aa5e702e52ee7a0337b8022f2c2a4d17801d0d2Narayan Kamath            assertFalse(f1.canWrite());
1940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Assert is flawed because canWrite does not work.
1941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // assertTrue("File f1 Is Not Set To ReadOnly." , !f1.canWrite());
1942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Attempt to write to a file that is setReadOnly.
1944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new FileOutputStream(f1);
1945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IOException not thrown.");
1946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IOException e) {
1947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
1948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
19492b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath
19502b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            Libcore.os.chmod(f1.getAbsolutePath(), 666);
19512b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath
1952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Assert is flawed because canWrite does not work.
1953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // assertTrue("File f1 Is Set To ReadOnly." , f1.canWrite());
1954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            FileOutputStream fos = new FileOutputStream(f1);
1955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.write(fileString.getBytes());
1956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
19572b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            assertEquals(fileString.length(), f1.length());
19582b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            assertTrue(f1.delete());
1959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
1960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Assert is flawed because canWrite does not work.
1961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // assertTrue("File f2 Is Set To ReadOnly." , f2.canWrite());
1962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos = new FileOutputStream(f2);
1963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Write to a file.
1964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.write(fileString.getBytes());
1965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
1966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.setReadOnly();
1967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Assert is flawed because canWrite does not work.
1968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // assertTrue("File f2 Is Not Set To ReadOnly." , !f2.canWrite());
1969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            try {
1970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Attempt to write to a file that has previously been written
1971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // to.
1972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // and is now set to read only.
1973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fos = new FileOutputStream(f2);
1974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                fail("IOException not thrown.");
1975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            } catch (IOException e) {
1976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                // Expected
1977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
19782b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath
19792b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            Libcore.os.chmod(f2.getAbsolutePath(), 666);
19802b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            assertTrue(f2.canWrite());
1981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos = new FileOutputStream(f2);
1982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.write(fileString.getBytes());
1983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fos.close();
1984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.setReadOnly();
19852b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath            assertTrue(f2.delete());
19862b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath
1987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Similarly, trying to delete a read-only directory should succeed
1988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2 = new File(tempDirectory, "deltestdir");
1989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.mkdir();
1990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            f2.setReadOnly();
1991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Directory f2 Did Not Delete", f2.delete());
1992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertTrue("Directory f2 Did Not Delete", !f2.exists());
1993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } finally {
1994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f1 != null) {
1995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f1.delete();
1996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
1997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (f2 != null) {
1998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f2.delete();
1999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#toString()
2005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toString() {
2007e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath        String fileName = System.getProperty("user.home");
2008e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath        if (!fileName.endsWith(File.separator)) {
2009e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath            fileName += File.separator;
2010e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath        }
2011e10c61bb13373b95ba857cc3af60f94b9941ab9eNarayan Kamath        fileName += "input.tst";
2012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(fileName);
2013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect string returned", fileName, f.toString());
2014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (File.separatorChar == '\\') {
2016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            String result = new File("c:\\").toString();
2017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals("Removed backslash", "c:\\", result);
2018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#toURI()
2023cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2024cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toURI() throws URISyntaxException {
2025cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Need a directory that exists
2026cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = tempDirectory;
2027cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2028cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for toURI when the file is a directory.
2029cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String newURIPath = dir.getAbsolutePath();
2030cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newURIPath = newURIPath.replace(File.separatorChar, '/');
2031cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!newURIPath.startsWith("/")) {
2032cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            newURIPath = "/" + newURIPath;
2033cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2034cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!newURIPath.endsWith("/")) {
2035cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            newURIPath += '/';
2036cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2037cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2038cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URI uri = dir.toURI();
2039cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1A: Incorrect URI Returned.", dir.getAbsoluteFile(), new File(uri));
2040cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1B: Incorrect URI Returned.",
2041cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new URI("file", null, newURIPath, null, null), uri);
2042cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2043cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for toURI with a file name with illegal chars.
2044cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(dir, "te% \u20ac st.tst");
2045cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newURIPath = f.getAbsolutePath();
2046cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newURIPath = newURIPath.replace(File.separatorChar, '/');
2047cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!newURIPath.startsWith("/")) {
2048cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            newURIPath = "/" + newURIPath;
2049cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2050cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2051cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uri = f.toURI();
2052cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2A: Incorrect URI Returned.",
2053cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.getAbsoluteFile(), new File(uri));
2054cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2B: Incorrect URI Returned.",
2055cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new URI("file", null, newURIPath, null, null), uri);
2056cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2057cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-3207
2058cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir = new File(""); // current directory
2059cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        uri = dir.toURI();
2060cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Test current dir: URI does not end with slash.", uri
2061cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .toString().endsWith("/"));
2062cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2063cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2064cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2065cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#toURL()
2066cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2067cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toURL() throws MalformedURLException {
2068cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Need a directory that exists
2069cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = tempDirectory;
2070cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2071cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for toURL when the file is a directory.
2072cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String newDirURL = dir.getAbsolutePath();
2073cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newDirURL = newDirURL.replace(File.separatorChar, '/');
2074cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (newDirURL.startsWith("/")) {
2075ca51934b62bc5af84596f74ae451a09b932330efPrzemyslaw Szczepaniak            newDirURL = "file://" + newDirURL;
2076cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else {
2077ca51934b62bc5af84596f74ae451a09b932330efPrzemyslaw Szczepaniak            newDirURL = "file:///" + newDirURL;
2078cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2079cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!newDirURL.endsWith("/")) {
2080cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            newDirURL += '/';
2081cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2082cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 1: Incorrect URL Returned.",
2083cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                dir.toURL().toString(), newDirURL);
2084cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2085cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Test for toURL with a file.
2086cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(dir, "test.tst");
2087cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String newURL = f.getAbsolutePath();
2088cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newURL = newURL.replace(File.separatorChar, '/');
2089cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (newURL.startsWith("/")) {
2090ca51934b62bc5af84596f74ae451a09b932330efPrzemyslaw Szczepaniak            newURL = "file://" + newURL;
2091cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } else {
2092ca51934b62bc5af84596f74ae451a09b932330efPrzemyslaw Szczepaniak            newURL = "file:///" + newURL;
2093cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2094cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Test 2: Incorrect URL Returned.",
2095cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                f.toURL().toString(), newURL);
2096cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2097cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression test for HARMONY-3207
2098cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        dir = new File(""); // current directory
2099cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        newDirURL = dir.toURL().toString();
2100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Test current dir: URL does not end with slash.", newDirURL
2101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .endsWith("/"));
2102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#toURI()
2106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toURI2() throws URISyntaxException {
2108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, "a/b/c/../d/e/./f");
2109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String path = f.getAbsolutePath();
2111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        path = path.replace(File.separatorChar, '/');
2112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!path.startsWith("/")) {
2113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            path = "/" + path;
2114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URI uri1 = new URI("file", null, path, null);
2117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URI uri2 = f.toURI();
2118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("uris not equal", uri1, uri2);
2119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.File#toURL()
2123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_toURL2() throws MalformedURLException {
2125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File f = new File(tempDirectory, "a/b/c/../d/e/./f");
2126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String path = f.getAbsolutePath();
2128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        path = path.replace(File.separatorChar, '/');
2129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!path.startsWith("/")) {
2130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            path = "/" + path;
2131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url1 = new URL("file", "", path);
2134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        URL url2 = f.toURL();
2135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("urls not equal", url1, url2);
2136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization
2140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_objectStreamClass_getFields() throws Exception {
2142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // Regression for HARMONY-2674
2143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ObjectStreamClass objectStreamClass = ObjectStreamClass
2144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .lookup(File.class);
2145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ObjectStreamField[] objectStreamFields = objectStreamClass.getFields();
2146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(1, objectStreamFields.length);
2147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ObjectStreamField objectStreamField = objectStreamFields[0];
2148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("path", objectStreamField.getName());
2149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals(String.class, objectStreamField.getType());
2150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Regression test for HARMONY-4493
2153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_list_withUnicodeFileName() throws Exception {
21542b7c83942a5e28c53698232182193d5118028e6cNarayan Kamath        File rootDir = new File(System.getProperty("java.io.tmpdir")).getAbsoluteFile();
2155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String dirName = new String("src\u3400");
2156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File dir = new File(rootDir, dirName);
2157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (!dir.exists()) {
2158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.mkdir();
2159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            dir.deleteOnExit();
2160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        boolean exist = false;
2162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        String[] fileNames = rootDir.list();
2163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (String fileName : fileNames) {
2164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            if (dirName.equals(fileName)) {
2165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                exist = true;
2166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                break;
2167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            }
2168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
2169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue(exist);
2170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization/deserialization.
2174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_serialization_self() throws Exception {
2176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File testFile = new File("test.ser");
2177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifySelf(testFile);
2178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
2180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
2181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * serialization/deserialization compatibility with RI.
2182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
2183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_serialization_compatibility() throws Exception {
2184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        File file = new File("FileTest.golden.ser");
2185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        SerializationTest.verifyGolden(this, file);
2186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
2187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
2188