Exemplo n.º 1
0
        private static void TestFilenameToTagProcessorSimple()
        {
            string undoFilename = VirtualDrive.VirtualFileName(
                @"TestFilenameToTagProcessor\TestFilenameToTagProcessorUndoFile.txt");

            string filename = VirtualDrive.VirtualFileName(
                @"TestFilenameToTagProcessor\My Artist - 03 - My Title.mp3");

            string pattern = "Artist - TrackNumber - Title";

            VirtualDrive.Store(filename, TestTags.mpegDummy);

            FilenameToTagProcessor processor = new FilenameToTagProcessor();

            processor.ProcessMessage(new FilenameToTagProcessor.Message(pattern));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFilename))
            {
                processor.UndoFile = undoFileWriter;
                processor.Process(new FileInfo(filename));
            }

            TagEditor editor = new TagEditor(TagUtils.ReadTag(new FileInfo(filename)));

            UnitTest.Test(editor.Artist == "My Artist");
            UnitTest.Test(editor.TrackNumber == "03");
            UnitTest.Test(editor.Title == "My Title");

            UndoFilePlayer.Undo(undoFilename);

            UnitTest.Test(Object.ReferenceEquals(TagUtils.ReadTag(new FileInfo(filename)), null));
        }
Exemplo n.º 2
0
        private static void SetupRecycleBin()
        {
            string recycleBin = VirtualDrive.VirtualFileName(@"recycle");

            RecycleBin.Instance.RootDir = recycleBin;
            VirtualDrive.Store(Path.Combine(recycleBin, "dummy.bin"), null);
        }
Exemplo n.º 3
0
        private static void TestFine()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumExplorerProcessor\TestFine\");
            TestTags.CreateDemoTags(path, 6, n => n.Album = "Album");

            AlbumExplorerProcessor processor = new AlbumExplorerProcessor();

            bool succeded = false;
            bool failed = false;

            processor.FineCallback += delegate(AlbumExplorer.AlbumResult album)
            {
                UnitTest.Test(album.Album.Result == AlbumExplorer.ParseResult.Fine);
                UnitTest.Test(album.Album[FrameMeaning.Artist] == "Artist");
                UnitTest.Test(album.Album[FrameMeaning.Album] == "Album");
                UnitTest.Test(album.Album[FrameMeaning.ReleaseYear] == "1993");

                succeded = true;
            };
            processor.BadCallback += delegate(AlbumExplorer.AlbumResult album)
            {
                failed = true;
            };

            processor.Process(new DirectoryInfo(path));

            UnitTest.Test(succeded);
            UnitTest.Test(!failed);

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 4
0
        private static void TestFileProcessorRecordAndPlay()
        {
            string undoFileName = VirtualDrive.VirtualFileName(
                @"TestFileProcessorRecordAndPlay\UndoFile.txt");

            FileInfo[] fileInfos =
                (from x in TestTags.Demotags select VirtualDrive.CreateVirtualFileInfo(
                     @"TestFileProcessorRecordAndPlay\TestFileProcessor" + x + ".mp3")).ToArray();

            fileInfos.ForEach((n) => TagUtils.WriteTag(TestTags.CreateDemoTag(Version.v2_0), n));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileProcessor processor = new FileProcessor(new TagVersionProcessor(Version.v2_3));
                processor.UndoFile = undoFileWriter;

                foreach (var obj in fileInfos)
                {
                    processor.Process(obj);
                }
            }

            fileInfos.ForEach((n) => UnitTest.Test(TagUtils.ReadVersion(n) == Version.v2_3));

            UndoFilePlayer.Undo(undoFileName);

            fileInfos.ForEach((n) => UnitTest.Test(TagUtils.ReadVersion(n) == Version.v2_0));

            UndoFilePlayer.Redo(undoFileName);

            fileInfos.ForEach((n) => UnitTest.Test(TagUtils.ReadVersion(n) == Version.v2_3));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName(
                                             @"TestFileProcessorRecordAndPlay"), true);
        }
Exemplo n.º 5
0
        private static void TestUndoFileWriter()
        {
            UndoFileWriter writer = new UndoFileWriter(
                VirtualDrive.VirtualFileName("TestUndoFileWriter.txt"));

            for (int i = 0; i < 4; i++)
            {
                List <string> parameters = new List <string>();
                for (int j = 0; j < i; j++)
                {
                    parameters.Add("line" + j);
                }

                writer.Write(new SerializedCommand(
                                 typeof(TestClass),
                                 SerializedCommand.UndoRedo.Do,
                                 "TestUndoFileWriter",
                                 parameters.ToArray()));
            }

            writer.Close();

            UnitTest.Test(VirtualDrive.FileLength(
                              VirtualDrive.VirtualFileName("TestUndoFileWriter.txt")) > 0);
        }
