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