@Cleanup
EventSegmentReaderImpl stream1 = SegmentInputStreamFactoryImpl.getEventSegmentReader(fakeNetwork, 0);
assertFalse(stream1.isSegmentReady());
fakeNetwork.complete(0, new WireCommands.SegmentRead(segment.getScopedName(), 0, false, true, ByteBufferUtils.slice(wireData, 0, 0)));
assertTrue(stream1.isSegmentReady());
AssertExtensions.assertThrows(EndOfSegmentException.class, () -> stream1.read());
@Cleanup
EventSegmentReaderImpl stream2 = SegmentInputStreamFactoryImpl.getEventSegmentReader(fakeNetwork, 0);
assertFalse(stream2.isSegmentReady());
fakeNetwork.complete(0, new WireCommands.SegmentRead(segment.getScopedName(), 0, false, true, wireData.slice()));
assertTrue(stream2.isSegmentReady());
assertEquals(ByteBuffer.wrap(data), stream2.read());
assertTrue(stream2.isSegmentReady());
AssertExtensions.assertThrows(EndOfSegmentException.class, () -> stream2.read());
@Cleanup
EventSegmentReaderImpl stream3 = SegmentInputStreamFactoryImpl.getEventSegmentReader(fakeNetwork, 0);
assertFalse(stream3.isSegmentReady());
fakeNetwork.complete(0, new WireCommands.SegmentRead(segment.getScopedName(), 0, false, false, wireData.slice()));
fakeNetwork.complete(1, new WireCommands.SegmentRead(segment.getScopedName(), wireData.remaining(), false, true, ByteBufferUtils.slice(wireData, 0, 0)));
assertTrue(stream3.isSegmentReady());
assertEquals(ByteBuffer.wrap(data), stream3.read());
assertTrue(stream3.isSegmentReady());
AssertExtensions.assertThrows(EndOfSegmentException.class, () -> stream3.read());
@Cleanup
EventSegmentReaderImpl stream4 = SegmentInputStreamFactoryImpl.getEventSegmentReader(fakeNetwork, 0);
assertFalse(stream4.isSegmentReady());