@Test public void testSetOffset() throws EndOfSegmentException, SegmentTruncatedException { byte[] data1 = new byte[]{0, 1, 2, 3, 4, 5}; byte[] data2 = new byte[]{6, 7, 8, 9}; ByteBuffer wireData1 = createEventFromData(data1); ByteBuffer wireData2 = createEventFromData(data2); TestAsyncSegmentInputStream fakeNetwork = new TestAsyncSegmentInputStream(segment, 5); @Cleanup EventSegmentReaderImpl stream = SegmentInputStreamFactoryImpl.getEventSegmentReader(fakeNetwork, 0); fakeNetwork.complete(0, new WireCommands.SegmentRead(segment.getScopedName(), 0, false, false, ByteBufferUtils.slice(wireData1, 0, wireData1.remaining()))); ByteBuffer read = stream.read(); assertEquals(ByteBuffer.wrap(data1), read); fakeNetwork.complete(2, new WireCommands.SegmentRead(segment.getScopedName(), 0, false, false, ByteBufferUtils.slice(wireData1, 0, wireData1.remaining()))); fakeNetwork.complete(3, new WireCommands.SegmentRead(segment.getScopedName(), wireData1.remaining(), false, false, ByteBufferUtils.slice(wireData2, 0, wireData2.remaining()))); stream.setOffset(0); read = stream.read(); assertEquals(ByteBuffer.wrap(data1), read); read = stream.read(); assertEquals(ByteBuffer.wrap(data2), read); }