diff options
author | Elliott Hughes <enh@google.com> | 2013-05-02 14:59:53 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-05-02 14:59:53 -0700 |
commit | 48269d2a5b97d55b8d86e3936bbdc2bdca61a2cf (patch) | |
tree | 532b00ae9d523dd3f88220c90fb9ebee125e106a /luni/src/test | |
parent | 7fad2656bc91182ed2939cbe1793c7a42166994f (diff) | |
parent | e2aa9af94aeeab0e245c3f423f90c76b8cbe0229 (diff) | |
download | libcore-48269d2a5b97d55b8d86e3936bbdc2bdca61a2cf.zip libcore-48269d2a5b97d55b8d86e3936bbdc2bdca61a2cf.tar.gz libcore-48269d2a5b97d55b8d86e3936bbdc2bdca61a2cf.tar.bz2 |
am e2aa9af9: Merge "Fix BufferedReader.readLine to not read ahead after \'\r\'."
* commit 'e2aa9af94aeeab0e245c3f423f90c76b8cbe0229':
Fix BufferedReader.readLine to not read ahead after '\r'.
Diffstat (limited to 'luni/src/test')
-rw-r--r-- | luni/src/test/java/libcore/java/io/OldBufferedReaderTest.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/luni/src/test/java/libcore/java/io/OldBufferedReaderTest.java b/luni/src/test/java/libcore/java/io/OldBufferedReaderTest.java index 214c1b2..986c672 100644 --- a/luni/src/test/java/libcore/java/io/OldBufferedReaderTest.java +++ b/luni/src/test/java/libcore/java/io/OldBufferedReaderTest.java @@ -19,8 +19,13 @@ package libcore.java.io; import java.io.BufferedReader; import java.io.CharArrayReader; +import java.io.InputStreamReader; import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.PipedInputStream; +import java.io.PipedOutputStream; import java.io.PipedReader; +import java.io.PrintWriter; import java.io.Reader; import java.io.StringReader; import tests.support.Support_ASimpleReader; @@ -318,4 +323,79 @@ public class OldBufferedReaderTest extends junit.framework.TestCase { } catch (Exception e) { } } + + public void test_readLine_all_line_endings() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r2\n3\r\n4")); + assertEquals("1", r.readLine()); + assertEquals("2", r.readLine()); + assertEquals("3", r.readLine()); + assertEquals("4", r.readLine()); + assertNull(r.readLine()); + } + + public void test_readLine_interaction_with_read() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); + assertEquals('1', r.read()); + assertEquals('\r', r.read()); + assertEquals("", r.readLine()); // The '\r' we read() didn't count. + assertEquals("2", r.readLine()); + assertNull(r.readLine()); + } + + public void test_readLine_interaction_with_array_read_1() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); + assertEquals(2, r.read(new char[2], 0, 2)); + assertEquals("", r.readLine()); // The '\r' we read() didn't count. + assertEquals("2", r.readLine()); + assertNull(r.readLine()); + } + + public void test_readLine_interaction_with_array_read_2() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); + assertEquals("1", r.readLine()); + char[] chars = new char[1]; + assertEquals(1, r.read(chars, 0, 1)); // This read skips the '\n'. + assertEquals('2', chars[0]); + assertNull(r.readLine()); + } + + public void test_readLine_interaction_with_skip() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r\n2")); + assertEquals(2, r.skip(2)); + assertEquals("", r.readLine()); // The '\r' we skip()ed didn't count. + assertEquals("2", r.readLine()); + assertNull(r.readLine()); + } + + public void test_readLine_interaction_with_mark_and_reset() throws Exception { + BufferedReader r = new BufferedReader(new StringReader("1\r\n2\n3")); + assertEquals("1", r.readLine()); + r.mark(256); + assertEquals('2', r.read()); // This read skips the '\n'. + assertEquals("", r.readLine()); + r.reset(); // Now we're back half-way through the "\r\n". + assertEquals("2", r.readLine()); + assertEquals("3", r.readLine()); + assertNull(r.readLine()); + } + + public void test_8778372() throws Exception { + final PipedInputStream pis = new PipedInputStream(); + final PipedOutputStream pos = new PipedOutputStream(pis); + final Thread t = new Thread() { + @Override public void run() { + PrintWriter pw = new PrintWriter(new OutputStreamWriter(pos)); + pw.print("hello, world\r"); + pw.flush(); + try { + Thread.sleep(2*60*1000); + } catch (InterruptedException ex) { + fail(); + } + } + }; + t.start(); + BufferedReader br = new BufferedReader(new InputStreamReader(pis)); + assertEquals("hello, world", br.readLine()); + } } |