1935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson/*
2935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  Licensed to the Apache Software Foundation (ASF) under one or more
3935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  contributor license agreements.  See the NOTICE file distributed with
4935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  this work for additional information regarding copyright ownership.
5935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  The ASF licenses this file to You under the Apache License, Version 2.0
6935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  (the "License"); you may not use this file except in compliance with
7935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  the License.  You may obtain a copy of the License at
8935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *
9935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
10935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *
11935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  Unless required by applicable law or agreed to in writing, software
12935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  distributed under the License is distributed on an "AS IS" BASIS,
13935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  See the License for the specific language governing permissions and
15935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson *  limitations under the License.
16935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson */
17935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
18935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpackage libcore.java.io;
19935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
20935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.IOException;
21935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.PushbackReader;
22935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport java.io.StringReader;
23935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonimport tests.support.Support_ASimpleReader;
24935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
25935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilsonpublic class OldPushbackReaderTest extends junit.framework.TestCase {
26935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
27935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    Support_ASimpleReader underlying = new Support_ASimpleReader();
28935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    PushbackReader pbr;
29935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
30935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    String pbString = "Hello World";
31935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
32935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
33229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#PushbackReader(java.io.Reader)
34935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
35935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_ConstructorLjava_io_Reader() {
36935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        // Test for method java.io.PushbackReader(java.io.Reader)
37935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
38935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.close();
39935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr = new PushbackReader(new StringReader(pbString));
40935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            char buf[] = new char[5];
41935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(buf, 0, 5);
42935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.unread(buf);
43935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("Created reader with buffer larger than 1");;
44935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
45935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // Expected
46935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
47935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
48935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
49935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr = new PushbackReader(null);
50935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (NullPointerException e) {
51935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // EXpected
52935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
53935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
54935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
55935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
56229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#PushbackReader(java.io.Reader, int)
57935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
58935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_ConstructorLjava_io_ReaderI() throws IOException {
59935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
60935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
61935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying, 10000);
62935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying, 1);
63935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
64935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
65935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj = new PushbackReader(underlying, -1);
66935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.close();
67935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
68935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IllegalArgumentException e) {
69935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
70935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
71935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
72935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj = new PushbackReader(underlying, 0);
73935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.close();
74935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
75935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IllegalArgumentException e) {
76935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
77935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
78935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
79935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
80935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
81229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#close()
82935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
83935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_close() throws IOException {
84935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
85935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
86935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
87935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.close();
88935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.close();
89935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
90935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
91935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
92935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.close();
93935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
94935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
95935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
96935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
97935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
98935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
99935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
100229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#markSupported()
101935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
102935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_markSupported() {
103935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertFalse("Test 1: markSupported() must return false.",
104935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson                pbr.markSupported());
105935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
106935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
107935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
108229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#read()
109935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
110935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_read() throws IOException {
111935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
112935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
113935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
114935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Wrong value read!", 66, tobj.read());
115935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
116935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
117935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.read();
118935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
119935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
120935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
121935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
122935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
123935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
124935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
125229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#read(char[], int, int)
126935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
127935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_read$CII() throws IOException {
128935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
129935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] buf = ("01234567890123456789").toCharArray();
130935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
131935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
132935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.read(buf, 6, 5);
133935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Wrong value read!", "BEGIN", new String(buf, 6, 5));
134935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Too much read!", "012345BEGIN123456789", new String(buf));
135935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
136935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
137935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.read(buf, 6, 5);
138935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
139935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
140935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
141935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
142935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
143935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        // Test for method int java.io.PushbackReader.read(char [], int, int)
144935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
145935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            char[] c = new char[5];
146935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(c, 0, 5);
147935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            assertTrue("Failed to read chars", new String(c).equals(pbString
148935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson                    .substring(0, 5)));
149935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
150935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            assertEquals(0, pbr.read(c, 0, 0));
151935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            assertEquals(c.length, pbr.read(c, 0, c.length));
152935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            assertEquals(0, pbr.read(c, c.length, 0));
153935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
154935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException during read test : " + e.getMessage());
155935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
156935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
157935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
158935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
159229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#read(char[], int, int)
160935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
161935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_read_$CII_Exception() throws IOException {
162935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        pbr = new PushbackReader(new StringReader(pbString), 10);
163935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
164935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] nullCharArray = null;
165935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] charArray = new char[10];
166935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
167935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
168935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(nullCharArray, 0, 1);
169935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw NullPointerException");
170935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (NullPointerException e) {
171935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
172935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
173935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
174935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
175935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, 0, -1);
176935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
177935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
178935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
179935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
180935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
181935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
182935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, -1, 0);
183935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
184935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
185935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
186935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
187935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
188935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
189935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, charArray.length + 1, 0);
190935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
191935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
192935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
193935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
194935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
195935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
196935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, charArray.length, 1);
197935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
198935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
199935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
200935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
201935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
202935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
203935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, 1, charArray.length);
204935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
205935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
206935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
207935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
208935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
209935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
210935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, 0, charArray.length + 1);
211935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IndexOutOfBoundsException");
212935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
213935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
214935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
215935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
216935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        pbr.close();
217935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
218935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
219935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(charArray, 0, 1);
220935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw IOException");
221935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
222935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
223935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
224935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
225935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
226935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
227229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#ready()
228935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
229935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_ready() throws IOException {
230935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
231935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
232935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
233935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertTrue("Should be ready!", tobj.ready());
234935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
235935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
236935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.ready();
237935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
238935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
239935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
240935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
241935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
242935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
243229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#unread(char[])
244935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
245935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_unread$C() throws IOException {
246935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
247935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        String str2 = "0123456789";
248935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] buf2 = str2.toCharArray();
249935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] readBuf = new char[10];
250935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
251935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying, 10);
252935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.unread(buf2);
253935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
254935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.unread(buf2);
255935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
256935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
257935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
258935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
259935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.read(readBuf);
260935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Incorrect bytes read", str2, new String(readBuf));
261935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
262935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
263935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.read(buf2);
264935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
265935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
266935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
267935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
268935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
269935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        // Test for method void java.io.PushbackReader.unread(char [])
270935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
271935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            char[] c = new char[5];
272935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(c, 0, 5);
273935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.unread(c);
274935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.read(c, 0, 5);
275935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            assertTrue("Failed to unread chars", new String(c).equals(pbString
276935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson                    .substring(0, 5)));
277935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
278935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException during read test : " + e.getMessage());
279935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
280935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
281935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
282935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
283935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     * @throws IOException
284229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#skip(long)
285935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
286935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_skip$J() throws IOException {
287935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
288935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
289935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
290935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.skip(6);
291935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.skip(1000000);
292935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.skip(1000000);
293935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
294935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
295935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.skip(1);
296935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
297935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
298935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
299935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
300935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
301935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
302935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
303229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#unread(char[], int, int)
304935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
305935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_unread$CII() throws IOException {
306935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
307935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        String str2 = "0123456789";
308935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] buf2 = (str2 + str2 + str2).toCharArray();
309935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        char[] readBuf = new char[10];
310935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
311935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying, 10);
312935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.unread(buf2, 15, 10);
313935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
314935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.unread(buf2, 15, 10);
315935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
316935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
317935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
318935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
319935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.read(readBuf);
320935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Incorrect bytes read", "5678901234", new String(readBuf));
321935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        underlying.throwExceptionOnNextUse = true;
322935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
323935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.read(buf2, 15, 10);
324935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown.");
325935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
326935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
327935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
328935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
329935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
330935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_unread_$CII_ArrayIndexOutOfBoundsException() throws IOException {
331935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        //a pushback reader with one character buffer
332935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        pbr = new PushbackReader(new StringReader(pbString));
333935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
334935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.unread(new char[pbString.length()], 0 , -1);
335935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw ArrayIndexOutOfBoundsException");
336935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
337935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
338935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
339935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
340935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.unread(new char[10], 10 , 1);
341935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("should throw ArrayIndexOutOfBoundsException");
342935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IndexOutOfBoundsException e) {
343935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
344935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
345935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
346935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
347935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
348229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom     * java.io.PushbackReader#unread(int)
349935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
350935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    public void test_unreadI() throws IOException {
351935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        PushbackReader tobj;
352935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
353935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj = new PushbackReader(underlying);
354935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.unread(23); // Why does this work?!?
355935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.skip(2);
356935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.unread(23);
357935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        assertEquals("Wrong value read!", 23, tobj.read());
358935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        tobj.unread(13);
359935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
360935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            tobj.unread(13);
361935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            fail("IOException not thrown (ACTUALLY NOT SURE WHETHER IT REALLY MUST BE THROWN!).");
362935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
363935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            // expected
364935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
365935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
366935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
367935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
368935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     * Sets up the fixture, for example, open a network connection. This method
369935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     * is called before a test is executed.
370935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
371935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    protected void setUp() {
372935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        pbr = new PushbackReader(new StringReader(pbString), 10);
373935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
374935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson
375935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    /**
376935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     * Tears down the fixture, for example, close a network connection. This
377935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     * method is called after a test is executed.
378935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson     */
379935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    protected void tearDown() {
380935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        try {
381935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson            pbr.close();
382935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        } catch (IOException e) {
383935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson        }
384935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson    }
385935ede9c3846d11df39435c2f2e4517d90cd61e8Jesse Wilson}
386