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.BufferedOutputStream;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayOutputStream;
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException;
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.OutputStream;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class BufferedOutputStreamTest extends junit.framework.TestCase {
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private java.io.OutputStream os;
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    java.io.ByteArrayOutputStream baos;
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    java.io.ByteArrayInputStream bais;
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public String fileString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_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_java_io_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";
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#BufferedOutputStream(java.io.OutputStream)
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_OutputStream() throws IOException {
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        baos = new java.io.ByteArrayOutputStream();
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new java.io.BufferedOutputStream(baos);
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes(), 0, 500);
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#BufferedOutputStream(java.io.OutputStream,
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     *        int)
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_ConstructorLjava_io_OutputStreamI() throws IOException {
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        baos = new java.io.ByteArrayOutputStream();
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new java.io.BufferedOutputStream(baos, 1024);
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes(), 0, 500);
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_flush_Constructor_NullStream() throws IOException {
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream buffos = new java.io.BufferedOutputStream(null);
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buffos.flush();
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buffos.close();
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos = new java.io.BufferedOutputStream(null, 10);
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buffos.flush();
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buffos.close();
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new java.io.BufferedOutputStream(null, 0);
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new java.io.BufferedOutputStream(null, -1);
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw IllegalArgumentException");
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (IllegalArgumentException e) {
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#flush()
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_flush() throws IOException {
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        baos = new ByteArrayOutputStream();
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new java.io.BufferedOutputStream(baos, 600);
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes(), 0, 500);
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.flush();
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 500,
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                ((ByteArrayOutputStream) baos).size());
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    private static class MockOutputStream extends OutputStream {
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] written;
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        int count;
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public MockOutputStream(int size) {
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            written = new byte[size];
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            count = 0;
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public void write(int b) {
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            written[count++] = (byte) b;
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        public String getWritten() {
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            return new String(written, 0, count);
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write$BII() throws IOException {
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new BufferedOutputStream(baos = new ByteArrayOutputStream(), 512);
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes(), 0, 500);
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais = new ByteArrayInputStream(baos.toByteArray());
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 0, bais.available());
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.flush();
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais = new ByteArrayInputStream(baos.toByteArray());
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 500, bais.available());
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write(fileString.getBytes(), 500, 513);
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais = new ByteArrayInputStream(baos.toByteArray());
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertTrue("Bytes not written when buffer full",
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                bais.available() >= 1000);
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] wbytes = new byte[1013];
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais.read(wbytes, 0, 1013);
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect bytes written", new String(wbytes, 0,
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                wbytes.length), fileString.substring(0, 1013));
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // regression test for HARMONY-4177
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        MockOutputStream mos = new MockOutputStream(5);
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream bos = new BufferedOutputStream(mos, 3);
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write("a".getBytes());
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write("bcde".getBytes());
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Large data should be written directly", "abcde", mos
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .getWritten());
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        mos = new MockOutputStream(4);
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos = new BufferedOutputStream(mos, 3);
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write("ab".getBytes());
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write("cd".getBytes());
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Should flush before write", "ab", mos.getWritten());
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_$BII_Exception() throws IOException {
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        OutputStream bos = new BufferedOutputStream(new ByteArrayOutputStream());
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] nullByteArray = null;
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] byteArray = new byte[10];
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, -1);
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 0);
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 1);
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, -1);
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 0);
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 1);
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, -1);
214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 0);
221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 1);
228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, -1);
235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 0);
242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 1);
249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, -1);
256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, byteArray.length + 1);
263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 1, byteArray.length);
270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, byteArray.length);
277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length, -1);
284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, byteArray.length, 0);
289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length, 1);
291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, 0);
297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, 1);
298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, byteArray.length - 1);
299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, byteArray.length);
300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 1, -1);
303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, 0);
309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, 1);
310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, byteArray.length, 0);
312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 0);
315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 1);
322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.close();
328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, -1);
331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail();
3322a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IOException expected) {
3332a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IndexOutOfBoundsException expected) {
334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(null, -1, -1);
3382a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
3392a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IOException expected) {
3402a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(null, 0, 1);
3452a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            fail();
3462a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IOException expected) {
3472a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (NullPointerException expected) {
348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_$BII_NullStream_NullArray() throws IOException {
355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        OutputStream bos = new BufferedOutputStream(null);
356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] nullByteArray = null;
357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, -1);
360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, -1);
367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, -1);
374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 0);
381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 0);
388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 0);
395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 1);
402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 1);
409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 1);
416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_$BII_NullStream_NullArray_Size() throws IOException {
426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        OutputStream bos = new BufferedOutputStream(null, 1);
427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] nullByteArray = null;
428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, -1);
431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, -1);
438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, -1);
445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 0);
452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 0);
459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 0);
466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, -1, 1);
473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 0, 1);
480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(nullByteArray, 1, 1);
487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_$BII_NullStream() throws IOException {
497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream bos = new BufferedOutputStream(null);
498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] byteArray = new byte[10];
499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, -1);
502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, -1);
509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 1, -1);
516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 0);
523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, 0);
529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, 0);
531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, byteArray.length, 0);
533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 0);
536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 1);
543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, 1);
549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, 1);
550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, byteArray.length);
552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 1);
555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(byte[], int, int)
563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_$BII_NullStream_Size() throws IOException {
565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream bos = new BufferedOutputStream(null, 1);
566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] byteArray = new byte[10];
567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, -1);
570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, -1);
577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 1, -1);
584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 0);
591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 0, 0);
597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, 1, 0);
599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.write(byteArray, byteArray.length, 0);
601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 0);
604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw ArrayIndexOutOfBoundsException");
605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (ArrayIndexOutOfBoundsException e) {
606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, -1, 1);
611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, 1);
618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 0, byteArray.length);
625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, 1, 1);
632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bos.write(byteArray, byteArray.length + 1, 1);
639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // expected
642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.io.BufferedOutputStream#write(int)
647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_writeI() throws IOException {
649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        baos = new java.io.ByteArrayOutputStream();
650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os = new java.io.BufferedOutputStream(baos);
651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.write('t');
652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais = new java.io.ByteArrayInputStream(baos.toByteArray());
653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Byte written, not buffered", 0, bais.available());
654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        os.flush();
655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais = new java.io.ByteArrayInputStream(baos.toByteArray());
656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Byte not written after flush", 1, bais.available());
657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] wbytes = new byte[1];
658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bais.read(wbytes, 0, 1);
659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Incorrect byte written", 't', wbytes[0]);
660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_Close() throws IOException {
663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream buffos = new BufferedOutputStream(
664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                new ByteArrayOutputStream());
665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(new byte[0]);
666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            buffos.write(null);
668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("should throw NullPointerException");
669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            // Expected
671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer = "1234567890".getBytes();
673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(Integer.MIN_VALUE);
675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(Integer.MAX_VALUE);
676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 10);
677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.close();
680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_Scenario1() throws IOException {
683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayInputStream byteArrayis = null;
685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer = "1234567890".getBytes("UTF-8");
686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 10);
688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 10);
689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 10, byteArrayis.available());
691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 10, byteArrayis
694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 10);
700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 20, byteArrayis.available());
702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 20, byteArrayis
705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 10);
714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 30, byteArrayis.available());
716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 30, byteArrayis
719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_Scenario2() throws IOException {
732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayInputStream byteArrayis = null;
734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer = "1234567890".getBytes("UTF-8");
735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 20);
737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 10);
738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 0, byteArrayis.available());
740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 10, byteArrayis
743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer2 = new byte[] { 'a', 'b', 'c', 'd' };
749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer2, 0, 4);
750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 10, byteArrayis.available());
752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 14, byteArrayis
755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 4; i++) {
760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer2[i], byteArrayis.read());
761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer3 = new byte[] { 'e', 'f', 'g', 'h', 'i' };
764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer3, 0, 5);
765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 14, byteArrayis.available());
767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 19, byteArrayis
770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 10; i++) {
772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 4; i++) {
775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer2[i], byteArrayis.read());
776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 5; i++) {
778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer3[i], byteArrayis.read());
779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(new byte[] { 'j', 'k' });
782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 19, byteArrayis.available());
784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 21, byteArrayis
787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.close();
790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_write_Scenario3() throws IOException {
793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        ByteArrayInputStream byteArrayis = null;
795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byte[] buffer = "1234567890".getBytes("UTF-8");
796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 5);
798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 4);
799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 0, byteArrayis.available());
801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 4, byteArrayis
804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 4; i++) {
806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.write(buffer, 0, 5);
810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes written, not buffered", 9, byteArrayis.available());
812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        buffos.flush();
813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("Bytes not written after flush", 9, byteArrayis
815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes                .available());
816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 4; i++) {
817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        for (int i = 0; i < 5; i++) {
820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            assertEquals(buffer[i], byteArrayis.read());
821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    // Regression test for flush on closed stream
825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_flush_on_closed_stream() throws IOException {
8262a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        BufferedOutputStream bos = new BufferedOutputStream(new ByteArrayOutputStream());
827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        bos.close();
8282a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        try {
8292a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes            bos.flush(); // RI does not throw exception
8302a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        } catch (IOException expected) { // but Android does
8312a68e06b23ceb5b401d5bc784e6882e71c662caeElliott Hughes        }
832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Tears down the fixture, for example, close a network connection. This
836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * method is called after a test is executed.
837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    protected void tearDown() throws IOException {
839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (bais != null) {
840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            bais.close();
841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (os != null) {
843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            os.close();
844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        if (baos != null) {
846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            baos.close();
847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
850