package be.nikiroo.utils.test_code; import java.io.ByteArrayInputStream; import java.io.InputStream; import be.nikiroo.utils.IOUtils; import be.nikiroo.utils.NextableInputStream; import be.nikiroo.utils.NextableInputStreamStep; import be.nikiroo.utils.test.TestCase; import be.nikiroo.utils.test.TestLauncher; public class NextableInputStreamTest extends TestLauncher { public NextableInputStreamTest(String[] args) { super("NextableInputStream test", args); addTest(new TestCase("Simple byte array reading") { @Override public void test() throws Exception { byte[] expected = new byte[] { 42, 12, 0, 127 }; InputStream bin = new ByteArrayInputStream(expected); NextableInputStream in = new NextableInputStream(bin); byte[] actual = IOUtils.toByteArray(in); assertEquals( "The resulting array has not the same number of items", expected.length, actual.length); for (int i = 0; i < expected.length; i++) { assertEquals("Item " + i + " (0-based) is not the same", expected[i], actual[i]); } } }); addTest(new TestCase("Stop at 12") { @Override public void test() throws Exception { byte[] expected = new byte[] { 42, 12, 0, 127 }; InputStream bin = new ByteArrayInputStream(expected); NextableInputStream in = new NextableInputStream(bin); in.addStep(new NextableInputStreamStep(12)); byte[] actual = IOUtils.toByteArray(in); assertEquals( "The resulting array has not the correct number of items", 1, actual.length); for (int i = 0; i < actual.length; i++) { assertEquals("Item " + i + " (0-based) is not the same", expected[i], actual[i]); } } }); addTest(new TestCase("Stop at 12, resume, stop again, resume") { @Override public void test() throws Exception { byte[] expected = new byte[] { 42, 12, 0, 127, 12, 51, 11, 12 }; NextableInputStream in = new NextableInputStream( new ByteArrayInputStream(expected)); in.addStep(new NextableInputStreamStep(12)); byte[] actual1 = IOUtils.toByteArray(in); byte[] expected1 = new byte[] { 42 }; assertEquals( "The FIRST resulting array has not the correct number of items", expected1.length, actual1.length); for (int i = 0; i < actual1.length; i++) { assertEquals("Item " + i + " (0-based) is not the same", expected1[i], actual1[i]); } assertEquals("Cannot get SECOND entry", true, in.next()); byte[] actual2 = IOUtils.toByteArray(in); byte[] expected2 = new byte[] { 0, 127 }; assertEquals( "The SECOND resulting array has not the correct number of items", expected2.length, actual2.length); for (int i = 0; i < actual2.length; i++) { assertEquals("Item " + i + " (0-based) is not the same", expected2[i], actual2[i]); } assertEquals("Cannot get next THIRD entry", true, in.next()); byte[] actual3 = IOUtils.toByteArray(in); byte[] expected3 = new byte[] { 51, 11 }; assertEquals( "The THIRD resulting array has not the correct number of items", expected3.length, actual3.length); for (int i = 0; i < actual3.length; i++) { assertEquals("Item " + i + " (0-based) is not the same", expected3[i], actual3[i]); } } }); } }