Exemplo n.º 6
0
        private static void TestUndoFileReader()
        {
            UndoFileReader reader = new UndoFileReader(
                VirtualDrive.VirtualFileName("TestUndoFileWriter.txt"));

            UnitTest.Test(reader.NumCommands() == 4);

            for (int i = 3; i >= 0; i--)
            {
                SerializedCommand cmd = reader.CommandByIndex(i);
                UnitTest.Test(cmd.Target == typeof(TestClass).FullName);
                UnitTest.Test(cmd.Operation == "TestUndoFileWriter");

                UnitTest.Test(cmd.Data.Length == i);
                for (int j = 0; j < i; j++)
                {
                    UnitTest.Test(cmd.Data[j] == "line" + j);
                }
            }

            for (int i = 0; i < 4; i++)
            {
                SerializedCommand cmd = reader.CommandByIndex(i);
                UnitTest.Test(cmd.Target == typeof(TestClass).FullName);
                UnitTest.Test(cmd.Operation == "TestUndoFileWriter");

                UnitTest.Test(cmd.Data.Length == i);
                for (int j = 0; j < i; j++)
                {
                    UnitTest.Test(cmd.Data[j] == "line" + j);
                }
            }

            reader.Close();
        }
Exemplo n.º 7
0
        public static void Test_RelativeFileMove_MoveDirectory()
        {
            string[] srcFiles =
            {
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0\folder0\file0.bin"),
            };
            string[] dstFiles =
            {
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1\folder0\file0.bin"),
            };
            srcFiles.ForEach(n => VirtualDrive.Store(VirtualDrive.VirtualFileName(n), null));

            srcFiles.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));
            dstFiles.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));

            SafeOperations.MoveDirectory(
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1"));

            srcFiles.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));
            dstFiles.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName("Test_RelativeFileMove_Move"), true);
        }
Exemplo n.º 8
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.º 9
0
        private static void TestFine_NoReleaseYearRequired()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumExplorerProcessor\TestFine_NoReleaseYearRequired\");
            TestTags.CreateDemoTags(path, 6, n => n.ReleaseYear = "");

            AlbumExplorerProcessor processor = new AlbumExplorerProcessor();
            processor.Explorer.ReleaseYearRequired = false;

            TestSuccess(path, processor);
        }
Exemplo n.º 10
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.º 11
0
        private static void TestMoveFile_AlreadyExists_Overwrite()
        {
            SetupRecycleBin();

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

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

            string recycleBin   = VirtualDrive.VirtualFileName(@"recycle");
            string recycleFile0 = Path.Combine(recycleBin, "1.trash");

            byte[] data0 = new byte[] { 0 };
            VirtualDrive.Store(filename0, data0);

            byte[] data1 = new byte[] { 1 };
            VirtualDrive.Store(filename1, data1);

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));
            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   = "t1.bin";
                p.Conflicts = FileOperationProcessor.ConflictSolving.Overwrite;

                p.Process(new FileInfo(filename0));
            }

            UnitTest.Test(!VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));
            UnitTest.Test(VirtualDrive.ExistsFile(recycleFile0));
            UnitTest.Test(VirtualDrive.Load(filename1).SequenceEqual(data0));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));
            UnitTest.Test(!VirtualDrive.ExistsFile(recycleFile0));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(!VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));
            UnitTest.Test(VirtualDrive.ExistsFile(recycleFile0));
        }
