public void GetByteAt_throws_exception_for_negative_index() { int window = 100; var streamMock = new Mock <MemoryStream>(MockBehavior.Strict); SetupMockStreamRead(streamMock).Returns((byte[] s, int o, int l) => 50); var buf = new SlidingStreamBuffer(streamMock.Object, window); buf.GetByteAt(-1); }
public void GetByteAt_calls_warmup_if_necessary() { int window = 100; var streamMock = new Mock <MemoryStream>(MockBehavior.Strict); SetupMockStreamRead(streamMock).Returns((byte[] s, int o, int l) => 50); var buf = new SlidingStreamBuffer(streamMock.Object, window); buf.GetByteAt(0); streamMock.VerifyAll(); }
public void MoveForward_causes_more_data_to_be_read_when_no_padding_buffer_is_supplied() { int window = 100; var streamMock = new Mock <MemoryStream>(MockBehavior.Strict); SetupMockStreamRead(streamMock).Returns((byte[] s, int o, int l) => l); var buf = new SlidingStreamBuffer(streamMock.Object, window, 0); buf.Warmup(); buf.MoveForward(1); buf.GetByteAt(0); streamMock.Verify(x => x.Read( It.IsAny <byte[]>(), It.IsAny <int>(), It.IsAny <int>()), Times.Exactly(2)); }
public void GetByteAt_retrieves_correct_byte() { int window = 100; var buffer = new byte[window]; for (int i = 0; i < buffer.Length; ++i) { buffer[i] = (byte)(200 - i); } var streamMock = new Mock <MemoryStream>(MockBehavior.Strict); SetupMockStreamRead(streamMock) .Returns((byte[] s, int o, int l) => { int actualLength = MathEx.Bounded(0, Math.Min(l, buffer.Length), buffer.Length); Array.Copy(buffer, 0, s, o, actualLength); return(actualLength); }); var buf = new SlidingStreamBuffer(streamMock.Object, window); buf.Warmup(); Assert.AreEqual(buffer[5], buf.GetByteAt(5)); }