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
83087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0
103087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott 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, WITHOUT
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * License for the specific language governing permissions and limitations under
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 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.FileDescriptor;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileInputStream;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileNotFoundException;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.FileOutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class FileOutputStreamTest extends TestCase {
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public String fileName;
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    FileOutputStream fos;
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    FileInputStream fis;
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    File f;
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    byte[] ibuf = new byte[4096];
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott 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_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_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";
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    byte[] bytes;
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#FileOutputStream(java.io.File)
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_File() throws IOException {
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(fileName = System.getProperty("user.home"), "fos.tst");
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f);
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#FileOutputStream(java.io.FileDescriptor)
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_FileDescriptor() throws IOException {
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(fileName = System.getProperty("user.home"), "fos.tst");
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = f.getAbsolutePath();
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(fileName);
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write('l');
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis = new FileInputStream(fileName);
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(fis.getFD());
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis.close();
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#FileOutputStream(java.lang.String)
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_String() throws IOException {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(fileName = System.getProperty("user.home"), "fos.tst");
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = f.getAbsolutePath();
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(fileName);
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-4012
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new FileOutputStream("nul");
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#FileOutputStream(java.lang.String,
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        boolean)
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_StringZ() throws IOException {
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "fos.tst");
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath(), false);
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write("HI".getBytes(), 0, 2);
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath(), true);
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(fileString.getBytes());
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buf = new byte[fileString.length() + 2];
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis = new FileInputStream(f.getPath());
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis.read(buf, 0, buf.length);
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Failed to create appending stream", new String(buf, 0,
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                buf.length).equals("HI" + fileString));
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#FileOutputStream(java.lang.String)
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_lang_String_I() throws IOException {
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos = new FileOutputStream("");
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw FileNotFoundException.");
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (FileNotFoundException e) {
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (fos != null) {
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos = new FileOutputStream(new File(""));
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw FileNotFoundException.");
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (FileNotFoundException e) {
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            if (fos != null) {
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fos.close();
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            }
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#close()
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_close() throws IOException {
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "output.tst");
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath());
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(fileString.getBytes());
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Close test failed - wrote to closed stream");
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IOException e) {
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#getFD()
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getFD() throws IOException {
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(fileName = System.getProperty("user.home"), "testfd");
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fileName = f.getAbsolutePath();
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned invalid fd", fos.getFD().valid());
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Returned invalid fd", !fos.getFD().valid());
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#write(byte[])
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write$B() throws IOException {
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "output.tst");
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath());
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(fileString.getBytes());
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis = new FileInputStream(f.getPath());
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[4000];
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis.read(rbytes, 0, fileString.length());
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect string returned", new String(rbytes, 0,
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                fileString.length()).equals(fileString));
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#write(byte[], int, int)
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write$BII() throws IOException {
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "output.tst");
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath());
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(fileString.getBytes(), 0, fileString.length());
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis = new FileInputStream(f.getPath());
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte rbytes[] = new byte[4000];
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis.read(rbytes, 0, fileString.length());
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Incorrect bytes written", new String(rbytes, 0, fileString
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .length()).equals(fileString));
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression test for HARMONY-285
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File file = new File("FileOutputStream.tmp");
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        file.deleteOnExit();
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream out = new FileOutputStream(file);
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            out.write(null, 0, 0);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("Should throw NullPointerException");
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } finally {
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            out.close();
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            file.delete();
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#write(int)
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_writeI() throws IOException {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "output.tst");
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath());
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write('t');
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fis = new FileInputStream(f.getPath());
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect char written", 't', fis.read());
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#write(byte[], int, int)
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write$BII2() throws IOException {
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-437
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        f = new File(System.getProperty("user.home"), "output.tst");
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(f.getPath());
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(null, 1, 1);
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("NullPointerException must be thrown");
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(new byte[1], -1, 1);
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException must be thrown if off <0");
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(new byte[1], 0, -1);
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException must be thrown if len <0");
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(new byte[1], 0, 5);
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException must be thrown if off+len > b.length");
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(new byte[10], Integer.MAX_VALUE, 5);
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException expected");
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.write(new byte[10], 5, Integer.MAX_VALUE);
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("IndexOutOfBoundsException expected");
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IndexOutOfBoundsException e) {
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#write(byte[], int, int)
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write$BII3() throws IOException {
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-834
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // no exception expected
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        new FileOutputStream(new FileDescriptor()).write(new byte[1], 0, 0);
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.FileOutputStream#getChannel()
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel() throws IOException {
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-508
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile);
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.flush();
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream f = new FileOutputStream(tmpfile, true);
2733087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        // Harmony expected 10, but the RI and Android report 0.
2743087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        assertEquals(0, f.getChannel().position());
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel_Append() throws IOException {
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, true);
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(20, fos.getChannel().position());
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(30, fos.getChannel().position());
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.getChannel().position();
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ClosedChannelException");
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (java.nio.channels.ClosedChannelException e){
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel_UnAppend() throws IOException {
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, false);
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(20, fos.getChannel().position());
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(30, fos.getChannel().position());
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.getChannel().position();
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ClosedChannelException");
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (java.nio.channels.ClosedChannelException e){
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel_Unappend_Unappend() throws IOException {
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, false);
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(tmpfile, false);
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel_Unappend_Append() throws IOException {
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, false);
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(tmpfile, true);
3433087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        // Harmony expected 10, but the RI and Android report 0.
3443087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        assertEquals(0, fos.getChannel().position());
345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChannel_Append_Unappend() throws IOException {
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, true);
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
3563087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(tmpfile, false);
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_getChanne_Append_Append() throws IOException {
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        File tmpfile = File.createTempFile("FileOutputStream", "tmp");
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        tmpfile.deleteOnExit();
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        FileOutputStream fos = new FileOutputStream(tmpfile, true);
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(0, fos.getChannel().position());
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.write(bytes);
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals(10, fos.getChannel().position());
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
3703087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos = new FileOutputStream(tmpfile, true);
3723087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        // Harmony expected 10, but the RI and Android report 0.
3733087daf498cdd64fb87f4f54b3e65661d0a6bf59Elliott Hughes        assertEquals(0, fos.getChannel().position());
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        fos.close();
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void setUp() {
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bytes = new byte[10];
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < bytes.length; i++) {
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bytes[i] = (byte) i;
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method is called after a test is executed.
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    @Override
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() throws Exception {
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super.tearDown();
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (f != null) {
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            f.delete();
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (fis != null) {
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fis.close();
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (fos != null) {
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fos.close();
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
402