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.PipedInputStream; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PipedOutputStream; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.UnsupportedEncodingException; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class PipedOutputStreamTest extends TestCase { 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class PReader implements Runnable { 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedInputStream reader; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public PipedInputStream getReader() { 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return reader; 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public PReader(PipedOutputStream out) { 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader = new PipedInputStream(out); 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.out.println("Couldn't start reader"); 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public int available() { 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return reader.available(); 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return -1; 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void run() { 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while (true) { 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(1000); 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.yield(); 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (InterruptedException e) { 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String read(int nbytes) { 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buf = new byte[nbytes]; 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader.read(buf, 0, nbytes); 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new String(buf, "UTF-8"); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.out.println("Exception reading info"); 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return "ERROR"; 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread rt; 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PReader reader; 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedOutputStream out; 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#PipedOutputStream() 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constructor() { 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Used in tests 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#PipedOutputStream(java.io.PipedInputStream) 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ConstructorLjava_io_PipedInputStream() throws Exception { 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(new PipedInputStream()); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write('b'); 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#close() 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_close() throws Exception { 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt = new Thread(reader = new PReader(out)); 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.start(); 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.close(); 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#connect(java.io.PipedInputStream) 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_connectLjava_io_PipedInputStream_Exception() 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throws IOException { 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.connect(new PipedInputStream()); 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.connect(null); 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException"); //$NON-NLS-1$ 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#connect(java.io.PipedInputStream) 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_connectLjava_io_PipedInputStream() { 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt = new Thread(reader = new PReader(out)); 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.start(); 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.connect(new PipedInputStream()); 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to throw exception attempting connect on already connected stream"); 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Expected 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#flush() 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_flush() throws IOException, UnsupportedEncodingException { 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt = new Thread(reader = new PReader(out)); 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.start(); 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write("HelloWorld".getBytes("UTF-8"), 0, 10); 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Bytes written before flush", reader.available() != 0); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.flush(); 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect bytes", "HelloWorld", reader.read(10)); 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#write(byte[], int, int) 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_write$BII() throws IOException, UnsupportedEncodingException { 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt = new Thread(reader = new PReader(out)); 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.start(); 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write("HelloWorld".getBytes("UTF-8"), 0, 10); 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.flush(); 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect bytes", "HelloWorld", reader.read(10)); 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#write(byte[], int, int) Regression for 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * HARMONY-387 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_write$BII_2() throws IOException { 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedInputStream pis = new PipedInputStream(); 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedOutputStream pos = null; 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos = new PipedOutputStream(pis); 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos.write(new byte[0], -1, -1); 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Regression for HARMONY-4311 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pis = new PipedInputStream(); 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PipedOutputStream out = new PipedOutputStream(pis); 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write(null, -10, 10); 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException."); 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pis = new PipedInputStream(); 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos = new PipedOutputStream(pis); 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos.close(); 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos.write(new byte[0], 0, 0); 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pis = new PipedInputStream(); 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos = new PipedOutputStream(pis); 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos.write(new byte[0], -1, 0); 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IndexOutOfBoundsException expected"); 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException t) { 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //expected 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pis = new PipedInputStream(); 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos = new PipedOutputStream(pis); 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pos.write(null, -10, 0); 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException."); 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PipedOutputStream#write(int) 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_writeI() throws IOException { 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out = new PipedOutputStream(); 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt = new Thread(reader = new PReader(out)); 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.start(); 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write('c'); 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.flush(); 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect byte", "c", reader.read(1)); 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tears down the fixture, for example, close a network connection. This 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * method is called after a test is executed. 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() { 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (rt != null) { 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath rt.interrupt(); 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 232