Exemplo n.º 12
0
        private static void TestTagUtilsWriteRawSmallerQuantizeAbove()
        {
            string fileName = VirtualDrive.VirtualFileName("TestTagUtilsWriteRawSmallerQuantizeAbove\\t1.mp3");

            TestTags.WriteDemoMp3(fileName, TestTags.demoTag2_4);

            FileInfo fileInfo = new FileInfo(fileName);

            TagUtils.WriteTagV2(TestTags.demoTag2_3, fileInfo, Rewriter.Strategy.Quantize);
            UnitTest.Test(TagUtils.TagSizeV2(new FileInfo(fileName)) % Rewriter.BlockSize == 0);
            TagUtils.StripTagV2(new FileInfo(fileName), 0);
            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 13
0
        private static void TestTagUtilsWriteRawSmallerNeverShrink()
        {
            string fileName = VirtualDrive.VirtualFileName("TestTagUtilsWriteRawSmallerNeverShrink\\t1.mp3");

            TestTags.WriteDemoMp3(fileName, TestTags.demoTag2_4);

            FileInfo fileInfo = new FileInfo(fileName);

            TagUtils.WriteTagV2(TestTags.demoTag2_3, fileInfo, Rewriter.Strategy.NeverShrink);
            UnitTest.Test(TagUtils.TagSizeV2(fileInfo) == TestTags.demoTag2_4.Length);
            TagUtils.StripTagV2(fileInfo, 0);
            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 14
0
        private static void TestTagUtilsWriteRawBiggerExact()
        {
            string fileName = VirtualDrive.VirtualFileName("TestTagUtilsWriteRawBiggerExact\\t1.mp3");

            TestTags.WriteDemoMp3(fileName, TestTags.demoTag2_3);

            FileInfo fileInfo = new FileInfo(fileName);

            TagUtils.WriteTagV2(TestTags.demoTag2_4, fileInfo, Rewriter.Strategy.Exact);
            UnitTest.Test(VirtualDrive.FileLength(fileName) == TestTags.demoTag2_4.Length + TestTags.mpegDummy.Length);
            TagUtils.StripTagV2(fileInfo, 0);
            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 15
0
        public static void Test_RelativeFileMove_MoveDirectoryOperations()
        {
            string[] srcFiles =
            {
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0\folder0\file0.bin"),
            };
            string[] dstFiles =
            {
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1\file0.bin"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1\folder0\file0.bin"),
            };
            srcFiles.ForEach(n => VirtualDrive.Store(VirtualDrive.VirtualFileName(n), null));

            IEnumerable <IFileSystemOperation> operations = SafeOperations.MoveDirectoryOperations(
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder0"),
                VirtualDrive.VirtualFileName(@"Test_RelativeFileMove_Move\folder1"));

            IEnumerable <string> expected = new string[]
            {
                "Create directory \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder1\"",
                "Create directory \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder1\\folder0\"",
                "Move file \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder0\\folder0\\file0.bin\" to \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder1\\folder0\\file0.bin\"",
                "Move file \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder0\\file0.bin\" to \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder1\\file0.bin\"",
                "Delete directory \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder0\\folder0\"",
                "Delete directory \"\\\\virtualdrive\\Test_RelativeFileMove_Move\\folder0\""
            };

            UnitTest.Test(operations.Select(n => n.ToString()).SequenceEqual(expected));

            srcFiles.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));
            dstFiles.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));

            foreach (var operation in operations)
            {
                operation.Do();
            }

            srcFiles.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));
            dstFiles.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));

            foreach (var operation in operations.Reverse())
            {
                operation.Undo();
            }

            srcFiles.ForEach(n => UnitTest.Test(VirtualDrive.ExistsFile(n)));
            dstFiles.ForEach(n => UnitTest.Test(!VirtualDrive.ExistsFile(n)));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName("Test_RelativeFileMove_Move"), true);
        }
