Exemplo n.º 1
0
 private static void EnsureDirectoryNotExists(string dir)
 {
     if (VirtualDrive.ExistsDirectory(dir))
     {
         throw new Exception("\"" + dir + "\" already exists!");
     }
 }
Exemplo n.º 2
0
        public void Process(object obj)
        {
            var album = obj as AlbumExplorer.AlbumResult;

            DirectoryInfo srcDir = album.Directory;

            if (!VirtualDrive.ExistsDirectory(srcDir.FullName))
            {
                throw new Exception("Source directory not found: \""
                                    + srcDir.FullName + "\"");
            }

            DirectoryNameGenerator generator = new DirectoryNameGenerator(Pattern);

            if (!generator.CanBuildName(album.Album.Words))
            {
                Logger.WriteLine(Tokens.Warning, "Can not build name for directory \""
                                 + srcDir + "\" with pattern \"" + generator.ToString() + "\"");

                return;
            }

            renamer.ProcessMessage(new FileOperationProcessor.Message(
                                       Path.Combine(srcDir.Parent.FullName, generator.Name(album.Album.Words)),
                                       FileOperationProcessor.FileOperation.Move));

            try
            {
                renamer.Process(srcDir);
            }
            catch (IOException exception)
            {
                Logger.WriteLine(Tokens.Exception, exception + "\n" + exception.StackTrace);
            }
        }
Exemplo n.º 3
0
        private void MoveToRecycleBin(string id)
        {
            SerializedCommand cmd;

            if (VirtualDrive.ExistsDirectory(id))
            {
                cmd = CreateDeleteCommand(new DirectoryInfo(id));
            }
            else if (VirtualDrive.ExistsFile(id))
            {
                cmd = CreateDeleteCommand(new FileInfo(id));
            }
            else
            {
                throw new Exception("\"" + id + "\" does not exist!");
            }

            ProcessCommand(cmd);

            if (!Object.ReferenceEquals(UndoFile, null))
            {
                UndoFile.Write(CreateUndoCommand(cmd));
                UndoFile.Write(cmd);
            }
        }
Exemplo n.º 4
0
        public void Process(object obj)
        {
            var album = obj as AlbumExplorer.AlbumResult;

            DirectoryInfo srcDir = album.Directory;

            if (!VirtualDrive.ExistsDirectory(srcDir.FullName))
            {
                throw new Exception("Source directory not found: \""
                                    + srcDir.FullName + "\"");
            }

            if (!VirtualDrive.ExistsDirectory(LibraryDirectory))
            {
                throw new Exception("No valid library directory: \"" + LibraryDirectory + "\"");
            }

            string dstName = namer.Name(album.Album.Words);

            renamer.ProcessMessage(new FileOperationProcessor.Message(
                                       Path.Combine(LibraryDirectory, dstName),
                                       CopyOrMove,
                                       ConfilctSolving));

            renamer.Process(srcDir);
        }
Exemplo n.º 5
0
 private static void EnsureDirectoryExists(string dir)
 {
     if (!VirtualDrive.ExistsDirectory(dir))
     {
         throw new Exception("\"" + dir + "\" does not exist!");
     }
 }
Exemplo n.º 6
0
        private void OnButtonBrowseClick(object sender, RoutedEventArgs e)
        {
            string path = BrowseForDirectory();

            if (VirtualDrive.ExistsDirectory(path))
            {
                Text = path;
            }
        }
