private void TestRandomSeekOperation(AlignedStreamBase alignedStream, Stream dataStream, long offset, SeekOrigin origin) { switch (origin) { case SeekOrigin.Begin: break; case SeekOrigin.Current: offset -= dataStream.Position; break; case SeekOrigin.End: offset -= dataStream.Length; break; default: Assert.Fail("Invalid seek origin"); break; } long dataPosition = dataStream.Seek(offset, origin); long alignedPosition = alignedStream.Seek(offset, origin); Assert.AreEqual(alignedPosition, dataPosition, "Position mismatch"); Assert.AreEqual(alignedStream.Position, dataStream.Position, "Position mismatch"); Assert.AreEqual(alignedStream.Length, dataStream.Length, "Length mismatch"); }
private void TestRandomSeekOperation(AlignedStreamBase alignedStream, Stream dataStream, int offsetUpperBound) { int offset = Random.Next(offsetUpperBound); if (0 == Random.Next(2)) { offset -= (offset % alignedStream.AlignmentSize); } SeekOrigin origin = (SeekOrigin)Random.Next(3); this.TestRandomSeekOperation(alignedStream, dataStream, offset, origin); }