1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.CharArrayReader; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FilterReader; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PushbackReader; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Reader; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.StringReader; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class PushbackReaderTest extends junit.framework.TestCase { 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PushbackReader pbr; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String pbString = "Hello World"; 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#PushbackReader(java.io.Reader) 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ConstructorLjava_io_Reader() { 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.PushbackReader(java.io.Reader) 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.close(); 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString)); 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char buf[] = new char[5]; 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(buf, 0, 5); 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(buf); 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Correct 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Created reader with buffer larger than 1"); 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#PushbackReader(java.io.Reader, int) 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ConstructorLjava_io_ReaderI() { 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.PushbackReader(java.io.Reader, int) 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Used to test", true); 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#close() 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_close() { 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.PushbackReader.close() 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.close(); 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(); 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to throw exception reading from closed reader"); 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#mark(int) 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_markI() { 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.mark(3); 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // correct 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("mark failed to throw expected IOException"); 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#markSupported() 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_markSupported() { 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method boolean java.io.PushbackReader.markSupported() 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("markSupported returned true", !pbr.markSupported()); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#read() 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read() { 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method int java.io.PushbackReader.read() 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char c; 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(); 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = (char) pbr.read(); 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to read char: " + c, c == pbString.charAt(1)); 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Reader reader = new PushbackReader(new CharArrayReader( 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new char[] { '\u8765' })); 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong double byte character", reader.read() == '\u8765'); 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during read test : " + e.getMessage()); 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#read(char[], int, int) 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read$CII() { 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method int java.io.PushbackReader.read(char [], int, int) 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = new char[5]; 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(c, 0, 5); 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to read chars", new String(c).equals(pbString 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .substring(0, 5))); 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during read test : " + e.getMessage()); 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_read_$CII_Exception() throws IOException { 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString), 10); 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] charArray = new char[10]; 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(null, 1, 0); 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException expected) { 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, 0, -1); 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, -1, 0); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, 0, 0); 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, 0, charArray.length); 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, charArray.length, 0); 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, charArray.length + 1, 0); 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, 0, charArray.length + 1); 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IndexOutOfBoundsException expected) { 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Can't read from a closed PushbackReader. 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.close(); 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(charArray, 0, 1); 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(); 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException expected) { 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#ready() 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_ready() { 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method boolean java.io.PushbackReader.ready() 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = new char[11]; 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (c.length > 0) 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ;// use c to avoid warning msg 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Ready stream returned false to ready()", pbr.ready()); 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during ready() test : " + e.getMessage()); 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#reset() 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_reset() { 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.reset(); 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // correct 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("mark failed to throw expected IOException"); 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(char[]) 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unread$C() { 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.PushbackReader.unread(char []) 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = new char[5]; 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(c, 0, 5); 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(c); 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(c, 0, 5); 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to unread chars", new String(c).equals(pbString 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .substring(0, 5))); 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during read test : " + e.getMessage()); 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#skip(long) 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_skip$J() { 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char chars[] = new char[] { 'h', 'e', 'l', 'l', 'o' }; 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < 3; i++) { 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Reader reader, reader2; 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath switch (i) { 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 0: 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader = new StringReader(new String(chars)); 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader2 = new StringReader(new String(chars)); 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath break; 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 1: 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader = new FilterReader(new StringReader(new String(chars))) { 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader2 = new FilterReader(new StringReader(new String(chars))) { 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath }; 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath break; 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath default: 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader = new CharArrayReader(chars); 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath reader2 = new CharArrayReader(chars); 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PushbackReader pReader = new PushbackReader(reader, 2); 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PushbackReader pReader2 = new PushbackReader(reader2, 2); 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean skipped = false; 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath long numSkipped = 0; 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped = pReader2.skip(3); 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pReader2.unread('a'); 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pReader2.unread('b'); 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader2.skip(10); 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Did not skip correct number of characters", 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 7, numSkipped); 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped = 0; 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(2); 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pReader.unread('i'); 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(2); 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(0); 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath skipped = true; 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(-1); 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to throw " 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + new IllegalArgumentException().getClass().getName()); 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to skip characters" + e, skipped); 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to skip characters" + e); 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(1); 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(1); 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath numSkipped += pReader.skip(1); 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Failed to skip all characters", 6, numSkipped); 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath long nextSkipped = pReader.skip(1); 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("skipped empty reader", 0, nextSkipped); 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Failed to skip more characters" + e); 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(char[], int, int) 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unread$CII() { 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.PushbackReader.unread(char [], int, int) 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] c = new char[5]; 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(c, 0, 5); 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(c, 0, 2); 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(c, 0, 5); 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to unread chars", new String(c).equals(pbString 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .substring(0, 2) 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + pbString.substring(5, 8))); 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during unread test : " + e.getMessage()); 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(char[], int, int) 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unread_$CII_NullPointerException() throws IOException { 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //a pushback reader with one character buffer 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString)); 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(null, 0, 1); 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw NullPointerException"); 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(char[], int, int) 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unread_$CII_Exception_InsufficientBuffer() throws IOException { 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //a pushback reader with one character buffer 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString)); 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //if count > buffer's size , should throw IOException 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(new char[pbString.length()], 0, 2); 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw IOException"); 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(char[], int, int) 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unread_$CII_ArrayIndexOutOfBoundsException() throws IOException { 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath //a pushback reader with one character buffer 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString)); 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(new char[pbString.length()], -1, -1); 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("should throw ArrayIndexOutOfBoundsException"); 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ArrayIndexOutOfBoundsException e) { 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * java.io.PushbackReader#unread(int) 348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_unreadI() { 350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.PushbackReader.unread(int) 351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int c; 354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.read(); 355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath c = pbr.read(); 356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.unread(c); 357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to unread char", pbr.read() == c); 358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException during unread test : " + e.getMessage()); 360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Sets up the fixture, for example, open a network connection. This method 365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * is called before a test is executed. 366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void setUp() { 368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr = new PushbackReader(new StringReader(pbString), 10); 369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tears down the fixture, for example, close a network connection. This 373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * method is called after a test is executed. 374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() { 376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath pbr.close(); 378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 382