package mireka.filter.builtin; import static org.junit.Assert.*; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Arrays; import mireka.filter.spf.PrependingInputStream; import org.junit.Test; public class PrependingInputStreamTest { private byte[] header = new byte[] { 1, 2, 3 }; private byte[] body = new byte[] { 4, 5, 6 }; private byte[] expected = new byte[] { 1, 2, 3, 4, 5, 6 }; private InputStream bodyStream = new ByteArrayInputStream(body); @Test public void testSingleReads() throws IOException { PrependingInputStream stream = new PrependingInputStream(header, bodyStream); byte[] actual = readByBytes(stream); assertArrayEquals(expected, actual); } private byte[] readByBytes(PrependingInputStream stream) throws IOException { ByteArrayOutputStream buffer = new ByteArrayOutputStream(); int byteRead; while (-1 != (byteRead = stream.read())) buffer.write(byteRead); byte[] actual = buffer.toByteArray(); return actual; } @Test public void testBlockRead() throws IOException { PrependingInputStream stream = new PrependingInputStream(header, bodyStream); byte[] buffer = new byte[100]; int cRead = stream.read(buffer); assertTrue(cRead != -1); byte[] actual = Arrays.copyOf(buffer, cRead); assertArrayEquals(expected, actual); } }