Initial load
diff --git a/test/java/io/BufferedReader/Ready.java b/test/java/io/BufferedReader/Ready.java
new file mode 100644
index 0000000..391351d
--- /dev/null
+++ b/test/java/io/BufferedReader/Ready.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2000 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/* @test
+ * @bug 4329985
+ * @summary Ensure that BufferedReader's ready() method handles the new line
+ * character following the carriage return correctly and returns the right
+ * value so that a read operation after a ready() does not block unnecessarily.
+ */
+import java.io.*;
+
+public class Ready {
+
+ public static void main(String[] args) throws IOException {
+ BufferedReader reader;
+ String[] strings = {
+ "LF-Only\n",
+ "LF-Only\n",
+ "CR/LF\r\n",
+ "CR/LF\r\n",
+ "CR-Only\r",
+ "CR-Only\r",
+ "CR/LF line\r\nMore data.\r\n",
+ "CR/LF line\r\nMore data.\r\n"
+ };
+
+ // The buffer sizes are chosen such that the boundary conditions are
+ // tested.
+ int[] bufsizes = { 7, 8, 6, 5, 7, 8, 11, 10};
+
+ for (int i = 0; i < strings.length; i++) {
+ reader = new BufferedReader(new BoundedReader(strings[i]),
+ bufsizes[i]);
+ while (reader.ready()) {
+ String str = reader.readLine();
+ System.out.println("read>>" + str);
+ }
+ }
+ }
+
+
+
+ private static class BoundedReader extends Reader{
+
+ private char[] content;
+ private int limit;
+ private int pos = 0;
+
+ public BoundedReader(String content) {
+ this.limit = content.length();
+ this.content = new char[limit];
+ content.getChars(0, limit, this.content, 0);
+ }
+
+ public int read() throws IOException {
+ if (pos >= limit)
+ throw new RuntimeException("Hit infinite wait condition");
+ return content[pos++];
+ }
+
+ public int read(char[] buf, int offset, int length)
+ throws IOException
+ {
+ if (pos >= limit)
+ throw new RuntimeException("Hit infinite wait condition");
+ int oldPos = pos;
+ int readlen = (length > (limit - pos)) ? (limit - pos) : length;
+ for (int i = offset; i < readlen; i++) {
+ buf[i] = (char)read();
+ }
+
+ return (pos - oldPos);
+ }
+
+ public void close() {}
+
+ public boolean ready() {
+ if (pos < limit)
+ return true;
+ else
+ return false;
+ }
+ }
+
+}