Exemplo n.º 7
0
        private static void TestMoveDir()
        {
            string undoFileName = VirtualDrive.VirtualFileName(
                "TestFileCopyProcessorUndoFile.txt");

            string srcDir   = VirtualDrive.VirtualFileName(@"srcFolder\folder0");
            string srcFile0 = Path.Combine(srcDir, "t0.bin");
            string srcFile1 = Path.Combine(srcDir, "t1.bin");

            string dstDir   = VirtualDrive.VirtualFileName(@"dstFolder\folder1");
            string dstFile0 = Path.Combine(dstDir, "t0.bin");
            string dstFile1 = Path.Combine(dstDir, "t1.bin");

            VirtualDrive.Store(VirtualDrive.VirtualFileName(srcFile0), null);
            VirtualDrive.Store(VirtualDrive.VirtualFileName(srcFile1), null);

            UnitTest.Test(VirtualDrive.ExistsDirectory(srcDir));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(dstDir));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile1));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileOperationProcessor p = new FileOperationProcessor();
                p.Operation = FileOperationProcessor.FileOperation.Move;
                p.UndoFile  = undoFileWriter;
                p.NewName   = dstDir;

                p.Process(new DirectoryInfo(srcDir));
            }

            UnitTest.Test(!VirtualDrive.ExistsDirectory(srcDir));
            UnitTest.Test(VirtualDrive.ExistsDirectory(dstDir));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile1));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(srcDir));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(dstDir));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile1));
            UnitTest.Test(!VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(dstFile1));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(!VirtualDrive.ExistsDirectory(srcDir));
            UnitTest.Test(VirtualDrive.ExistsDirectory(dstDir));
            UnitTest.Test(!VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(srcFile1));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile1));

            VirtualDrive.DeleteDirectory(dstDir, true);
        }
Exemplo n.º 8
0
        private static void TestCopyDir()
        {
            string undoFileName = VirtualDrive.VirtualFileName(
                "TestFileCopyProcessorUndoFile.txt");

            string folder0    = VirtualDrive.VirtualFileName("folder0");
            string filename00 = Path.Combine(folder0, "t0.bin");
            string filename01 = Path.Combine(folder0, "t1.bin");

            string folder1    = VirtualDrive.VirtualFileName("folder1");
            string filename10 = Path.Combine(folder1, "t0.bin");
            string filename11 = Path.Combine(folder1, "t1.bin");

            VirtualDrive.Store(VirtualDrive.VirtualFileName(filename00), null);
            VirtualDrive.Store(VirtualDrive.VirtualFileName(filename01), null);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileOperationProcessor p = new FileOperationProcessor();
                p.Operation = FileOperationProcessor.FileOperation.Copy;
                p.UndoFile  = undoFileWriter;
                p.NewName   = folder1;

                p.Process(new DirectoryInfo(folder0));
            }

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(VirtualDrive.ExistsFile(filename11));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename11));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(VirtualDrive.ExistsFile(filename11));

            VirtualDrive.DeleteDirectory(folder0, true);
            VirtualDrive.DeleteDirectory(folder1, true);
        }
Exemplo n.º 9
0
        internal static void EnsurePathExists(VirtualPath path, IList <IFileSystemOperation> operations)
        {
            for (int i = 0; i < path.Parts.Count(); i++)
            {
                string parent = path.PartialPath(i + 1).ToString();

                if (!VirtualDrive.ExistsDirectory(parent))
                {
                    operations.Add(Factory.CreateDirectoryCreate(parent));
                }
            }
        }
Exemplo n.º 10
0
        private void OnTextBoxViewTextChanged(object sender, TextChangedEventArgs e)
        {
            if (!blockUpdateItems)
            {
                UpdateItems();
            }

            Directory = Text;

            if (VirtualDrive.ExistsDirectory(Directory))
            {
                RaiseEvent(new RoutedEventArgs(DirectoryChangedEvent, this));
            }
        }
Exemplo n.º 11
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);

            if (e.Args.Length == 1 &&
                (VirtualDrive.ExistsDirectory(e.Args[0]) || VirtualDrive.ExistsFile(e.Args[0])))
            {
                startupPath = e.Args[0];
            }

            CoreControls.Preferences.AppPreferences.Load(AppName);

            ApplySkin(new Uri("/CoreControls;component/resources/BaseSkin.xaml", UriKind.Relative));
        }
Exemplo n.º 12
0
 private void buttonStart_Click(object sender, RoutedEventArgs e)
 {
     if (VirtualDrive.ExistsDirectory(CurrentPath))
     {
         if (batchWork != null)
         {
             StopWorkerThread();
         }
         else
         {
             StartWorkerThread();
         }
     }
 }
