public void UnmanagedTest()
        {
            using var stream = new MemoryStream();
            using (var writer = new BinaryWriter(stream))
            {
                writer.Write(1);
                writer.Dispose(); // double dispose is OK
            }

            stream.Seek(0, SeekOrigin.Begin);
            using var reader = new Infrastructure.BinaryReader(stream);
            Assert.AreEqual(1, reader.Read <int>());
            Assert.Throws <EndOfStreamException>(() => reader.Read <int>());
            Assert.Throws <EndOfStreamException>(() => reader.ReadString());
            reader.Dispose(); // double dispose is OK
        }
        public void ManyUnmanagedBoundaryTests(int bufferSize)
        {
            using var stream = new MemoryStream();
            using (var writer = new BinaryWriter(stream))
            {
                for (var i = 0; i < bufferSize / sizeof(int); i++)
                {
                    writer.Write(i);
                }
            }

            stream.Seek(0, SeekOrigin.Begin);
            using var reader = new Infrastructure.BinaryReader(stream);
            for (var i = 0; i < bufferSize / sizeof(int); i++)
            {
                Assert.AreEqual(i, reader.Read <int>());
            }
            Assert.Throws <EndOfStreamException>(() => reader.Read <int>());
            Assert.Throws <EndOfStreamException>(() => reader.ReadString());
        }