final byte[] buffer = MessageDigestCalculatingInputStreamTest.generateRandomByteStream(4096); final ByteArrayInputStream bais = new ByteArrayInputStream(buffer); final ObservableInputStream ois = new ObservableInputStream(bais); final LastBytesKeepingObserver lko = new LastBytesKeepingObserver(); final byte[] readBuffer = new byte[23];
/** Tests, that {@link Observer#data(int)} is called. */ @Test public void testDataByteCalled() throws Exception { final byte[] buffer = MessageDigestCalculatingInputStreamTest.generateRandomByteStream(4096); final ObservableInputStream ois = new ObservableInputStream(new ByteArrayInputStream(buffer)); final LastByteKeepingObserver lko = new LastByteKeepingObserver(); assertEquals(-1, lko.lastByteSeen); ois.read(); assertEquals(-1, lko.lastByteSeen); assertFalse(lko.finished); assertFalse(lko.closed); ois.add(lko); for (int i = 1; i < buffer.length; i++) { final int result = ois.read(); assertEquals((byte) result, buffer[i]); assertEquals(result, lko.lastByteSeen); assertFalse(lko.finished); assertFalse(lko.closed); } final int result = ois.read(); assertEquals(-1, result); assertTrue(lko.finished); assertFalse(lko.closed); ois.close(); assertTrue(lko.finished); assertTrue(lko.closed); }