1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage tests.api.java.io; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PipedInputStream; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PipedOutputStream; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(PipedOutputStream.class) 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class PipedOutputStreamTest extends junit.framework.TestCase { 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class PReader implements Runnable { 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedInputStream reader; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PipedInputStream getReader() { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return reader; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PReader(PipedOutputStream out) { 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader = new PipedInputStream(out); 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Exception setting up reader: " 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString()); 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public int available() { 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return reader.available(); 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return -1; 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (true) { 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.yield(); 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InterruptedException e) { 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String read(int nbytes) { 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] buf = new byte[nbytes]; 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader.read(buf, 0, nbytes); 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new String(buf); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Exception reading (" 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + Thread.currentThread().getName() + "): " 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project + e.toString()); 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return "ERROR"; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final String testString = "Lorem ipsum dolor sit amet,\n" + 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "consectetur adipisicing elit,\nsed do eiusmod tempor incididunt ut" + 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "labore et dolore magna aliqua.\n"; 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static final int testLength = testString.length(); 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread rt; 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PReader reader; 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedOutputStream out; 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#PipedOutputStream() 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "PipedOutputStream", 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_Constructor() { 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(out); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpeceted IOException."); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#PipedOutputStream(java.io.PipedInputStream) 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "PipedOutputStream", 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.PipedInputStream.class} 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_io_PipedInputStream() throws IOException { 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.PipedOutputStream(java.io.PipedInputStream) 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(new PipedInputStream()); 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write('b'); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Constructor failed: " + e.getMessage()); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedInputStream pis = new PipedInputStream(new PipedOutputStream()); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(pis); 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected because the input stream is already connected."); 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#close() 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_close() { 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt = new Thread(reader = new PReader(out)); 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.start(); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Unexpected IOException: " + e.getMessage()); 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#connect(java.io.PipedInputStream) 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.PipedInputStream.class} 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connectLjava_io_PipedInputStream() throws IOException { 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.connect(new PipedInputStream()); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Unexpected exception when connecting: " + 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.getLocalizedMessage()); 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write('B'); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: Unexpected IOException when writing after connecting."); 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.connect(new PipedInputStream()); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IOException expected when reconnecting the stream."); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.connect(null); 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 4: NullPointerException expected."); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#flush() 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.SUFFICIENT, 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "No IOException checking because it is never thrown in the source code.", 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "flush", 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_flush() throws Exception { 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt = new Thread(reader = new PReader(out)); 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.start(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 0, 10); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 1: Bytes have been written before flush.", reader.available() != 0); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.flush(); 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 2: Flush failed. ", 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project testString.substring(0, 10), reader.read(10)); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#write(byte[], int, int) 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Test 6 disabled due to incomplete implementation, see ticket #92.", 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_write$BII() throws IOException { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 0, 5); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(new PipedInputStream()); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), -1, 10); 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IndexOutOfBoundsException expected."); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 0, -1); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IndexOutOfBoundsException expected."); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 5, testString.length()); 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 4: IndexOutOfBoundsException expected."); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.close(); 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt = new Thread(reader = new PReader(out)); 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.start(); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 0, testString.length()); 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.flush(); 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 5: Bytes read do not match the bytes written. ", 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project testString, reader.read(testString.length())); 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 5: Unexpected IOException: " + e.getMessage()); 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader.getReader().close(); 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(testString.getBytes(), 0, 5); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 7: IOException expected."); 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedOutputStream#write(int) 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Test 3 disabled due to incomplete implementation, see ticket #92.", 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "write", 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_writeI() throws IOException { 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out = new PipedOutputStream(); 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(42); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt = new Thread(reader = new PReader(out)); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.start(); 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write('c'); 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.flush(); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 2: The byte read does not match the byte written. ", 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "c", reader.read(1)); 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* Test disabled due to incomplete implementation, see ticket #92. 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.interrupt(); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(42); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IOException expected."); 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project*/ 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project reader.getReader().close(); 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project out.write(42); 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 4: IOException expected."); 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tears down the fixture, for example, close a network connection. This 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * method is called after a test is executed. 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (rt != null) 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project rt.interrupt(); 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 340