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