1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpackage libcore.java.io; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.BufferedReader; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.CharArrayReader; 220409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughesimport java.io.InputStreamReader; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException; 240409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughesimport java.io.OutputStreamWriter; 250409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughesimport java.io.PipedInputStream; 260409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughesimport java.io.PipedOutputStream; 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.PipedReader; 280409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughesimport java.io.PrintWriter; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.Reader; 3082a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilsonimport java.io.StringReader; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_ASimpleReader; 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.Support_StringReader; 3382a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilsonimport tests.support.ThrowingReader; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldBufferedReaderTest extends junit.framework.TestCase { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BufferedReader br; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String testString = "Test_All_Tests\nTest_java_io_BufferedInputStream\nTest_java_io_BufferedOutputStream\nTest_java_io_ByteArrayInputStream\nTest_java_io_ByteArrayOutputStream\nTest_java_io_DataInputStream\nTest_java_io_File\nTest_java_io_FileDescriptor\nTest_java_io_FileInputStream\nTest_java_io_FileNotFoundException\nTest_java_io_FileOutputStream\nTest_java_io_FilterInputStream\nTest_java_io_FilterOutputStream\nTest_java_io_InputStream\nTest_java_io_IOException\nTest_java_io_OutputStream\nTest_java_io_PrintStream\nTest_java_io_RandomAccessFile\nTest_java_io_SyncFailedException\nTest_java_lang_AbstractMethodError\nTest_java_lang_ArithmeticException\nTest_java_lang_ArrayIndexOutOfBoundsException\nTest_java_lang_ArrayStoreException\nTest_java_lang_Boolean\nTest_java_lang_Byte\nTest_java_lang_Character\nTest_java_lang_Class\nTest_java_lang_ClassCastException\nTest_java_lang_ClassCircularityError\nTest_java_lang_ClassFormatError\nTest_java_lang_ClassLoader\nTest_java_lang_ClassNotFoundException\nTest_java_lang_CloneNotSupportedException\nTest_java_lang_Double\nTest_java_lang_Error\nTest_java_lang_Exception\nTest_java_lang_ExceptionInInitializerError\nTest_java_lang_Float\nTest_java_lang_IllegalAccessError\nTest_java_lang_IllegalAccessException\nTest_java_lang_IllegalArgumentException\nTest_java_lang_IllegalMonitorStateException\nTest_java_lang_IllegalThreadStateException\nTest_java_lang_IncompatibleClassChangeError\nTest_java_lang_IndexOutOfBoundsException\nTest_java_lang_InstantiationError\nTest_java_lang_InstantiationException\nTest_java_lang_Integer\nTest_java_lang_InternalError\nTest_java_lang_InterruptedException\nTest_java_lang_LinkageError\nTest_java_lang_Long\nTest_java_lang_Math\nTest_java_lang_NegativeArraySizeException\nTest_java_lang_NoClassDefFoundError\nTest_java_lang_NoSuchFieldError\nTest_java_lang_NoSuchMethodError\nTest_java_lang_NullPointerException\nTest_java_lang_Number\nTest_java_lang_NumberFormatException\nTest_java_lang_Object\nTest_java_lang_OutOfMemoryError\nTest_java_lang_RuntimeException\nTest_java_lang_SecurityManager\nTest_java_lang_Short\nTest_java_lang_StackOverflowError\nTest_java_lang_String\nTest_java_lang_StringBuffer\nTest_java_lang_StringIndexOutOfBoundsException\nTest_java_lang_System\nTest_java_lang_Thread\nTest_java_lang_ThreadDeath\nTest_java_lang_ThreadGroup\nTest_java_lang_Throwable\nTest_java_lang_UnknownError\nTest_java_lang_UnsatisfiedLinkError\nTest_java_lang_VerifyError\nTest_java_lang_VirtualMachineError\nTest_java_lang_vm_Image\nTest_java_lang_vm_MemorySegment\nTest_java_lang_vm_ROMStoreException\nTest_java_lang_vm_VM\nTest_java_lang_Void\nTest_java_net_BindException\nTest_java_net_ConnectException\nTest_java_net_DatagramPacket\nTest_java_net_DatagramSocket\nTest_java_net_DatagramSocketImpl\nTest_java_net_InetAddress\nTest_java_net_NoRouteToHostException\nTest_java_net_PlainDatagramSocketImpl\nTest_java_net_PlainSocketImpl\nTest_java_net_Socket\nTest_java_net_SocketException\nTest_java_net_SocketImpl\nTest_java_net_SocketInputStream\nTest_java_net_SocketOutputStream\nTest_java_net_UnknownHostException\nTest_java_util_ArrayEnumerator\nTest_java_util_Date\nTest_java_util_EventObject\nTest_java_util_HashEnumerator\nTest_java_util_Hashtable\nTest_java_util_Properties\nTest_java_util_ResourceBundle\nTest_java_util_tm\nTest_java_util_Vector\n"; 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_io_Reader() { 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.io.BufferedReader(java.io.Reader) 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(br); 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ConstructorLjava_io_ReaderI() { 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Illegal negative size argument test. 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString), 0); 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IllegalArgumentException expected"); 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException expected) { 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString), 1024); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertNotNull(br); 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_close() { 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_ASimpleReader ssr = new Support_ASimpleReader(true); 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(); 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: Read on closed stream."); 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException x) { 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during close test " + e.toString()); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(ssr); 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Avoid IOException in tearDown(). 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssr.throwExceptionOnNextUse = false; 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 82935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson public void test_markI() throws IOException { 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method void java.io.BufferedReader.mark(int) 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] buf = null; 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(500); 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.mark(1000); 89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(250); 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.reset(); 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project buf = new char[testString.length()]; 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(buf, 0, 500); 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Failed to set mark properly", testString.substring(500, 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 1000).equals(new String(buf, 0, 500))); 95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during mark test"); 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString), 800); 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(500); 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.mark(250); 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(buf, 0, 1000); 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.reset(); 104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Failed to invalidate mark properly"); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException x) { 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] chars = new char[256]; 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 256; i++) 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project chars[i] = (char) i; 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Reader in = new BufferedReader(new Support_StringReader(new String( 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project chars)), 12); 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.skip(6); 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.mark(14); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.read(new char[14], 0, 14); 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.reset(); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong chars", in.read() == (char) 6 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && in.read() == (char) 7); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during mark test 2:" + e); 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in = new BufferedReader(new Support_StringReader(new String(chars)), 12); 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.skip(6); 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.mark(8); 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.skip(7); 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.reset(); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong chars 2", in.read() == (char) 6 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && in.read() == (char) 7); 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during mark test 3:" + e); 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_markSupported() { 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method boolean java.io.BufferedReader.markSupported() 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("markSupported returned false.", br.markSupported()); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_read() throws IOException { 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_ASimpleReader ssr = new Support_ASimpleReader(true); 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int r = br.read(); 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Char read improperly", testString.charAt(0) == r); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(new String( 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new char[] { '\u8765' }))); 151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong double byte character", br.read() == '\u8765'); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during read test"); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] chars = new char[256]; 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project for (int i = 0; i < 256; i++) 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project chars[i] = (char) i; 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Reader in = new BufferedReader(new Support_StringReader(new String( 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project chars)), 12); 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong initial char", 0, in.read()); // Fill the 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // buffer 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] buf = new char[14]; 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project in.read(buf, 0, 14); // Read greater than the buffer 166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Wrong block read data", new String(buf) 167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals(new String(chars, 1, 14))); 168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Wrong chars", 15, in.read()); // Check next byte 169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during read test 2:" + e); 171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // regression test for HARMONY-841 174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue(new BufferedReader(new CharArrayReader(new char[5], 1, 0), 2).read() == -1); 175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(ssr); 178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(); 180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("IOException expected."); 181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Avoid IOException in tearDown(). 185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssr.throwExceptionOnNextUse = false; 186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_read$CII_Exception() throws Exception { 189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try{ 191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(new char[10], -1, 1); 192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should throw IndexOutOfBoundsException"); 193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try{ 198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(new char[10], 0, -1); 199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should throw IndexOutOfBoundsException"); 200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try{ 205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(new char[10], 10, 1); 206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should throw IndexOutOfBoundsException"); 207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IndexOutOfBoundsException e) { 208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected 209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 210f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project //regression for HARMONY-831 212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try{ 213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new BufferedReader(new PipedReader(), 9).read(new char[] {}, 7, 0); 214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("should throw IndexOutOfBoundsException"); 215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project }catch(IndexOutOfBoundsException e){ 216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_readLine() throws IOException { 220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String line; 221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader("Lorem\nipsum\rdolor sit amet...")); 222f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line = br.readLine(); 224f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 1: Incorrect line written or read: " + line, 225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line.equals("Lorem")); 226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line = br.readLine(); 227f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 2: Incorrect line written or read: " + line, 228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line.equals("ipsum")); 229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line = br.readLine(); 230f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 3: Incorrect line written or read: " + line, 231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project line.equals("dolor sit amet...")); 232f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.readLine(); 236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 4: IOException expected."); 237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_ready() throws IOException { 243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_ASimpleReader ssr = new Support_ASimpleReader(true); 244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Test 1: ready() returned false", br.ready()); 247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Exception during ready test" + e.toString()); 249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(ssr); 253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 2: IOException expected."); 256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Avoid IOException in tearDown(). 260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssr.throwExceptionOnNextUse = false; 261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_skipJ() throws IOException { 264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Support_ASimpleReader ssr = new Support_ASimpleReader(true); 265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(new Support_StringReader(testString)); 266f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(-1); 269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 1: IllegalArgumentException expected."); 270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IllegalArgumentException e) { 271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(500); 275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project char[] buf = new char[testString.length()]; 276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.read(buf, 0, 500); 277f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes assertTrue("Test 2: Failed to set skip properly.", 278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project testString.substring(500, 1000).equals( 279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new String(buf, 0, 500))); 280f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes 281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br = new BufferedReader(ssr); 283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.skip(1); 285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail("Test 3: IOException expected."); 286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (IOException e) { 287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Expected. 288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Avoid IOException in tearDown(). 290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project ssr.throwExceptionOnNextUse = false; 291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 29382a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson public void testReadZeroLengthArray() throws IOException { 29482a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br = new BufferedReader(new Support_StringReader("ABCDEF")); 29582a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 29682a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 29782a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson assertEquals(0, br.read(new char[6], 3, 0)); 29882a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson } 29982a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson 30082a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson public void testSourceThrowsWithMark() throws IOException { 30182a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br = new BufferedReader(new ThrowingReader( 30282a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson new StringReader("ABCDEFGHI"), 4)); 30382a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson 30482a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 30582a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 30682a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.mark(10); 30782a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 30882a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 30982a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson 31082a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson try { 31182a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson br.read(); 31282a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson fail(); 31382a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson } catch (IOException fromThrowingReader) { 31482a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson } 31582a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson 31682a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson assertEquals('E', br.read()); 31782a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson assertEquals('F', br.read()); 31882a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson } 31982a2dfcd2281c2f8042fd5f09c98bea1e728530fJesse Wilson 320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project br.close(); 323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (Exception e) { 324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 3260409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3270409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_all_line_endings() throws Exception { 3280409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r2\n3\r\n4")); 3290409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("1", r.readLine()); 3300409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("2", r.readLine()); 3310409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("3", r.readLine()); 3320409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("4", r.readLine()); 3330409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3340409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3350409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3360409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_interaction_with_read() throws Exception { 3370409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); 3380409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals('1', r.read()); 3390409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals('\r', r.read()); 3400409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("", r.readLine()); // The '\r' we read() didn't count. 3410409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("2", r.readLine()); 3420409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3430409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3440409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3450409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_interaction_with_array_read_1() throws Exception { 3460409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); 3470409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals(2, r.read(new char[2], 0, 2)); 3480409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("", r.readLine()); // The '\r' we read() didn't count. 3490409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("2", r.readLine()); 3500409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3510409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3520409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3530409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_interaction_with_array_read_2() throws Exception { 3540409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); 3550409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("1", r.readLine()); 3560409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes char[] chars = new char[1]; 3570409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals(1, r.read(chars, 0, 1)); // This read skips the '\n'. 3580409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals('2', chars[0]); 3590409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3600409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3610409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3620409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_interaction_with_skip() throws Exception { 3630409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); 3640409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals(2, r.skip(2)); 3650409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("", r.readLine()); // The '\r' we skip()ed didn't count. 3660409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("2", r.readLine()); 3670409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3680409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3690409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3700409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_readLine_interaction_with_mark_and_reset() throws Exception { 3710409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader r = new BufferedReader(new StringReader("1\r\n2\n3")); 3720409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("1", r.readLine()); 3730409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes r.mark(256); 3740409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals('2', r.read()); // This read skips the '\n'. 3750409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("", r.readLine()); 3760409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes r.reset(); // Now we're back half-way through the "\r\n". 3770409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("2", r.readLine()); 3780409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("3", r.readLine()); 3790409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertNull(r.readLine()); 3800409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3810409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes 3820409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes public void test_8778372() throws Exception { 3830409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes final PipedInputStream pis = new PipedInputStream(); 3840409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes final PipedOutputStream pos = new PipedOutputStream(pis); 3850409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes final Thread t = new Thread() { 3860409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes @Override public void run() { 3870409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes PrintWriter pw = new PrintWriter(new OutputStreamWriter(pos)); 3880409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes pw.print("hello, world\r"); 3890409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes pw.flush(); 3900409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes try { 3910409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes Thread.sleep(2*60*1000); 3920409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } catch (InterruptedException ex) { 3930409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes fail(); 3940409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3950409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 3960409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes }; 3970409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes t.start(); 3980409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes BufferedReader br = new BufferedReader(new InputStreamReader(pis)); 3990409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes assertEquals("hello, world", br.readLine()); 4000409fa8fe9b1b3cd501931a8c25e109e6ff71be0Elliott Hughes } 401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 402