Exemplo n.º 16
0
        private static void TestTagUtilsWriteTagBiggerQuantize()
        {
            string fileName = VirtualDrive.VirtualFileName("TestTagUtilsWriteTagBiggerQuantize\\t1.mp3");

            TestTags.WriteDemoMp3(fileName, TestTags.demoTag2_3);
            FileInfo fileInfo = new FileInfo(fileName);
            Tag      tag      = TagUtils.ReadTag(fileInfo);
            Frame    f        = new Frame(tag.DescriptionMap, "MCDI");

            (f.Content as FrameContentBinary).Content = new byte[1024];
            tag.Add(f);

            TagUtils.WriteTagV2(tag, fileInfo, Rewriter.Strategy.Quantize);
            UnitTest.Test(VirtualDrive.FileLength(fileName) == 2048 + TestTags.mpegDummy.Length);
            TagUtils.StripTagV2(fileInfo, 0);
            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 17
0
        private static void TestFailingPattern()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumTagToFilenameProcessor\TestFailingPattern\");

            TestTags.CreateDemoTags(path, 6, n => n.Artist = null);

            string[] filesBefore = VirtualDrive.GetFiles(path, "*.mp3");

            AlbumTagToFilenameProcessor processor = new AlbumTagToFilenameProcessor(
                "Artist - Album - TrackNumber - Title");

            processor.Process(new DirectoryInfo(path));

            string[] filesAfter = VirtualDrive.GetFiles(path, "*.mp3");

            UnitTest.Test(filesBefore.SequenceEqual(filesAfter));

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 18
0
        private static void TestTagUtilsBuildByCodeAndSerializeInVirtualStore()
        {
            foreach (ID3.Version version in ID3.Version.Versions)
            {
                string filename = VirtualDrive.VirtualFileName(
                    "TestID3TagBuildByCodeAndSerializeInVirtualStore\\" + version.ToString() + ".tag");

                Tag tag0 = TestTags.CreateDemoTag(version);

                TagUtils.WriteTag(tag0, new FileInfo(filename));

                Tag tag1 = TagUtils.ReadTag(new FileInfo(filename));

                TagEditor editor0 = new TagEditor(tag0);
                TagEditor editor1 = new TagEditor(tag1);

                UnitTest.Test(editor1.Equals(editor0));
            }
        }
Exemplo n.º 19
0
        private static void TestTagUtilsWriteTagSmallerExact()
        {
            Tag   tag = TagUtils.RawToTag(TestTags.demoTag2_3);
            Frame f   = new Frame(tag.DescriptionMap, "MCDI");

            (f.Content as FrameContentBinary).Content = new byte[1024];
            tag.Add(f);

            string fileName = VirtualDrive.VirtualFileName("TestTagUtilsWriteTagSmallerExact\\t1.mp3");

            TestTags.WriteDemoMp3(fileName, TagUtils.TagToRaw(tag));

            tag.Remove(f);
            FileInfo fileInfo = new FileInfo(fileName);

            TagUtils.WriteTagV2(tag, fileInfo, Rewriter.Strategy.Exact);
            UnitTest.Test(VirtualDrive.FileLength(fileName) == TagUtils.TagToRaw(tag).Length + TestTags.mpegDummy.Length);
            TagUtils.StripTagV2(fileInfo, 0);
            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 20
0
        private static void TestCopyFile()
        {
            string undoFileName = VirtualDrive.VirtualFileName(
                "TestFileCopyProcessorUndoFile.txt");

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

            byte[] data = new byte[] { 0 };
            VirtualDrive.Store(filename0, data);

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename1));

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

                p.Process(new FileInfo(filename0));
            }

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));

            UndoFilePlayer.Undo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(!VirtualDrive.ExistsFile(filename1));

            UndoFilePlayer.Redo(undoFileName);

            UnitTest.Test(VirtualDrive.ExistsFile(filename0));
            UnitTest.Test(VirtualDrive.ExistsFile(filename1));

            VirtualDrive.DeleteDirectory(folder0, true);
        }
Exemplo n.º 21
0
        private static void TestFullPattern()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumTagToFilenameProcessor\TestFullPattern\");

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

            AlbumTagToFilenameProcessor processor = new AlbumTagToFilenameProcessor(
                "Artist - Album - TrackNumber - Title");

            processor.Process(new DirectoryInfo(path));

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

            UnitTest.Test(files.Length == 6);
            for (int i = 0; i < files.Length; i++)
            {
                string expected = Path.Combine(path, "Artist - Album - " + (i + 1) + " - Song No. " + (i + 1) + ".mp3");
                UnitTest.Test(files[i] == expected);
            }

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 22
0
        private static void TestFileProcessorV2()
        {
            FileProcessor.WriteStrategy = Rewriter.Strategy.Exact;

            string undoFileName = VirtualDrive.VirtualFileName(@"TestFileProcessorV2\UndoFile.txt");

            FileInfo mp3File = VirtualDrive.CreateVirtualFileInfo(@"TestFileProcessorV2\test.mp3");

            TagUtils.WriteTag(TestTags.demoTag1_0, mp3File);
            TagUtils.WriteTag(TestTags.demoTag2_0, mp3File);

            UnitTest.Test(TagUtils.HasTagV1(mp3File));
            UnitTest.Test(TagUtils.HasTagV2(mp3File));

            using (UndoFileWriter undoFileWriter = new UndoFileWriter(undoFileName))
            {
                FileProcessor processor = new FileProcessor(new TagVersionProcessor(Version.v2_3));
                FileProcessor.WriteStrategy = Rewriter.Strategy.Exact;
                processor.UndoFile          = undoFileWriter;
                processor.Process(mp3File);
            }
            UnitTest.Test(!TagUtils.HasTagV1(mp3File));
            UnitTest.Test(TagUtils.HasTagV2(mp3File));

            UndoFilePlayer.Undo(undoFileName);
            UnitTest.Test(ArrayUtils.IsEqual(TagUtils.ReadTagV1Raw(mp3File), TestTags.demoTag1_0));
            UnitTest.Test(ArrayUtils.IsEqual(TagUtils.ReadTagV2Raw(mp3File), TestTags.demoTag2_0));

            UndoFilePlayer.Redo(undoFileName);
            UnitTest.Test(!TagUtils.HasTagV1(mp3File));
            UnitTest.Test(TagUtils.HasTagV2(mp3File));

            UndoFilePlayer.Undo(undoFileName);
            UnitTest.Test(ArrayUtils.IsEqual(TagUtils.ReadTagV1Raw(mp3File), TestTags.demoTag1_0));
            UnitTest.Test(ArrayUtils.IsEqual(TagUtils.ReadTagV2Raw(mp3File), TestTags.demoTag2_0));

            VirtualDrive.DeleteDirectory(VirtualDrive.VirtualFileName(
                                             @"TestFileProcessorV2"), true);
        }
