package nl.helixsoft.util;
import java.io.IOException;
import java.io.StringReader;
import java.io.StringReader;
import junit.framework.TestCase;
public class TestPeekReader extends TestCase
{
public void testRead() throws IOException
{
StringReader is = new StringReader("Almost, but not quite, entirely unlike tea.");
PeekReader pb = new PeekReader(is, 4);
assertEquals (0, pb.getPos());
assertEquals (0, pb.getFill());
assertEquals ('A', pb.peek());
assertEquals ('A', pb.read());
assertEquals (1, pb.getPos());
assertEquals (2, pb.getFill());
assertEquals ('l', pb.peek());
assertEquals ('l', pb.read());
assertEquals (2, pb.getPos());
assertEquals (2, pb.getFill());
assertEquals ('m', pb.peek());
assertEquals ('m', pb.read());
assertEquals (3, pb.getPos());
assertEquals (0, pb.getFill());
assertEquals ('o', pb.peek());
assertEquals ('o', pb.read());
assertEquals (0, pb.getPos());
assertEquals (0, pb.getFill());
assertEquals ('s', pb.peek());
assertEquals ('s', pb.read());
assertEquals (1, pb.getPos());
assertEquals (2, pb.getFill());
}
public void testReadMulti() throws IOException
{
StringReader is = new StringReader("So long, and thanks for all the fish!");
PeekReader pb = new PeekReader(is, 4);
char[] buf = new char[10];
pb.read(buf);
assertEquals ("So long, a", new String(buf));
}
public void testEofMid() throws IOException
{
StringReader is = new StringReader("42");
PeekReader pb = new PeekReader(is, 4);
assertEquals ('4', pb.read());
assertEquals ('2', pb.read());
assertEquals (2, pb.getFill());
assertEquals (-1, pb.read());
assertEquals (-1, pb.read());
}
public void testEof() throws IOException
{
StringReader is = new StringReader("Pan");
PeekReader pb = new PeekReader(is, 4);
assertEquals ('P', pb.read());
assertEquals ('a', pb.read());
assertEquals ('n', pb.read());
assertEquals (3, pb.getFill());
assertEquals (-1, pb.read());
assertEquals (-1, pb.read());
}
public void testEofBoundary() throws IOException
{
StringReader is = new StringReader("Ford");
PeekReader pb = new PeekReader(is, 4);
assertEquals ('F', pb.read());
assertEquals ('o', pb.read());
assertEquals ('r', pb.read());
assertEquals ('d', pb.read());
assertEquals (-1, pb.read());
assertEquals (-1, pb.read());
}
public void testSubstring() throws IOException
{
StringReader is = new StringReader("The question of life, the universe, and everything.");
PeekReader pb = new PeekReader(is, 4);
int start = pb.getPos();
pb.read();
pb.read();
int end = pb.getPos();
pb.read();
assertEquals (0, start);
assertEquals (2, end);
assertEquals ("Th", pb.subString(start, end));
start = pb.getPos();
pb.read();
pb.read();
end = pb.getPos();
assertEquals (3, start);
assertEquals (1, end);
assertEquals (" q", pb.subString(start, end));
}
}