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.PipedReader; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.PipedWriter; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(PipedReader.class) 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class PipedReaderTest extends junit.framework.TestCase { 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class PWriter implements Runnable { 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PipedWriter pw; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PWriter(PipedReader reader) { 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw = new PipedWriter(reader); 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Couldn't create writer"); 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PWriter() { 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw = new PipedWriter(); 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = new char[11]; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Hello World".getChars(0, 11, c, 0); 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw.write(c); 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(10000); 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InterruptedException e) { 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Exception occurred: " + e.toString()); 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static class PWriter2 implements Runnable { 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedWriter pw; 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public boolean keepRunning = true; 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void run() { 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw.write('H'); 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw.close(); 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (keepRunning) { 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(1000); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project e.printStackTrace(System.out); 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project System.out.println("Error while running the writer thread."); 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PWriter2(PipedWriter writer) { 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw = writer; 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedReader preader; 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PWriter pwriter; 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread t; 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#PipedReader() 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "PipedReader", 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_Constructor() { 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(preader); 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Unexpeceted IOException"); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#PipedReader(java.io.PipedWriter) 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "PipedReader", 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.PipedWriter.class} 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ConstructorLjava_io_PipedWriter() throws IOException { 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method java.io.PipedReader(java.io.PipedWriter) 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(new PipedWriter()); 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: Constructor failed: " + e.getMessage()); 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedWriter pw = new PipedWriter(new PipedReader()); 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(pw); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected because the writer is already connected."); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#close() 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "No IOException checking because it is never thrown in the source code.", 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "close", 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_close() throws Exception { 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.io.PipedReader.close() 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = null; 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t = new Thread(new PWriter(preader), ""); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.start(); 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c = new char[11]; 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(c, 0, 5); 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(c, 0, 5); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IOException expected because the reader is closed."); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#connect(java.io.PipedWriter) 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "connect", 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.io.PipedWriter.class} 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_connectLjava_io_PipedWriter() throws Exception { 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method void java.io.PipedReader.connect(java.io.PipedWriter) 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = null; 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t = new Thread(pwriter = new PWriter(), ""); 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.connect(pwriter.pw); 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.start(); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c = new char[11]; 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(c, 0, 11); 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Wrong characters read. ", "Hello World", new String(c)); 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.connect(new PipedWriter()); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected because the reader is already connected."); 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#read() 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read_1() throws Exception { 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.PipedReader.read() 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = null; 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t = new Thread(new PWriter(preader), ""); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.start(); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c = new char[11]; 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < c.length; i++) { 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c[i] = (char) preader.read(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Wrong characters read. ", "Hello World", new String(c)); 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(); 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected since the thread that has " + 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "written to the pipe is no longer alive."); 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 3: IOException expected."); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#read() 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks that read() returns -1 if the PipedWriter connectedto this PipedReader is closed.", 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read_2() throws Exception { 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread writerThread; 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedWriter pw; 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PWriter2 pwriter; 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw = new PipedWriter(preader); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writerThread = new Thread(pwriter = new PWriter2(pw), "PWriter2"); 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writerThread.start(); 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(); 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: No more data indication expected. ", -1, preader.read()); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pwriter.keepRunning = false; 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#read(char[], int, int) 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "IOException checking missed.", 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {char[].class, int.class, int.class} 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$CII_1() throws Exception { 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method int java.io.PipedReader.read(char [], int, int) 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = null; 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t = new Thread(new PWriter(preader), ""); 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.start(); 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c = new char[11]; 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int n = 0; 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int x = n; 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while (x < 11) { 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project n = preader.read(c, x, 11 - x); 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project x = x + n; 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: Wrong characters read. ", "Hello World", new String(c)); 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(c, 8, 7); 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 2: IOException expected."); 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#read(char[], int, int) 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {char[].class, int.class, int.class} 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$CII_Exception() throws IOException{ 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedWriter pw = new PipedWriter(); 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedReader obj = new PipedReader(pw); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj.read(new char[10], 0, -1); 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected."); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj.read(new char[10], -1, 1); 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected."); 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj.read(new char[10], 2, 9); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IndexOutOfBoundsException expected."); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IndexOutOfBoundsException e) { 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project obj.read(null, 0, 1); 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException expected."); 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException 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 * @tests java.io.PipedReader#read() 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks that read() returns -1 if the PipedWriter connectedto this PipedReader is closed.", 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "read", 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_read$CII_2() throws Exception { 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread writerThread; 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PipedWriter pw; 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PWriter2 pwriter; 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = new char[1]; 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pw = new PipedWriter(preader); 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writerThread = new Thread(pwriter = new PWriter2(pw), "PWriter2"); 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project writerThread.start(); 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.read(c, 0, 1); 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Test 1: No more data indication expected. ", 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project -1, preader.read(c, 0, 1)); 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project pwriter.keepRunning = false; 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests java.io.PipedReader#ready() 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ready", 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_ready() throws Exception { 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Test for method boolean java.io.PipedReader.ready() 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project char[] c = null; 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader = new PipedReader(); 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.ready(); 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 1: IOException expected."); 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t = new Thread(new PWriter(preader), ""); 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.start(); 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Thread.sleep(500); // Allow writer to start 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Test 2: Reader should be ready", preader.ready()); 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c = new char[11]; 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < c.length; i++) 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project c[i] = (char) preader.read(); 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse("Test 3: Reader should not be ready after reading all chars", 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.ready()); 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.close(); 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project preader.ready(); 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Test 4: IOException expected."); 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IOException e) { 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // Expected. 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tears down the fixture, for example, close a network connection. This 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * method is called after a test is executed. 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void tearDown() throws Exception { 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (t != null) { 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project t.interrupt(); 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.tearDown(); 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 409