private void AssertSeek(int offset, int length, int seekOffset, SeekOrigin seekOrigin) { var source = new MemoryStream(SourceData); var streamlet = new Streamlet(source, offset, length); streamlet.Seek(seekOffset, seekOrigin); long sourcePosition; long position; switch (seekOrigin) { case SeekOrigin.Begin: case SeekOrigin.Current: sourcePosition = offset + seekOffset; position = seekOffset; break; case SeekOrigin.End: sourcePosition = offset + length - seekOffset; position = length - seekOffset; break; default: throw new NotSupportedException(); } Assert.AreEqual(sourcePosition, source.Position); Assert.AreEqual(position, streamlet.Position); }
private void AssertRead(int offset, int length) { var source = new MemoryStream(SourceData); var streamlet = new Streamlet(source, offset, length); var block = new byte[SourceData.Length]; var read = streamlet.Read(block, 0, block.Length); var sourceBalance = source.Length - offset; var expectedRead = Math.Min(sourceBalance, length); Assert.AreEqual(expectedRead, read); var expectedSequence = SourceData.Skip(offset).Take(read); var sequence = block.Take(read); Assert.IsTrue(expectedSequence.SequenceEqual(sequence)); Assert.AreEqual(offset + read, source.Position); }