diff --git a/CHANGELIST.md b/CHANGELIST.md index 0ecd7a24..abb9a0a5 100644 --- a/CHANGELIST.md +++ b/CHANGELIST.md @@ -4,6 +4,7 @@ - Add skeleton test projects for individual libraries - Move existing tests to new projects - Add BaseProcessor tests +- Add processor base implementation tests ### 3.2.4 (2024-11-24) diff --git a/MPF.Processors.Test/AaruTests.cs b/MPF.Processors.Test/AaruTests.cs new file mode 100644 index 00000000..ff894069 --- /dev/null +++ b/MPF.Processors.Test/AaruTests.cs @@ -0,0 +1,168 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class AaruTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_CDROM_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(8, actual.Count); + } + + [Fact] + public void GetOutputFiles_DVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.DVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void GetOutputFiles_HDDVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.HDDVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void GetOutputFiles_BluRay_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.BluRay); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM", "test"); + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(7, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM", "test"); + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM", "test"); + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Aaru", "CDROM", "test"); + var processor = new Aaru(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(7, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/CleanRipTests.cs b/MPF.Processors.Test/CleanRipTests.cs new file mode 100644 index 00000000..910d2ef1 --- /dev/null +++ b/MPF.Processors.Test/CleanRipTests.cs @@ -0,0 +1,157 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class CleanRipTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_DVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void GetOutputFiles_NintendoGameCubeGameDisc_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.NintendoGameCubeGameDisc); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void GetOutputFiles_NintendoWiiOpticalDisc_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.NintendoWiiOpticalDisc); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test"); + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(2, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test"); + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test"); + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "CleanRip", "DVD", "test"); + var processor = new CleanRip(RedumpSystem.NintendoGameCube, MediaType.DVD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(2, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/DiscImageCreatorTests.cs b/MPF.Processors.Test/DiscImageCreatorTests.cs new file mode 100644 index 00000000..86da5914 --- /dev/null +++ b/MPF.Processors.Test/DiscImageCreatorTests.cs @@ -0,0 +1,223 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class DiscImageCreatorTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_CDROM_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(26, actual.Count); + } + + [Fact] + public void GetOutputFiles_GDROM_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.GDROM); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(10, actual.Count); + } + + [Fact] + public void GetOutputFiles_DVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.DVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_HDDVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.HDDVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_BluRay_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.BluRay); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_NintendoGameCubeGameDisc_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.NintendoGameCubeGameDisc); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_NintendoWiiOpticalDisc_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.NintendoWiiOpticalDisc); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_FloppyDisk_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.FloppyDisk); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(4, actual.Count); + } + + [Fact] + public void GetOutputFiles_HardDisk_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.HardDisk); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(4, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM", "test"); + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(21, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(17, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM", "test"); + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM", "test"); + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Equal(2, actual.Count); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "DiscImageCreator", "CDROM", "test"); + var processor = new DiscImageCreator(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(23, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/PS3CFWTests.cs b/MPF.Processors.Test/PS3CFWTests.cs new file mode 100644 index 00000000..b0a5c6a6 --- /dev/null +++ b/MPF.Processors.Test/PS3CFWTests.cs @@ -0,0 +1,135 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class PS3CFWTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_BluRay_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test"); + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(2, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(3, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test"); + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test"); + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test"); + var processor = new PS3CFW(RedumpSystem.SonyPlayStation3, MediaType.BluRay); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(2, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/RedumperTests.cs b/MPF.Processors.Test/RedumperTests.cs new file mode 100644 index 00000000..78aea3ab --- /dev/null +++ b/MPF.Processors.Test/RedumperTests.cs @@ -0,0 +1,168 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class RedumperTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_CDROM_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(14, actual.Count); + } + + [Fact] + public void GetOutputFiles_DVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.DVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(16, actual.Count); + } + + [Fact] + public void GetOutputFiles_HDDVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.HDDVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(10, actual.Count); + } + + [Fact] + public void GetOutputFiles_BluRay_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.BluRay); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(10, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test"); + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(11, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(8, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test"); + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Single() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test"); + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Single(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "Redumper", "CDROM", "test"); + var processor = new Redumper(RedumpSystem.IBMPCcompatible, MediaType.CDROM); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(11, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Aaru/CDROM/test.aaruf b/MPF.Processors.Test/TestData/Aaru/CDROM/test.aaruf new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Aaru/CDROM/test.aaruf @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Aaru/CDROM/test.cicm.xml b/MPF.Processors.Test/TestData/Aaru/CDROM/test.cicm.xml new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Aaru/CDROM/test.cicm.xml @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Aaru/CDROM/test.ibg b/MPF.Processors.Test/TestData/Aaru/CDROM/test.ibg new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Aaru/CDROM/test.ibg @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Aaru/CDROM/test.mhddlog.bin b/MPF.Processors.Test/TestData/Aaru/CDROM/test.mhddlog.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Aaru/CDROM/test.mhddlog.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Aaru/CDROM/test.resume.xml b/MPF.Processors.Test/TestData/Aaru/CDROM/test.resume.xml new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Aaru/CDROM/test.resume.xml @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/CleanRip/DVD/test-dumpinfo.txt b/MPF.Processors.Test/TestData/CleanRip/DVD/test-dumpinfo.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/CleanRip/DVD/test-dumpinfo.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/CleanRip/DVD/test.bca b/MPF.Processors.Test/TestData/CleanRip/DVD/test.bca new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/CleanRip/DVD/test.bca @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/CleanRip/DVD/test.iso b/MPF.Processors.Test/TestData/CleanRip/DVD/test.iso new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/CleanRip/DVD/test.iso @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 0).sub b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 0).sub new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 0).sub @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 1)(-LBA).sub b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 1)(-LBA).sub new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track 1)(-LBA).sub @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track AA).sub b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track AA).sub new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test (Track AA).sub @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.c2 b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.c2 new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.c2 @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.ccd b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.ccd new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.ccd @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.cue b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.cue new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.cue @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.dat b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.dat new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.dat @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img_EdcEcc.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img_EdcEcc.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.img_EdcEcc.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.scm b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.scm new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.scm @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.sub b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.sub new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.sub @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.toc b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.toc new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test.toc @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_19800101T000000.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_19800101T000000.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_19800101T000000.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_c2Error.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_c2Error.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_c2Error.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_cmd.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_cmd.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_cmd.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_disc.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_disc.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_disc.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_drive.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_drive.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_drive.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_img.cue b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_img.cue new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_img.cue @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainError.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainError.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainError.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainInfo.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainInfo.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_mainInfo.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subError.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subError.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subError.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subInfo.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subInfo.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subInfo.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subIntention.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subIntention.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subIntention.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subReadable.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subReadable.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_subReadable.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_suppl.dat b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_suppl.dat new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_suppl.dat @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_volDesc.txt b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_volDesc.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/DiscImageCreator/CDROM/test_volDesc.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.disc.pic b/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.disc.pic new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.disc.pic @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.iso b/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.iso new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/PS3CFW/BluRay/test.iso @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.asus b/MPF.Processors.Test/TestData/Redumper/CDROM/test.asus new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.asus @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.atip b/MPF.Processors.Test/TestData/Redumper/CDROM/test.atip new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.atip @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.cdtext b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cdtext new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cdtext @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.cue b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cue new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.cue @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.fulltoc b/MPF.Processors.Test/TestData/Redumper/CDROM/test.fulltoc new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.fulltoc @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.hash b/MPF.Processors.Test/TestData/Redumper/CDROM/test.hash new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.hash @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.pma b/MPF.Processors.Test/TestData/Redumper/CDROM/test.pma new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.pma @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.scram b/MPF.Processors.Test/TestData/Redumper/CDROM/test.scram new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.scram @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.skeleton b/MPF.Processors.Test/TestData/Redumper/CDROM/test.skeleton new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.skeleton @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.state b/MPF.Processors.Test/TestData/Redumper/CDROM/test.state new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.state @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.subcode b/MPF.Processors.Test/TestData/Redumper/CDROM/test.subcode new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.subcode @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/Redumper/CDROM/test.toc b/MPF.Processors.Test/TestData/Redumper/CDROM/test.toc new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/Redumper/CDROM/test.toc @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test.iso b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test.iso new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test.iso @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_PFI.bin b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_PFI.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_PFI.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_disc.txt b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_disc.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_disc.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_drive.txt b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_drive.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_drive.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainError.txt b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainError.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainError.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainInfo.txt b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainInfo.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_mainInfo.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_volDesc.txt b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_volDesc.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/UmdImageCreator/UMD/test_volDesc.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/DMI.bin b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/DMI.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/DMI.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/PFI.bin b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/PFI.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/PFI.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/RawSS.bin b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/RawSS.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/RawSS.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/SS.bin b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/SS.bin new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/SS.bin @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/log.txt b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/log.txt new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/log.txt @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.dvd b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.dvd new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.dvd @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.iso b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.iso new file mode 100644 index 00000000..1aa4b5d8 --- /dev/null +++ b/MPF.Processors.Test/TestData/XboxBackupCreator/DVD/test.iso @@ -0,0 +1 @@ +TEST DATA \ No newline at end of file diff --git a/MPF.Processors.Test/UmdImageCreatorTests.cs b/MPF.Processors.Test/UmdImageCreatorTests.cs new file mode 100644 index 00000000..890d0908 --- /dev/null +++ b/MPF.Processors.Test/UmdImageCreatorTests.cs @@ -0,0 +1,135 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class UmdImageCreatorTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_UMD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD", "test"); + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(6, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(5, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD", "test"); + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD", "test"); + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "UmdImageCreator", "UMD", "test"); + var processor = new UmdImageCreator(RedumpSystem.SonyPlayStationPortable, MediaType.UMD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(6, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors.Test/XboxBackupCreatorTests.cs b/MPF.Processors.Test/XboxBackupCreatorTests.cs new file mode 100644 index 00000000..c9ad20db --- /dev/null +++ b/MPF.Processors.Test/XboxBackupCreatorTests.cs @@ -0,0 +1,135 @@ +using System; +using System.IO; +using SabreTools.RedumpLib.Data; +using Xunit; + +namespace MPF.Processors.Test +{ + public class XboxBackupCreatorTests + { + #region GetOutputFiles + + [Fact] + public void GetOutputFiles_Null_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, null); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + [Fact] + public void GetOutputFiles_DVD_Populated() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Equal(7, actual.Count); + } + + [Fact] + public void GetOutputFiles_Other_Empty() + { + string? baseDirectory = null; + string baseFilename = "test"; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.ApertureCard); + + var actual = processor.GetOutputFiles(baseDirectory, baseFilename); + Assert.Empty(actual); + } + + #endregion + + #region GenerateArtifacts + + [Fact] + public void GenerateArtifacts_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GenerateArtifacts_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD", "test"); + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GenerateArtifacts(basePath); + Assert.Equal(6, actual.Count); + } + + #endregion + + #region CheckRequiredFiles + + [Fact] + public void CheckRequiredFiles_Invalid_Filled() + { + string basePath = string.Empty; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Equal(5, actual.Count); + } + + [Fact] + public void CheckRequiredFiles_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD", "test"); + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.CheckRequiredFiles(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetDeleteableFilePaths + + [Fact] + public void GetDeleteableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetDeleteableFilePaths_Valid_Empty() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD", "test"); + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GetDeleteableFilePaths(basePath); + Assert.Empty(actual); + } + + #endregion + + #region GetZippableFilePaths + + [Fact] + public void GetZippableFilePaths_Invalid_Empty() + { + string basePath = string.Empty; + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Empty(actual); + } + + [Fact] + public void GetZippableFilePaths_Valid_Filled() + { + string? basePath = Path.Combine(Environment.CurrentDirectory, "TestData", "XboxBackupCreator", "DVD", "test"); + var processor = new XboxBackupCreator(RedumpSystem.MicrosoftXbox, MediaType.DVD); + var actual = processor.GetZippableFilePaths(basePath); + Assert.Equal(6, actual.Count); + } + + #endregion + } +} \ No newline at end of file diff --git a/MPF.Processors/BaseProcessor.cs b/MPF.Processors/BaseProcessor.cs index e44bdbd9..7e31eec7 100644 --- a/MPF.Processors/BaseProcessor.cs +++ b/MPF.Processors/BaseProcessor.cs @@ -191,10 +191,8 @@ namespace MPF.Processors outputFilename = Path.GetFileNameWithoutExtension(outputFilename); // Then get the base path for all checking - string basePath; - if (string.IsNullOrEmpty(outputDirectory)) - basePath = outputFilename; - else + string basePath = outputFilename; + if (!string.IsNullOrEmpty(outputDirectory)) basePath = Path.Combine(outputDirectory, outputFilename); // Finally, let the parameters say if all files exist @@ -208,6 +206,10 @@ namespace MPF.Processors /// Dictiionary of artifact keys to Base64-encoded values, if possible public Dictionary GenerateArtifacts(string basePath) { + // Handle invalid inputs + if (basePath.Length == 0) + return []; + // Split the base path for matching string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; string baseFilename = Path.GetFileNameWithoutExtension(basePath); @@ -228,24 +230,24 @@ namespace MPF.Processors continue; // Skip non-existent files - foreach (string filename in outputFile.Filenames) - { - string possibleFile = Path.Combine(baseDirectory, filename); - if (!File.Exists(possibleFile)) - continue; + if (!outputFile.Exists(baseDirectory)) + continue; + // Skip non-existent files + foreach (var filePath in outputFile.GetPaths(baseDirectory)) + { // Get binary artifacts as a byte array if (outputFile.IsBinaryArtifact) { - byte[] data = File.ReadAllBytes(possibleFile); + byte[] data = File.ReadAllBytes(filePath); string str = Convert.ToBase64String(data); - artifacts.Add(outputFile.ArtifactKey, str); + artifacts[outputFile.ArtifactKey] = str; } else { - string? data = ProcessingTool.GetFullFile(possibleFile); + string? data = ProcessingTool.GetFullFile(filePath); string str = ProcessingTool.GetBase64(data) ?? string.Empty; - artifacts.Add(outputFile.ArtifactKey, str); + artifacts[outputFile.ArtifactKey] = str; } break; @@ -331,7 +333,7 @@ namespace MPF.Processors /// /// Base filename and path to use for checking /// A list representing missing files, empty if none - private List CheckRequiredFiles(string basePath) + internal List CheckRequiredFiles(string basePath) { // Split the base path for matching string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; @@ -399,11 +401,11 @@ namespace MPF.Processors } /// - /// Generate a list of all deleteable filenames + /// Generate a list of all deleteable file paths /// /// Base filename and path to use for checking - /// List of all deleteable filenames, empty otherwise - private List GetDeleteableFilenames(string basePath) + /// List of all deleteable file paths, empty otherwise + internal List GetDeleteableFilePaths(string basePath) { // Split the base path for matching string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; @@ -415,48 +417,18 @@ namespace MPF.Processors return []; // Filter down to deleteable files - var deleteableFiles = outputFiles.FindAll(of => of.IsDeleteable); -#if NET20 - var deleteableFilenames = new List(); - foreach (var deleteableFile in deleteableFiles) + var deleteable = outputFiles.FindAll(of => of.IsDeleteable); + + // Get all paths that exist + var deleteablePaths = new List(); + foreach (var file in deleteable) { - deleteableFilenames.AddRange(deleteableFile.Filenames); + var paths = file.GetPaths(baseDirectory); + paths = paths.FindAll(File.Exists); + deleteablePaths.AddRange(paths); } - return deleteableFilenames; -#else - return deleteableFiles.SelectMany(of => of.Filenames).ToList(); -#endif - } - - /// - /// Generate a list of all deleteable file paths - /// - /// Base filename and path to use for checking - /// List of all deleteable file paths, empty otherwise - private List GetDeleteableFilePaths(string basePath) - { - // Split the base path for matching - string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; - - // Get the list of deleteable files - var deleteableFilenames = GetDeleteableFilenames(basePath); - if (deleteableFilenames.Count == 0) - return []; - - // Return only files that exist - var deleteableFiles = new List(); - foreach (var filename in deleteableFilenames) - { - // Skip non-existent files - string possiblePath = Path.Combine(baseDirectory, filename); - if (!File.Exists(possiblePath)) - continue; - - deleteableFiles.Add(possiblePath); - } - - return deleteableFiles; + return deleteablePaths; } /// @@ -514,11 +486,11 @@ namespace MPF.Processors } /// - /// Generate a list of all zippable filenames + /// Generate a list of all zippable file paths /// /// Base filename and path to use for checking - /// List of all zippable filenames, empty otherwise - private List GetZippableFilenames(string basePath) + /// List of all zippable file paths, empty otherwise + internal List GetZippableFilePaths(string basePath) { // Split the base path for matching string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; @@ -530,48 +502,18 @@ namespace MPF.Processors return []; // Filter down to zippable files - var zippableFiles = outputFiles.FindAll(of => of.IsZippable); -#if NET20 - var zippableFilenames = new List(); - foreach (var zippableFile in zippableFiles) + var zippable = outputFiles.FindAll(of => of.IsZippable); + + // Get all paths that exist + var zippablePaths = new List(); + foreach (var file in zippable) { - zippableFilenames.AddRange(zippableFile.Filenames); + var paths = file.GetPaths(baseDirectory); + paths = paths.FindAll(File.Exists); + zippablePaths.AddRange(paths); } - return zippableFilenames; -#else - return zippableFiles.SelectMany(of => of.Filenames).ToList(); -#endif - } - - /// - /// Generate a list of all zippable file paths - /// - /// Base filename and path to use for checking - /// List of all zippable file paths, empty otherwise - private List GetZippableFilePaths(string basePath) - { - // Split the base path for matching - string baseDirectory = Path.GetDirectoryName(basePath) ?? string.Empty; - - // Get the list of zippable files - var zippableFilenames = GetZippableFilenames(basePath); - if (zippableFilenames.Count == 0) - return []; - - // Return only files that exist - var zippableFiles = new List(); - foreach (var filename in zippableFilenames) - { - // Skip non-existent files - string possiblePath = Path.Combine(baseDirectory, filename); - if (!File.Exists(possiblePath)) - continue; - - zippableFiles.Add(possiblePath); - } - - return zippableFiles; + return zippablePaths; } #endregion diff --git a/MPF.Processors/CustomOutputFile.cs b/MPF.Processors/CustomOutputFile.cs index 9fef8450..dae9f256 100644 --- a/MPF.Processors/CustomOutputFile.cs +++ b/MPF.Processors/CustomOutputFile.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; #if NET452_OR_GREATER || NETCOREAPP using System.IO.Compression; @@ -78,15 +79,29 @@ namespace MPF.Processors } #if NET452_OR_GREATER || NETCOREAPP - /// - /// Indicates if an output file exists in an archive - /// - /// Zip archive to check in + /// public override bool Exists(ZipArchive? archive) { // Files aren't extracted so this check can't be done return false; } #endif + + /// + public override List GetPaths(string baseDirectory) + { + List paths = []; + + foreach (string filename in Filenames) + { + string possibleFile = Path.Combine(baseDirectory, filename); + if (!_existsFunc(possibleFile)) + continue; + + paths.Add(possibleFile); + } + + return paths; + } } } \ No newline at end of file diff --git a/MPF.Processors/OutputFile.cs b/MPF.Processors/OutputFile.cs index 536dba8d..7116c9bd 100644 --- a/MPF.Processors/OutputFile.cs +++ b/MPF.Processors/OutputFile.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; #if NET452_OR_GREATER || NETCOREAPP using System.IO.Compression; @@ -198,7 +199,7 @@ namespace MPF.Processors // Ensure the directory exists if (!Directory.Exists(baseDirectory)) return false; - + foreach (string filename in Filenames) { // Check for invalid filenames @@ -246,5 +247,25 @@ namespace MPF.Processors return false; } #endif + + /// + /// Get all matching paths for the file + /// + /// Base directory to check in + public virtual List GetPaths(string baseDirectory) + { + List paths = []; + + foreach (string filename in Filenames) + { + string possibleFile = Path.Combine(baseDirectory, filename); + if (!File.Exists(possibleFile)) + continue; + + paths.Add(possibleFile); + } + + return paths; + } } } \ No newline at end of file diff --git a/MPF.Processors/RegexOutputFile.cs b/MPF.Processors/RegexOutputFile.cs index 9d08d7c7..0ef5a1a8 100644 --- a/MPF.Processors/RegexOutputFile.cs +++ b/MPF.Processors/RegexOutputFile.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IO; #if NET452_OR_GREATER || NETCOREAPP using System.IO.Compression; @@ -64,10 +65,7 @@ namespace MPF.Processors } #if NET452_OR_GREATER || NETCOREAPP - /// - /// Indicates if an output file exists in an archive - /// - /// Zip archive to check in + /// public override bool Exists(ZipArchive? archive) { // If the archive is invalid @@ -85,5 +83,26 @@ namespace MPF.Processors return false; } #endif + + /// + public override List GetPaths(string baseDirectory) + { + // Ensure the directory exists + if (!Directory.Exists(baseDirectory)) + return []; + + List paths = []; + + // Get list of all files in directory + var directoryFiles = Directory.GetFiles(baseDirectory); + foreach (string file in directoryFiles) + { + var matches = Array.FindAll(Filenames, pattern => Regex.IsMatch(file, pattern)); + if (matches != null && matches.Length > 0) + paths.Add(file); + } + + return paths; + } } } \ No newline at end of file