public void MultiBufferMemoryStreamReadSeekSetLengthTest() { byte[] outBuffer = new byte[2 * 1024 * 1024]; byte[] buffer = GetRandomBuffer(outBuffer.Length); using (MemoryStream memStream = new MemoryStream()) { memStream.Write(buffer, 0, buffer.Length); using (MultiBufferMemoryStream multiBufferStream = new MultiBufferMemoryStream(null /* bufferManager */)) { multiBufferStream.Write(buffer, 0, buffer.Length); multiBufferStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); multiBufferStream.Read(outBuffer, 0, buffer.Length); TestHelper.AssertBuffersAreEqual(buffer, outBuffer); multiBufferStream.Seek(-1, SeekOrigin.End); Assert.AreEqual(buffer.Length - 1, multiBufferStream.Position); multiBufferStream.Seek(-1024, SeekOrigin.End); memStream.Seek(-1024, SeekOrigin.End); TestHelper.AssertStreamsAreEqual(multiBufferStream, memStream); multiBufferStream.SetLength(3 * 1024 * 1024); memStream.SetLength(3 * 1024 * 1024); multiBufferStream.Seek(0, SeekOrigin.Begin); memStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); } } }
public void MultiBufferMemoryStreamReadSeekSetLengthTestAPM() { byte[] outBuffer = new byte[2 * 1024 * 1024]; byte[] buffer = GetRandomBuffer(outBuffer.Length); using (MemoryStream memStream = new MemoryStream()) { memStream.Write(buffer, 0, buffer.Length); using (MultiBufferMemoryStream multiBufferStream = new MultiBufferMemoryStream(null /* bufferManager */)) { using (AutoResetEvent waitHandle = new AutoResetEvent(false)) { IAsyncResult result = multiBufferStream.BeginWrite(buffer, 0, buffer.Length, ar => waitHandle.Set(), null); waitHandle.WaitOne(); multiBufferStream.EndWrite(result); multiBufferStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); result = multiBufferStream.BeginRead(outBuffer, 0, buffer.Length, ar => waitHandle.Set(), null); waitHandle.WaitOne(); multiBufferStream.EndRead(result); TestHelper.AssertBuffersAreEqual(buffer, outBuffer); multiBufferStream.Seek(-1, SeekOrigin.End); Assert.AreEqual(buffer.Length - 1, multiBufferStream.Position); multiBufferStream.Seek(-1024, SeekOrigin.End); memStream.Seek(-1024, SeekOrigin.End); TestHelper.AssertStreamsAreEqual(multiBufferStream, memStream); multiBufferStream.SetLength(3 * 1024 * 1024); memStream.SetLength(3 * 1024 * 1024); multiBufferStream.Seek(0, SeekOrigin.Begin); memStream.Seek(0, SeekOrigin.Begin); TestHelper.AssertStreamsAreEqual(memStream, multiBufferStream); } } } }