public void ReOpenFileSuccess()
        {
            string path = Path.Combine(TemporaryDirectory, "file");

            using (var stream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
            {
                SafeFileHandle   writableHandle;
                ReOpenFileStatus status = FileUtilities.TryReOpenFile(
                    stream.SafeFileHandle,
                    FileDesiredAccess.GenericWrite,
                    FileShare.ReadWrite,
                    FileFlagsAndAttributes.None,
                    out writableHandle);

                using (writableHandle)
                {
                    XAssert.AreEqual(ReOpenFileStatus.Success, status);
                    XAssert.IsNotNull(writableHandle);
                    XAssert.IsFalse(writableHandle.IsInvalid);

                    using (var writableStream = new FileStream(writableHandle, FileAccess.Write, bufferSize: 128, isAsync: false))
                    {
                        writableStream.WriteByte(0xab);
                    }
                }

                int read = stream.ReadByte();
                XAssert.AreEqual(0xab, read);
            }
        }
        public void ReOpenFileSharingViolation()
        {
            string path = Path.Combine(TemporaryDirectory, "file");

            using (var stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read))
            {
                SafeFileHandle   writableHandle;
                ReOpenFileStatus status = FileUtilities.TryReOpenFile(
                    stream.SafeFileHandle,
                    FileDesiredAccess.GenericWrite,
                    FileShare.ReadWrite,
                    FileFlagsAndAttributes.None,
                    out writableHandle);

                using (writableHandle)
                {
                    XAssert.AreEqual(ReOpenFileStatus.SharingViolation, status);
                    XAssert.IsNull(writableHandle);
                }
            }
        }