1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedReader; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedWriter; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class PipedReaderTest extends TestCase { 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class PWriter implements Runnable { 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public PipedWriter pw; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public PWriter(PipedReader reader) { 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(reader); 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.out.println("Couldn't create writer"); 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public PWriter() { 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void run() { 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = new char[11]; 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "Hello World".getChars(0, 11, c, 0); 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw.write(c); 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(10000); 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (InterruptedException e) { 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.out.println("Exception occurred: " + e.toString()); 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader preader; 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PWriter pwriter; 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread t; 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#PipedReader() 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constructor() { 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Used in test 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#PipedReader(java.io.PipedWriter) 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ConstructorLjava_io_PipedWriter() throws IOException { 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(new PipedWriter()); 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#PipedReader(java.io.PipedWriter, 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath *int) 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @since 1.6 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constructor_LPipedWriter_I() throws Exception { 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.PipedReader(java.io.PipedWriter, 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // int) 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(null, -1); 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); //$NON-NLS-1$ 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(null, 0); 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); //$NON-NLS-1$ 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#PipedReader(int) 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @since 1.6 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constructor_I() throws Exception { 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.PipedReader(int) 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(-1); 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); //$NON-NLS-1$ 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(0); 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); //$NON-NLS-1$ 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#close() 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_close() throws Exception { 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = null; 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(); 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t = new Thread(new PWriter(preader), ""); 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.start(); 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(500); // Allow writer to start 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = new char[11]; 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.read(c, 0, 11); 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.close(); 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect chars", "Hello World", new String(c)); 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#connect(java.io.PipedWriter) 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_connectLjava_io_PipedWriter() throws Exception { 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = null; 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(); 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t = new Thread(pwriter = new PWriter(), ""); 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.connect(pwriter.pw); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.start(); 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(500); // Allow writer to start 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = new char[11]; 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.read(c, 0, 11); 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect chars", "Hello World", new String(c)); 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.connect(pwriter.pw); 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to throw exception connecting to pre-connected reader"); 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Expected 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#read() 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read() throws Exception { 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = null; 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(); 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t = new Thread(new PWriter(preader), ""); 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.start(); 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(500); // Allow writer to start 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = new char[11]; 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < c.length; i++) { 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c[i] = (char) preader.read(); 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect chars", "Hello World", new String(c)); 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#read(char[], int, int) 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII() throws Exception { 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = null; 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(); 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t = new Thread(new PWriter(preader), ""); 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.start(); 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(500); // Allow writer to start 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = new char[11]; 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int n = 0; 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int x = n; 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (x < 11) { 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath n = preader.read(c, x, 11 - x); 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath x = x + n; 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect chars", "Hello World", new String(c)); 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.close(); 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.read(c, 8, 7); 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to throw exception reading from closed reader"); 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Expected 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII_ExceptionPriority() throws IOException { 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Regression for HARMONY-387 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedWriter pw = new PipedWriter(); 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader obj = null; 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj = new PipedReader(pw); 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.read(new char[0], (int) 0, (int) -1); 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII_ExceptionPriority2() throws IOException { 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedWriter pw = new PipedWriter(); 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader obj = null; 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj = new PipedReader(pw); 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.read(new char[0], (int) -1, (int) 0); 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII_ExceptionPriority3() throws IOException { 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedWriter pw = new PipedWriter(); 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader obj = null; 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj = new PipedReader(pw); 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.read(new char[0], (int) -1, (int) -1); 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII_ExceptionPriority4() throws IOException { 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedWriter pw = new PipedWriter(); 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader pr = new PipedReader(pw); 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, -1, 1); 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException expected) { 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read_$CII_IOException() throws IOException { 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedWriter pw = new PipedWriter(); 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedReader pr = new PipedReader(pw); 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, 0, 10); 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throws IOException"); //$NON-NLS-1$ 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(); 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, 0, 10); 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throws IOException"); //$NON-NLS-1$ 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(new char[10], -1, 0); 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throws IOException"); //$NON-NLS-1$ 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(new char[10], 0, -1); 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throws IOException"); //$NON-NLS-1$ 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(new char[10], 1, 10); 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throws IOException"); //$NON-NLS-1$ 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(new char[0], -1, -1); 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw IOException"); //$NON-NLS-1$ 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.close(); 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, 0, 1); 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw IOException"); //$NON-NLS-1$ 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, 0, -1); 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException"); //$NON-NLS-1$ 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(new char[10], 11, 0); 351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw IndexOutOfBoundsException"); //$NON-NLS-1$ 352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException e) { 353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = new PipedWriter(); 360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = new PipedReader(pw); 361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr.read(null, 1, 0); 363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException"); //$NON-NLS-1$ 364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pw = null; 368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pr = null; 369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedReader#ready() 374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ready() throws Exception { 376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = null; 377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader = new PipedReader(); 378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t = new Thread(new PWriter(preader), ""); 379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.start(); 380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(500); // Allow writer to start 381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Reader should be ready", preader.ready()); 382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = new char[11]; 383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < c.length; i++) 384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c[i] = (char) preader.read(); 385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse("Reader should not be ready after reading all chars", 386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath preader.ready()); 387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tears down the fixture, for example, close a network connection. This 391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * method is called after a test is executed. 392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() throws Exception { 394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (t != null) { 395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath t.interrupt(); 396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super.tearDown(); 398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 400