public unsafe void CopyTo1()
{
const int bufferSize = 10;
byte* buffer = (byte*)Marshal.AllocHGlobal(bufferSize);
try
{
var s = new MemoryStream(new byte[] { 0, 1, 2, 3, 4 });
InvalidateMemory(buffer, bufferSize);
s.Seek(0, SeekOrigin.Begin);
s.CopyTo(buffer, 3);
Assert.Equal(new byte[] { 0, 1, 2 }, ReadBuffer(buffer, bufferSize));
InvalidateMemory(buffer, bufferSize);
s.Seek(0, SeekOrigin.Begin);
s.CopyTo(buffer, 0);
Assert.Equal(new byte[0], ReadBuffer(buffer, bufferSize));
InvalidateMemory(buffer, bufferSize);
s.Seek(0, SeekOrigin.Begin);
s.CopyTo(buffer, 5);
Assert.Equal(new byte[] { 0, 1, 2, 3, 4 }, ReadBuffer(buffer, bufferSize));
Assert.Throws<IOException>(() => s.CopyTo(buffer, 6));
}
finally
{
Marshal.FreeHGlobal((IntPtr)buffer);
}
}