Exemplo n.º 13
0
 private static void ProcessDelete(SerializedCommand command)
 {
     if (VirtualDrive.ExistsDirectory(command.Data[0]))
     {
         VirtualDrive.DeleteDirectory(command.Data[0], true);
     }
     else if (VirtualDrive.ExistsFile(command.Data[0]))
     {
         VirtualDrive.DeleteFile(command.Data[0]);
     }
     else
     {
         throw new Exception("\"" + command.Data[0] + "\" does not exist!");
     }
 }
Exemplo n.º 14
0
        public static void ClearAttributes(string currentDir)
        {
            if (VirtualDrive.ExistsDirectory(currentDir))
            {
                VirtualDrive.ClearDirectoryAttributes(currentDir);

                foreach (string dir in VirtualDrive.GetDirectories(currentDir))
                {
                    ClearAttributes(dir);
                }
                foreach (string file in VirtualDrive.GetFiles(currentDir, "*.*"))
                {
                    VirtualDrive.ClearFileAttributes(file);
                }
            }
        }
Exemplo n.º 15
0
 private static void ProcessCopy(SerializedCommand command)
 {
     if (VirtualDrive.ExistsDirectory(command.Data[0]))
     {
         //CoreVirtualDrive.FileSystemOperations.SafeOperations.CopyDirectory(command.Data[0], command.Data[1]);
         VirtualDrive.CopyDirectory(command.Data[0], command.Data[1]);
     }
     else if (VirtualDrive.ExistsFile(command.Data[0]))
     {
         //CoreVirtualDrive.FileSystemOperations.SafeOperations.CopyFile(command.Data[0], command.Data[1]);
         VirtualDrive.CopyFile(command.Data[0], command.Data[1]);
     }
     else
     {
         throw new Exception("\"" + command.Data[0] + "\" does not exist!");
     }
 }
Exemplo n.º 16
0
        public void RepairPath()
        {
            if (!VirtualDrive.ExistsDirectory(Path.Value))
            {
                string path = Path.Value;

                while (!String.IsNullOrEmpty(path) && !VirtualDrive.ExistsDirectory(path))
                {
                    DirectoryInfo dir = new DirectoryInfo(path);
                    path = dir.Parent.FullName;
                }

                if (Path.Value != path)
                {
                    Path.Value = path;
                }
            }
        }
Exemplo n.º 17
0
        private static string PreferencesDirectoryName(string appName)
        {
            string appDataFolder = System.Environment.GetFolderPath(
                System.Environment.SpecialFolder.ApplicationData);

            if (!VirtualDrive.ExistsDirectory(appDataFolder))
            {
                throw new Exception(appDataFolder + @" not found!");
            }

            string preferencesFolder = Path.Combine(appDataFolder, appName);

            if (!VirtualDrive.ExistsDirectory(preferencesFolder))
            {
                VirtualDrive.CreateDirectory(preferencesFolder);
            }

            return(preferencesFolder);
        }
Exemplo n.º 18
0
        private static string BasePath(string fullPath)
        {
            string[] parts = fullPath.Split(separators, StringSplitOptions.RemoveEmptyEntries);

            StringBuilder sb = new StringBuilder();

            for (int i = 0; i < parts.Length; i++)
            {
                sb.Append(parts[i]);
                sb.Append(Path.DirectorySeparatorChar);

                if (i < parts.Length - 1 &&
                    !VirtualDrive.ExistsDirectory(sb.ToString() + Path.DirectorySeparatorChar + parts[i + 1]))
                {
                    break;
                }
            }

            return(sb.ToString());
        }
