/************************************************************************* /* PushbackInputStreamTest.java -- Tests PushbackInputStream's of course /* /* Copyright (c) 1998 Free Software Foundation, Inc. /* Written by Aaron M. Renn (arenn@urbanophile.com) /* /* This program is free software; you can redistribute it and/or modify /* it under the terms of the GNU General Public License as published /* by the Free Software Foundation, either version 2 of the License, or /* (at your option) any later version. /* /* This program 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 for more details. /* /* You should have received a copy of the GNU General Public License /* along with this program; if not, write to the Free Software Foundation /* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA /*************************************************************************/ import java.io.*; public class PushbackInputStreamTest extends PushbackInputStream { public PushbackInputStreamTest(InputStream is, int size) { super(is, size); } public static void main(String[] argv) { System.out.println("Started test of PushbackInputStream"); String str = "Once when I was in fourth grade, my friend Lloyd\n" + "Saltsgaver and I got in trouble for kicking a bunch of\n" + "Kindergartners off the horse swings so we could play a game\n" + "of 'road hog'\n"; System.out.println("Test 1: Protected Variables Test"); { PushbackInputStreamTest pist = new PushbackInputStreamTest( new StringBufferInputStream(str), 15); boolean passed = true; if (pist.pos != pist.buf.length) { passed = false; System.out.println("The pos variable is wrong. Expected " + pist.buf.length + " but got " + pist.pos); } if (pist.buf.length != 15) { passed = false; System.out.println("The buf.length is wrong. Expected 15" + " but got " + pist.buf.length); } if (passed) System.out.println("PASSED: Protected Variables Test"); else System.out.println("FAILED: Protected Variables Test"); } System.out.println("Test 2: Basic Unread Tests"); try { PushbackInputStreamTest pist = new PushbackInputStreamTest( new StringBufferInputStream(str), 15); byte[] read_buf1 = new byte[12]; byte[] read_buf2 = new byte[12]; boolean passed = true; pist.read(read_buf1); pist.unread(read_buf1); pist.read(read_buf2); for (int i = 0; i < read_buf1.length; i++) { if (read_buf1[i] != read_buf2[i]) passed = false; } pist.unread(read_buf2, 1, read_buf2.length - 1); pist.unread(read_buf2[0]); int bytes_read, total_read = 0; while ((bytes_read = pist.read(read_buf1)) != -1) { System.out.print(new String(read_buf1, 0, bytes_read)); total_read += bytes_read; } if (total_read != str.length()) passed = false; if (passed) System.out.println("PASSED: Basic Unread Tests"); else System.out.println("FAILED: Basic Unread Tests"); } catch(IOException e) { System.out.println("FAILED: Basic Unread Tests: " + e); } System.out.println("Test 3: Buffer Overflow Test"); try { PushbackInputStreamTest pist = new PushbackInputStreamTest( new StringBufferInputStream(str), 10); byte[] read_buf = new byte[12]; pist.read(read_buf); pist.unread(read_buf); System.out.println("FAILED: Buffer Overflow Test"); } catch(IOException e) { System.out.println("PASSED: Buffer Overflow Test: " + e); } System.out.println("Finished tests of PushbackInputStream"); } // main } // class PushbackInputStreamTest