OldOutputStreamTest.java revision f33eae7e84eb6d3b0f4e86b59605bb3de73009f3
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 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.java.io; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 23f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughesimport dalvik.annotation.TestTargetClass; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew; 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.OutputStream; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass( 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project value = OutputStream.class, 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project untestedMethods = { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "OutputStream", 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {}, 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.NOT_NECESSARY, 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Constructor just calls super()." 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "close", 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {}, 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.NOT_NECESSARY, 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "According to specification, the implementation " + 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "does nothing." 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ), 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "flush", 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {}, 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.NOT_NECESSARY, 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "According to specification, the implementation " + 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "does nothing." 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 53f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes) 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class OutputStreamTest extends junit.framework.TestCase { 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project class BasicOutputStream extends OutputStream { 57f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private static final int BUFFER_SIZE = 20; 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private byte[] buffer; 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private int position; 61f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public BasicOutputStream() { 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = new byte[BUFFER_SIZE]; 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project position = 0; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 66f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void write(int oneByte) throws IOException { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project if (position < BUFFER_SIZE) { 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer[position] = (byte) (oneByte & 255); 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project position++; 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } else { 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throw new IOException("Internal buffer overflow."); 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 75f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public byte[] getBuffer() { 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return buffer; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final byte[] shortByteArray = "Lorem ipsum...".getBytes(); 82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project private final byte[] longByteArray = "Lorem ipsum dolor sit amet...".getBytes(); 83f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies write(byte[]).", 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "write", 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class} 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$B() { 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BasicOutputStream bos = new BasicOutputStream(); 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean expected; 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buffer; 94f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(shortByteArray); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: Unexpected IOException encountered."); 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 100f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = true; 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = bos.getBuffer(); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < (shortByteArray.length) && expected; i++) { 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = (shortByteArray[i] == buffer[i]); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Test 1: Test byte array has not been written correctly.", 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected); 108f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray); 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) {} 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project @TestTargetNew( 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project level = TestLevel.COMPLETE, 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project notes = "Verifies write(byte[], int, int).", 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project method = "write", 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project args = {byte[].class, int.class, int.class} 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ) 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_write$BII() { 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BasicOutputStream bos = new BasicOutputStream(); 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project boolean expected; 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project byte[] buffer; 125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(shortByteArray, 6, 5); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: Unexpected IOException encountered."); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 131f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = true; 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buffer = bos.getBuffer(); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 6, j = 0; j < 5 && expected; i++, j++) { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected = (shortByteArray[i] == buffer[j]); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Test 1: Test byte array has not been written correctly.", 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project expected); 139f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 5, 20); 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) {} 144f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, -1, 10); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: IndexOutOfBoundsException expected."); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: Unexpected IOException encountered."); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 10, -1); 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: IndexOutOfBoundsException expected."); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: Unexpected IOException encountered."); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project bos.write(longByteArray, 20, 10); 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 5: IndexOutOfBoundsException expected."); 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 5: Unexpected IOException encountered."); 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 173