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.IOException; 21935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.OutputStream; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 23935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldOutputStreamTest extends junit.framework.TestCase { 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class BasicOutputStream extends OutputStream { 26f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final int BUFFER_SIZE = 20; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private byte[] buffer; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int position; 30f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public BasicOutputStream() { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = new byte[BUFFER_SIZE]; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project position = 0; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 35f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void write(int oneByte) throws IOException { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (position < BUFFER_SIZE) { 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer[position] = (byte) (oneByte & 255); 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project position++; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IOException("Internal buffer overflow."); 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 44f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getBuffer() { 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return buffer; 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final byte[] shortByteArray = "Lorem ipsum...".getBytes(); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final byte[] longByteArray = "Lorem ipsum dolor sit amet...".getBytes(); 52f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$B() { 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BasicOutputStream bos = new BasicOutputStream(); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean expected; 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buffer; 57f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(shortByteArray); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: Unexpected IOException encountered."); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = true; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = bos.getBuffer(); 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < (shortByteArray.length) && expected; i++) { 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = (shortByteArray[i] == buffer[i]); 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Test 1: Test byte array has not been written correctly.", 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected); 71f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) {} 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$BII() { 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BasicOutputStream bos = new BasicOutputStream(); 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean expected; 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buffer; 82f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(shortByteArray, 6, 5); 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: Unexpected IOException encountered."); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 88f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = true; 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = bos.getBuffer(); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 6, j = 0; j < 5 && expected; i++, j++) { 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = (shortByteArray[i] == buffer[j]); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Test 1: Test byte array has not been written correctly.", 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected); 96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 5, 20); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) {} 101f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, -1, 10); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: IndexOutOfBoundsException expected."); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: Unexpected IOException encountered."); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 10, -1); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: IndexOutOfBoundsException expected."); 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: Unexpected IOException encountered."); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 20, 10); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 5: IndexOutOfBoundsException expected."); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 5: Unexpected IOException encountered."); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 130