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