public void GetBuffer_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.GetBuffer();
     streamMock.VerifyAll();
 }
 public void GetBuffer_returns_a_buffer_corresponding_to_GetNumBytesAvailable()
 {
     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.Warmup();
     streamMock.VerifyAll();
     Assert.AreEqual(buf.GetNumBytesAvailable(), buf.GetBuffer().Length);
 }
 public void GetBuffer_returns_a_buffer_with_valid_data()
 {
     int window = 100;
     var buffer = new byte[window*2];
     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();
     VerifyBufferPartialEquality(buffer, buf.GetBuffer());
 }
 public void GetBuffer_when_moved_beyond_end_of_stream_yields_empty_buffer()
 {
     int window = 10;
     var buffer = new byte[window*2];
     for (int i = 0; i < buffer.Length; ++i) buffer[i] = (byte) (200 - i);
     var buf = new SlidingStreamBuffer(new MemoryStream(buffer), window, window);
     buf.Warmup();
     buf.MoveForward(buffer.Length + 1);
     Assert.IsTrue(buf.GetBuffer().Length == 0);
 }