public void MoveFile(NewFileSystemDelegate fsFactory)
        {
            DiscFileSystem fs = fsFactory();

            DiscFileInfo fi = fs.GetFileInfo("foo.txt");

            using (Stream s = fi.Create())
            {
                for (int i = 0; i < 10; ++i)
                {
                    s.Write(new byte[111], 0, 111);
                }
            }
            fi.Attributes = FileAttributes.Hidden | FileAttributes.System;

            fi.MoveTo("foo2.txt");

            fi = fs.GetFileInfo("foo2.txt");
            Assert.IsTrue(fi.Exists);
            Assert.AreEqual(1110, fi.Length);
            Assert.AreEqual(FileAttributes.Hidden | FileAttributes.System, fi.Attributes);

            fi = fs.GetFileInfo("foo.txt");
            Assert.IsFalse(fi.Exists);
        }
        public void MoveFile_Overwrite(NewFileSystemDelegate fsFactory)
        {
            DiscFileSystem fs = fsFactory();

            DiscFileInfo fi = fs.GetFileInfo("foo.txt");

            using (Stream s = fi.Create())
            {
                s.WriteByte(1);
            }

            DiscFileInfo fi2 = fs.GetFileInfo("foo2.txt");

            using (Stream s = fi2.Create())
            {
            }

            fs.MoveFile("foo.txt", "foo2.txt", true);

            Assert.IsFalse(fi.Exists);
            Assert.IsTrue(fi2.Exists);
            Assert.AreEqual(1, fi2.Length);
        }