Exemplo n.º 23
0
        private static void TestIteration()
        {
            string path = VirtualDrive.VirtualFileName(@"TestDirectoryProcessor\TestIteration\");

            IEnumerable <string> files = from counter in Enumerable.Range(0, 2) select Path.Combine(path, "test" + counter + ".bin");

            files.ForEach(n => VirtualDrive.Store(n, new byte[] { }));

            TestProcessor      testProcessor = new TestProcessor(new Type[] { typeof(FileInfo) });
            DirectoryProcessor processor     = new DirectoryProcessor(testProcessor);

            processor.FileMask = "*.bin";

            processor.ProcessMessage(new ProcessorMessageInit());
            processor.Process(new DirectoryInfo(path));

            IEnumerable <string> dstFiles = from item in testProcessor.Objects select item.ToString();

            UnitTest.Test(files.SequenceEqual(dstFiles));

            VirtualDrive.DeleteDirectory(path, true);
        }
Exemplo n.º 24
0
        private static void TestBad()
        {
            string path = VirtualDrive.VirtualFileName(@"TestAlbumExplorerProcessor\TestBadArtistMissing\");

            TestTags.CreateDemoTags(path, 6, n => n.Artist = "");
            TestFailure(path, AlbumExplorer.ParseResult.ArtistNameFailed);

            TestTags.CreateDemoTags(path, 6, n => n.Album = "");
            TestFailure(path, AlbumExplorer.ParseResult.AlbumNameFailed);

            TestTags.CreateDemoTags(path, 6, n => n.Title = "");
            TestFailure(path, AlbumExplorer.ParseResult.TrackNameMissing);

            TestTags.CreateDemoTags(path, 6, n => n.TrackNumber = "");
            TestFailure(path, AlbumExplorer.ParseResult.TrackIndexFailed);

            TestTags.CreateDemoTags(path, 6, n => n.Title = "Track");
            TestFailure(path, AlbumExplorer.ParseResult.TrackNameDummy);

            TestTags.CreateDemoTags(path, 6, n => n.ReleaseYear = "");
            TestFailure(path, AlbumExplorer.ParseResult.YearFailed);
        }
Exemplo n.º 25
0
        private static void TestTagUtilsRewrite()
        {
            byte[] data     = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
            string fileName = VirtualDrive.VirtualFileName("TestID3TagUtilsRewrite\\t0.mp3");

            Id3FileUtils.SaveFileBinary(fileName, data);

            TagUtils.Rewrite(new FileInfo(fileName), 4, 3, 2, 1);

            Stream s = VirtualDrive.OpenInStream(fileName);

            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == 4);
            UnitTest.Test(s.ReadByte() == 5);
            UnitTest.Test(s.ReadByte() == 6);
            UnitTest.Test(s.ReadByte() == 7);
            UnitTest.Test(s.ReadByte() == 8);
            UnitTest.Test(s.ReadByte() == 0);
            UnitTest.Test(s.ReadByte() == -1);
            s.Close();
        }
Exemplo n.º 26
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.º 27
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.º 28
0
        private static void TestTagUtilsRewriteMP3()
        {
            byte[] tag20 = TagUtils.TagToRaw(TestTags.CreateDemoTag(Version.v2_3));
            byte[] tag10 = TestTags.demoTag1_0;

            string fileName = VirtualDrive.VirtualFileName("TestID3TagUtilsRewrite\\t1.mp3");

            using (Stream s = VirtualDrive.OpenOutStream(fileName))
            {
                s.Write(tag20, 0, tag20.Length);
                s.WriteByte(0);
                s.WriteByte(0);
                s.Write(TestTags.mpegDummy, 0, TestTags.mpegDummy.Length);
                s.Write(tag10, 0, tag10.Length);
            }

            long offset = TagUtils.OffsetTagToMpegHeader(new FileInfo(fileName));

            UnitTest.Test(offset == 2);

            TagUtils.StripTags(new FileInfo(fileName), 0, 0);

            UnitTest.Test(ArrayUtils.IsEqual(VirtualDrive.Load(fileName), TestTags.mpegDummy));
        }
Exemplo n.º 29
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.º 30
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);
        }