import java.io.*;

public class MarkResetTest {
    public static void main(String av[]) throws Exception {

	// Test BufferedReader
	final int READLEN = 3;
	StringReader source = new StringReader ("0123456789ABC");
	BufferedReader br = new BufferedReader (source, 5);
	char buf[] = new char [READLEN];

	for (;;) {
	    br.mark(READLEN);
	    int charsRead = 0;
	    int len = 0;
	    while (charsRead < READLEN && 
		   (len = br.read (buf, charsRead, READLEN-charsRead)) >= 0)
		charsRead += len;
	    if (len < 0)
		break;
	    System.out.println ("read " + buf);
	    br.reset();
	    br.read();    // next char
	}

	// Test BufferedInputStream
        BufferedInputStream b =
	  new BufferedInputStream(new StringBufferInputStream("ABCDEF"));
        b.mark(3);
        b.read();
        b.read();
        b.read();
        b.reset();
        b.mark(-1);
        byte []bb = new byte[5];
        int r = b.read(bb, 0, 5);
        if (r == 5) {
            System.out.println("Success.");
        } else {
            System.out.println("Failure " + r);
        }
    }
}

/* Expected Output:
read 012
read 123
read 234
read 345
read 456
read 567
read 678
read 789
read 89A
read 9AB
read ABC
Success.
*/

import java.io.*;

public class MarkResetTest {
    public static void main(String av[]) throws Exception {
        BufferedInputStream b =
	  new BufferedInputStream(new StringBufferInputStream( "ABCDEF"));
        b.mark(3);
        b.read();
        b.read();
        b.read();
        b.reset();
        b.mark(-1);
        byte []bb = new byte[5];
        int r = b.read(bb, 0, 5);
        if (r == 5) {
            System.out.println("Success.");
        } else {
            System.out.println("Failure " + r);
        }
    }
}


/* Expected Output:
Success.
*/

--- 
+++ 
@@ -2,8 +2,30 @@
 
 public class MarkResetTest {
     public static void main(String av[]) throws Exception {
+
+	// Test BufferedReader
+	final int READLEN = 3;
+	StringReader source = new StringReader ("0123456789ABC");
+	BufferedReader br = new BufferedReader (source, 5);
+	char buf[] = new char [READLEN];
+
+	for (;;) {
+	    br.mark(READLEN);
+	    int charsRead = 0;
+	    int len = 0;
+	    while (charsRead < READLEN && 
+		   (len = br.read (buf, charsRead, READLEN-charsRead)) >= 0)
+		charsRead += len;
+	    if (len < 0)
+		break;
+	    System.out.println ("read " + buf);
+	    br.reset();
+	    br.read();    // next char
+	}
+
+	// Test BufferedInputStream
         BufferedInputStream b =
-	  new BufferedInputStream(new StringBufferInputStream( "ABCDEF"));
+	  new BufferedInputStream(new StringBufferInputStream("ABCDEF"));
         b.mark(3);
         b.read();
         b.read();
@@ -20,7 +42,17 @@
     }
 }
 
-
 /* Expected Output:
+read 012
+read 123
+read 234
+read 345
+read 456
+read 567
+read 678
+read 789
+read 89A
+read 9AB
+read ABC
 Success.
 */
Add a test for BufferedReader here.