Exemplo n.º 19
0
        private static bool AlreadyExists(string src, string dst)
        {
            if (VirtualDrive.ExistsDirectory(src))
            {
                if (VirtualDrive.ExistsDirectory(dst) &&
                    !src.Equals(dst, StringComparison.CurrentCultureIgnoreCase))
                {
                    return(true);
                }
            }
            else
            {
                if (VirtualDrive.ExistsFile(dst) &&
                    !src.Equals(dst, StringComparison.CurrentCultureIgnoreCase))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemplo n.º 20
0
        public static IEnumerable <string> SuggestPaths(string fullPath, bool showHiddenDirectories)
        {
            string basePath = BasePath(fullPath);

            List <string> result = new List <string>();

            if (VirtualDrive.ExistsDirectory(basePath))
            {
                try
                {
                    foreach (var dirName in VirtualDrive.GetDirectories(basePath))
                    {
                        bool isHidden = new DirectoryInfo(dirName).Attributes.HasFlag(FileAttributes.Hidden);
                        bool show     = isHidden && showHiddenDirectories || !isHidden;

                        bool matches = Path.Combine(basePath, dirName).StartsWith(
                            fullPath.ToLower(), true, CultureInfo.CurrentUICulture);

                        if (show && matches)
                        {
                            result.Add(dirName);
                        }
                    }
                }
                catch (UnauthorizedAccessException)
                {
                }
            }
            else if (String.IsNullOrEmpty(basePath) ||
                     !basePath.Contains(new String(new char[] { Path.VolumeSeparatorChar })))
            {
                foreach (var dir in DriveInfo.GetDrives())
                {
                    result.Add(dir.Name);
                }
            }

            return(result);
        }
Exemplo n.º 21
0
        private static void TestFullPattern()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumTagToDirectoryProcessor\TestFullPattern\");

            TestTags.CreateDemoTags(path, 6, n => n.ReleaseYear = "1993");

            AlbumTagToDirectoryProcessor processor = new AlbumTagToDirectoryProcessor(
                "Artist - Album{ (ReleaseYear)}");

            AlbumExplorer.AlbumResult obj =
                new AlbumExplorer.AlbumResult(new DirectoryInfo(path));
            obj.Album[FrameMeaning.Artist]      = "Artist";
            obj.Album[FrameMeaning.Album]       = "Album";
            obj.Album[FrameMeaning.ReleaseYear] = "1993";

            processor.Process(obj);

            string expectedPath = VirtualDrive.VirtualFileName(
                @"TestAlbumTagToDirectoryProcessor\Artist - Album (1993)\");

            VirtualDrive.ExistsDirectory(expectedPath);
            VirtualDrive.DeleteDirectory(expectedPath, true);
        }
Exemplo n.º 22
0
        private void WriteCoverToDisc(Tag tag, GoogleImageQuery.ImageResult result)
        {
            string cachePath = Path.Combine(App.AppDataFolder, "Covers");

            if (!VirtualDrive.ExistsDirectory(cachePath))
            {
                // TODO: VirtualDrive
                VirtualDrive.CreateDirectory(cachePath);
            }

            TagEditor editor = new TagEditor(tag);
            string    url    = result.Url;
            string    suffix = url.Substring(url.Length - 3, 3);
            string    file   = Path.Combine(cachePath, dirNameGenerator.Name(editor.Get()) + "." + suffix);

            if (!File.Exists(file))
            {
                using (Stream stream = File.OpenWrite(file))
                {
                    stream.Write(result.Image, 0, result.Image.Length);
                }
            }
        }
Exemplo n.º 23
0
        private static void TestCopy()
        {
            string pathSrc     = VirtualDrive.VirtualFileName(@"TestAlbumToLibraryProcessor\TestCopy\Src\");
            string pathLibrary = VirtualDrive.VirtualFileName(@"TestAlbumToLibraryProcessor\TestCopy\Lib\");

            VirtualDrive.Store(Path.Combine(pathLibrary, "test.mp3"), new byte[] {});
            TestTags.CreateDemoTags(pathSrc, 3, n => n.ReleaseYear = "1993");

            AlbumToLibraryProcessor processor = new AlbumToLibraryProcessor(
                pathLibrary, FileOperationProcessor.FileOperation.Copy, FileOperationProcessor.ConflictSolving.Skip);

            AlbumExplorer.AlbumResult obj =
                new AlbumExplorer.AlbumResult(new DirectoryInfo(pathSrc));
            obj.Album[FrameMeaning.Artist]      = "Artist";
            obj.Album[FrameMeaning.Album]       = "Album";
            obj.Album[FrameMeaning.ReleaseYear] = "1993";

            processor.Process(obj);

            VirtualDrive.ExistsDirectory(pathSrc);

            string expectedDst = Path.Combine(pathLibrary, "Artist - Album (1993)");

            VirtualDrive.ExistsDirectory(expectedDst);

            string[] files = VirtualDrive.GetFiles(expectedDst, "*.mp3");

            UnitTest.Test(files.Length == 3);
            for (int i = 0; i < files.Length; i++)
            {
                string expected = Path.Combine(expectedDst, "Test" + i + ".mp3");
                UnitTest.Test(files[i] == expected);
            }

            VirtualDrive.DeleteDirectory(pathSrc, true);
            VirtualDrive.DeleteDirectory(pathLibrary, true);
        }
Exemplo n.º 24
0
        private static void TestMoveDir_AlreadyExists_Overwrite()
        {
            SetupRecycleBin();

            string undoFileName = VirtualDrive.VirtualFileName(
                "TestFileCopyProcessorUndoFile.txt");

            string folder0 = VirtualDrive.VirtualFileName(@"fold00\folder0");
            string folder1 = VirtualDrive.VirtualFileName(@"fold01\folder1");

            string srcFile0     = Path.Combine(folder0, "t0.bin");
            string replaceFile0 = Path.Combine(folder1, "t1.bin");
            string dstFile0     = Path.Combine(folder1, "t0.bin");

            string recycleBin   = VirtualDrive.VirtualFileName(@"recycle");
            string recycleFile0 = Path.Combine(Path.Combine(recycleBin, "0"), "t1.bin");

            VirtualDrive.Store(VirtualDrive.VirtualFileName(srcFile0), null);
            VirtualDrive.Store(VirtualDrive.VirtualFileName(replaceFile0), null);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(replaceFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(recycleFile0));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileOperationProcessor p = new FileOperationProcessor();
                p.Operation = FileOperationProcessor.FileOperation.Move;
                p.UndoFile  = undoFileWriter;
                p.NewName   = folder1;
                p.Conflicts = FileOperationProcessor.ConflictSolving.Overwrite;

                p.Process(new DirectoryInfo(folder0));
            }

            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(!VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(replaceFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(recycleFile0));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(replaceFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(recycleFile0));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(!VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(!VirtualDrive.ExistsFile(srcFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(dstFile0));
            UnitTest.Test(!VirtualDrive.ExistsFile(replaceFile0));
            UnitTest.Test(VirtualDrive.ExistsFile(recycleFile0));

            VirtualDrive.DeleteDirectory(folder1, true);
            VirtualDrive.DeleteDirectory(recycleBin, true);
        }
Exemplo n.º 25
0
        private static void TestMoveDir_AlreadyExists_Skip()
        {
            string undoFileName = VirtualDrive.VirtualFileName(
                "TestMoveDir_AlreadyExists_Skip.txt");

            string folder0    = VirtualDrive.VirtualFileName(@"fold00\folder0");
            string filename00 = Path.Combine(folder0, "t0.bin");
            string filename01 = Path.Combine(folder0, "t1.bin");

            string folder1    = VirtualDrive.VirtualFileName(@"fold01\folder1");
            string filename10 = Path.Combine(folder1, "t0.bin");
            string filename11 = Path.Combine(folder1, "t1.bin");

            VirtualDrive.Store(VirtualDrive.VirtualFileName(filename00), null);
            VirtualDrive.Store(VirtualDrive.VirtualFileName(filename01), null);
            VirtualDrive.Store(VirtualDrive.VirtualFileName(filename10), null);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename11));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileOperationProcessor p = new FileOperationProcessor();
                p.Operation = FileOperationProcessor.FileOperation.Move;
                p.UndoFile  = undoFileWriter;
                p.NewName   = folder1;
                p.Conflicts = FileOperationProcessor.ConflictSolving.Skip;

                p.Process(new DirectoryInfo(folder0));
            }

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename11));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename11));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsDirectory(folder0));
            UnitTest.Test(VirtualDrive.ExistsDirectory(folder1));
            UnitTest.Test(VirtualDrive.ExistsFile(filename00));
            UnitTest.Test(VirtualDrive.ExistsFile(filename01));
            UnitTest.Test(VirtualDrive.ExistsFile(filename10));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename11));

            VirtualDrive.DeleteDirectory(folder0, true);
            VirtualDrive.DeleteDirectory(folder1, true);
        }