1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpackage libcore.java.io; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.BufferedOutputStream; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.DataInputStream; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.DataOutputStream; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_OutputStream; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 28935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldDataOutputStreamTest extends junit.framework.TestCase { 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private DataOutputStream os; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private DataInputStream dis; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private ByteArrayOutputStream bos; 35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private Support_OutputStream sos; 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String unihw = "\u0048\u0065\u006C\u006C\u006F\u0020\u0057\u006F\u0072\u006C\u0064"; 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final String testString = "Lorem ipsum dolor sit amet,\n" + 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "consectetur adipisicing elit,\nsed do eiusmod tempor incididunt ut" + 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "labore et dolore magna aliqua.\n"; 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final int testLength = testString.length(); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_flush() throws IOException { 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BufferedOutputStream buf = new BufferedOutputStream(bos); 48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(buf); 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.writeInt(9087589); 51f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 1: Written data should not be available.", 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.toByteArray().length == 0); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.flush(); 54f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 2: Written data should be available.", 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.toByteArray().length > 0); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project openDataInputStream(); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int c = dis.readInt(); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Test 3: Failed to flush correctly;", 9087589, c); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(sos); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.flush(); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: IOException expected."); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$BII() throws IOException { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int r; 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(testString.getBytes(), 5, testLength - 7); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project openDataInputStream(); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] rbuf = new byte[testLength]; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project r = dis.read(rbuf, 0, testLength); 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Test 1: Incorrect number of bytes read;", 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testLength - 7, r); 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 82f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 2: Incorrect bytes written or read.", 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String(rbuf, 0, r).equals( 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testString.substring(5, testLength - 2))); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$BII_Exception() throws IOException { 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] nullByteArray = null; 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] byteArray = new byte[10]; 90f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(nullByteArray, 0, 1); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: NullPointerException expected."); 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (NullPointerException e) { 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 97f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(byteArray, -1, 1); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IndexOutOfBoundsException expected."); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(byteArray, 0, -1); 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: IndexOutOfBoundsException expected."); 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(byteArray, 1, 10); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: IndexOutOfBoundsException expected."); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_writeI() throws IOException { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(42); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 123f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project openDataInputStream(); 125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Test 1: Incorrect int written or read;", 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 42, dis.read()); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(sos); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.write(42); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_writeBytesLjava_lang_String() throws IOException { 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.writeBytes(testString); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 141f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project openDataInputStream(); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] rbuf = new byte[testLength]; 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.read(rbuf, 0, testLength); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 146f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 1: Incorrect bytes written or read.", 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String(rbuf, 0, testLength).equals(testString)); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(sos); 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.writeBytes(testString); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_writeCharsLjava_lang_String() throws IOException { 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.writeChars(unihw); 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project openDataInputStream(); 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] chars = new char[unihw.length()]; 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int i, a = dis.available() / 2; 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (i = 0; i < a; i++) chars[i] = dis.readChar(); 165f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertEquals("Test 1: Incorrect chars written or read;", 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project unihw, new String(chars, 0, i) 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 169f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(sos); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.writeChars(unihw); 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private void openDataInputStream() throws IOException { 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis = new DataInputStream(new ByteArrayInputStream(bos.toByteArray())); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void setUp() { 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sos = new Support_OutputStream(true); 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos = new ByteArrayOutputStream(); 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os = new DataOutputStream(bos); 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project sos.setThrowsException(false); 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (os != null) 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project os.close(); 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (dis != null) 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project dis.close(); 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 200