/** * Tests the ability to skip remaining bytes upon closing. */ @Test public void testSkipRemainingOnClose() throws Exception { for (int size = 0; size < MAX_SIZE; size++) { int bound = size / 2; val data = construct(size); @Cleanup val input = new ByteArrayInputStream(data); @Cleanup val bis = new BoundedInputStream(input, bound); Assert.assertEquals("Unexpected value for getBound().", bound, bis.getBound()); if (size % 2 == 1) { // Only read some data for every other iteration. int bytesRead = bis.read(new byte[bound / 2]); Assert.assertEquals("Unexpected number of bytes read.", bound / 2, bytesRead); } bis.close(); Assert.assertEquals("Unexpected number of bytes remaining to be read after skipRemaining().", data.length - bis.getBound(), input.available()); } }
int b1 = bis.read(); expectedAvailable--; Assert.assertEquals("Unexpected result when reading 1 byte.", data[0], b1); int c = bis.read(buffer); expectedAvailable -= c; Assert.assertEquals("Unexpected number of bytes read.", buffer.length, c); c = bis.read(buffer, 0, buffer.length / 2); expectedAvailable -= c; Assert.assertEquals("Unexpected number of bytes read.", buffer.length / 2, c); Assert.assertEquals("Unexpected result from read() when reaching the end.", -1, bis.read()); Assert.assertEquals("Unexpected result from read(byte[]) when reaching the end.", -1, bis.read(buffer)); Assert.assertEquals("Unexpected result from read(byte[], int, int) when reaching the end.", -1, bis.read(buffer, 0, buffer.length)); Assert.assertEquals("Unexpected result from skip() when reaching the end.", 0, bis.skip(10));
int c = s.read(buffer); AssertExtensions.assertArrayEquals("Unexpected data read into buffer for bound " + size, data, expectedPos, buffer, 0, c); Assert.assertEquals("Unexpected result from available() after reading a buffer for bound " + size, s.getBound() - c, s.available());