public void BufferedSourceExtensions_Read()
 {
     int srcBufSize = 32768;
     int testSampleSize = 68;
     int readBufSize = 1000;
     int readBufOffset = 512;
     var src = new BigBufferedSourceMock (long.MaxValue, srcBufSize, FillFunction);
     src.FillBuffer ();
     var skip = srcBufSize - testSampleSize;
     src.SkipBuffer (skip);
     var buf = new byte[readBufSize];
     Assert.AreEqual (testSampleSize, BufferedSourceExtensions.Read (src, buf, readBufOffset, testSampleSize));
     for (int i = 0; i < testSampleSize; i++)
     {
         Assert.AreEqual (FillFunction ((long)(skip + i)), buf[readBufOffset + i]);
     }
     src.TrySkip (long.MaxValue - (long)srcBufSize - 3);
     Assert.AreEqual (3, BufferedSourceExtensions.Read (src, buf, 0, buf.Length));
 }
        public void BufferedSourceExtensions_IsEmpty()
        {
            var src = new BigBufferedSourceMock (0, 1, FillFunction);
            src.FillBuffer ();
            Assert.IsTrue (BufferedSourceExtensions.IsEmpty (src));

            src = new BigBufferedSourceMock (1, 1, FillFunction);
            src.FillBuffer ();
            Assert.IsFalse (BufferedSourceExtensions.IsEmpty (src));
            src.SkipBuffer (1);
            Assert.IsTrue (BufferedSourceExtensions.IsEmpty (src));

            src = new BigBufferedSourceMock (long.MaxValue, 32768, FillFunction);
            src.FillBuffer ();
            Assert.IsFalse (BufferedSourceExtensions.IsEmpty (src));
            src.TrySkip (long.MaxValue - 1);
            src.FillBuffer ();
            Assert.IsFalse (BufferedSourceExtensions.IsEmpty (src));
            src.SkipBuffer (1);
            Assert.IsTrue (BufferedSourceExtensions.IsEmpty (src));
        }