1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/*
2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Licensed to the Apache Software Foundation (ASF) under one or more
3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  contributor license agreements.  See the NOTICE file distributed with
4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  this work for additional information regarding copyright ownership.
5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  The ASF licenses this file to You under the Apache License, Version 2.0
6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  (the "License"); you may not use this file except in compliance with
7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  the License.  You may obtain a copy of the License at
8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *     http://www.apache.org/licenses/LICENSE-2.0
10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *
11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  Unless required by applicable law or agreed to in writing, software
12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  distributed under the License is distributed on an "AS IS" BASIS,
13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  See the License for the specific language governing permissions and
15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *  limitations under the License.
16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */
17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io;
19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.BufferedOutputStream;
21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayInputStream;
22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayOutputStream;
23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException;
24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.OutputStream;
25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class BufferedOutputStreamTest extends junit.framework.TestCase {
27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private java.io.OutputStream os;
29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    java.io.ByteArrayOutputStream baos;
31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    java.io.ByteArrayInputStream bais;
33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    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";
35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#BufferedOutputStream(java.io.OutputStream)
38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_OutputStream() throws IOException {
40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        baos = new java.io.ByteArrayOutputStream();
41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new java.io.BufferedOutputStream(baos);
42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write(fileString.getBytes(), 0, 500);
43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#BufferedOutputStream(java.io.OutputStream,
47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     *int)
48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_ConstructorLjava_io_OutputStreamI() throws IOException {
50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        baos = new java.io.ByteArrayOutputStream();
51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new java.io.BufferedOutputStream(baos, 1024);
52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write(fileString.getBytes(), 0, 500);
53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_flush_Constructor_NullStream() throws IOException {
56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream buffos = new java.io.BufferedOutputStream(null);
57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffos.flush();
59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffos.close();
65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos = new java.io.BufferedOutputStream(null, 10);
71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffos.flush();
73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffos.close();
79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new java.io.BufferedOutputStream(null, 0);
86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            new java.io.BufferedOutputStream(null, -1);
92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw IllegalArgumentException");
93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IllegalArgumentException e) {
94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#flush()
100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_flush() throws IOException {
102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        baos = new ByteArrayOutputStream();
103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new java.io.BufferedOutputStream(baos, 600);
104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write(fileString.getBytes(), 0, 500);
105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.flush();
106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 500,
107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                ((ByteArrayOutputStream) baos).size());
108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    private static class MockOutputStream extends OutputStream {
111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] written;
112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        int count;
113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public MockOutputStream(int size) {
115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            written = new byte[size];
116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            count = 0;
117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public void write(int b) {
120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            written[count++] = (byte) b;
121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        public String getWritten() {
124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            return new String(written, 0, count);
125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write$BII() throws IOException {
132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new BufferedOutputStream(baos = new ByteArrayOutputStream(), 512);
133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write(fileString.getBytes(), 0, 500);
134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais = new ByteArrayInputStream(baos.toByteArray());
135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 0, bais.available());
136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.flush();
137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais = new ByteArrayInputStream(baos.toByteArray());
138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 500, bais.available());
139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write(fileString.getBytes(), 500, 513);
140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais = new ByteArrayInputStream(baos.toByteArray());
141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertTrue("Bytes not written when buffer full",
142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                bais.available() >= 1000);
143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] wbytes = new byte[1013];
144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais.read(wbytes, 0, 1013);
145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect bytes written", new String(wbytes, 0,
146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                wbytes.length), fileString.substring(0, 1013));
147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        // regression test for HARMONY-4177
149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        MockOutputStream mos = new MockOutputStream(5);
150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream bos = new BufferedOutputStream(mos, 3);
151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write("a".getBytes());
152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write("bcde".getBytes());
153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Large data should be written directly", "abcde", mos
154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .getWritten());
155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        mos = new MockOutputStream(4);
156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos = new BufferedOutputStream(mos, 3);
157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write("ab".getBytes());
158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write("cd".getBytes());
159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Should flush before write", "ab", mos.getWritten());
160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_$BII_Exception() throws IOException {
166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream bos = new BufferedOutputStream(new ByteArrayOutputStream());
167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] nullByteArray = null;
168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] byteArray = new byte[10];
169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, -1);
172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 0);
179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 1);
186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, -1);
193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 0);
200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 1);
207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, -1);
214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 0);
221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 1);
228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, -1);
235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 0);
242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 1);
249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, -1);
256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, byteArray.length + 1);
263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 1, byteArray.length);
270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, byteArray.length);
277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length, -1);
284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, byteArray.length, 0);
289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length, 1);
291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, 0);
297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, 1);
298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, byteArray.length - 1);
299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, byteArray.length);
300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 1, -1);
303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, 0);
309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, 1);
310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, byteArray.length, 0);
312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 0);
315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 1);
322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.close();
328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, -1);
331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException expected) {
333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IndexOutOfBoundsException expected) {
334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(null, -1, -1);
338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException expected) {
340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException expected) {
341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(null, 0, 1);
345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail();
346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException expected) {
347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException expected) {
348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_$BII_NullStream_NullArray() throws IOException {
355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream bos = new BufferedOutputStream(null);
356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] nullByteArray = null;
357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, -1);
360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, -1);
367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, -1);
374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 0);
381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 0);
388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 0);
395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 1);
402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 1);
409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 1);
416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_$BII_NullStream_NullArray_Size() throws IOException {
426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        OutputStream bos = new BufferedOutputStream(null, 1);
427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] nullByteArray = null;
428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, -1);
431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, -1);
438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, -1);
445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 0);
452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 0);
459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 0);
466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, -1, 1);
473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 0, 1);
480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(nullByteArray, 1, 1);
487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_$BII_NullStream() throws IOException {
497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream bos = new BufferedOutputStream(null);
498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] byteArray = new byte[10];
499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, -1);
502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, -1);
509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 1, -1);
516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 0);
523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, 0);
529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, 0);
531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, byteArray.length, 0);
533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 0);
536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 1);
543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, 1);
549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, 1);
550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, byteArray.length);
552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 1);
555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(byte[], int, int)
563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_$BII_NullStream_Size() throws IOException {
565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream bos = new BufferedOutputStream(null, 1);
566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] byteArray = new byte[10];
567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, -1);
570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, -1);
577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 1, -1);
584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 0);
591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 0, 0);
597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, 1, 0);
599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.write(byteArray, byteArray.length, 0);
601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 0);
604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw ArrayIndexOutOfBoundsException");
605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (ArrayIndexOutOfBoundsException e) {
606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, -1, 1);
611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, 1);
618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 0, byteArray.length);
625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, 1, 1);
632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.write(byteArray, byteArray.length + 1, 1);
639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // expected
642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * java.io.BufferedOutputStream#write(int)
647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_writeI() throws IOException {
649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        baos = new java.io.ByteArrayOutputStream();
650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os = new java.io.BufferedOutputStream(baos);
651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.write('t');
652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais = new java.io.ByteArrayInputStream(baos.toByteArray());
653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Byte written, not buffered", 0, bais.available());
654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        os.flush();
655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais = new java.io.ByteArrayInputStream(baos.toByteArray());
656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Byte not written after flush", 1, bais.available());
657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] wbytes = new byte[1];
658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bais.read(wbytes, 0, 1);
659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Incorrect byte written", 't', wbytes[0]);
660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_Close() throws IOException {
663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream buffos = new BufferedOutputStream(
664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                new ByteArrayOutputStream());
665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(new byte[0]);
666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            buffos.write(null);
668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            fail("should throw NullPointerException");
669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (NullPointerException e) {
670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            // Expected
671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer = "1234567890".getBytes();
673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(Integer.MIN_VALUE);
675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(Integer.MAX_VALUE);
676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 10);
677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.close();
680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_Scenario1() throws IOException {
683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayInputStream byteArrayis = null;
685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer = "1234567890".getBytes("UTF-8");
686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 10);
688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 10);
689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 10, byteArrayis.available());
691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 10, byteArrayis
694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 10);
700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 20, byteArrayis.available());
702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 20, byteArrayis
705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 10);
714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 30, byteArrayis.available());
716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 30, byteArrayis
719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_Scenario2() throws IOException {
732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayInputStream byteArrayis = null;
734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer = "1234567890".getBytes("UTF-8");
735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 20);
737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 10);
738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 0, byteArrayis.available());
740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 10, byteArrayis
743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer2 = new byte[] { 'a', 'b', 'c', 'd' };
749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer2, 0, 4);
750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 10, byteArrayis.available());
752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 14, byteArrayis
755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 4; i++) {
760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer2[i], byteArrayis.read());
761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer3 = new byte[] { 'e', 'f', 'g', 'h', 'i' };
764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer3, 0, 5);
765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 14, byteArrayis.available());
767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 19, byteArrayis
770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 10; i++) {
772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 4; i++) {
775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer2[i], byteArrayis.read());
776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; i++) {
778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer3[i], byteArrayis.read());
779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(new byte[] { 'j', 'k' });
782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 19, byteArrayis.available());
784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 21, byteArrayis
787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.close();
790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_write_Scenario3() throws IOException {
793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayOutputStream byteArrayos = new ByteArrayOutputStream();
794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        ByteArrayInputStream byteArrayis = null;
795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byte[] buffer = "1234567890".getBytes("UTF-8");
796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream buffos = new BufferedOutputStream(byteArrayos, 5);
798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 4);
799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 0, byteArrayis.available());
801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 4, byteArrayis
804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 4; i++) {
806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.write(buffer, 0, 5);
810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes written, not buffered", 9, byteArrayis.available());
812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        buffos.flush();
813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        byteArrayis = new ByteArrayInputStream(byteArrayos.toByteArray());
814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        assertEquals("Bytes not written after flush", 9, byteArrayis
815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath                .available());
816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 4; i++) {
817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        for (int i = 0; i < 5; i++) {
820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            assertEquals(buffer[i], byteArrayis.read());
821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    // Regression test for flush on closed stream
825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    public void test_flush_on_closed_stream() throws IOException {
826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        BufferedOutputStream bos = new BufferedOutputStream(new ByteArrayOutputStream());
827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        bos.close();
828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        try {
829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bos.flush(); // RI does not throw exception
830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        } catch (IOException expected) { // but Android does
831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath
834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    /**
835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * Tears down the fixture, for example, close a network connection. This
836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     * method is called after a test is executed.
837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath     */
838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    protected void tearDown() throws IOException {
839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (bais != null) {
840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            bais.close();
841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (os != null) {
843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            os.close();
844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        if (baos != null) {
846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath            baos.close();
847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath        }
848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath    }
849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath}
850