+
+ 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]);
+ }
+ }
+ });