diff --git a/SabreTools.DatItems.Test/DatItemToolTests.cs b/SabreTools.DatItems.Test/DatItemToolTests.cs new file mode 100644 index 00000000..8a5a2c74 --- /dev/null +++ b/SabreTools.DatItems.Test/DatItemToolTests.cs @@ -0,0 +1,389 @@ +using System.Text; +using SabreTools.Core.Tools; +using SabreTools.DatItems.Formats; +using SabreTools.FileTypes; +using SabreTools.FileTypes.Aaru; +using SabreTools.FileTypes.Archives; +using SabreTools.FileTypes.CHD; +using SabreTools.IO.Extensions; +using Xunit; + +namespace SabreTools.DatItems.Test +{ + public class DatItemToolTests + { + #region CreateDatItem + + [Theory] + [InlineData(FileType.None, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.AaruFormat, (TreatAsFile)0x00, ItemType.Media)] + [InlineData(FileType.AaruFormat, TreatAsFile.AaruFormat, ItemType.Rom)] + [InlineData(FileType.AaruFormat, TreatAsFile.NonArchive, ItemType.Rom)] + [InlineData(FileType.AaruFormat, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.CHD, (TreatAsFile)0x00, ItemType.Disk)] + [InlineData(FileType.CHD, TreatAsFile.CHD, ItemType.Rom)] + [InlineData(FileType.CHD, TreatAsFile.NonArchive, ItemType.Rom)] + [InlineData(FileType.CHD, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.Folder, (TreatAsFile)0x00, null)] + [InlineData(FileType.SevenZipArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.SevenZipArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.SevenZipArchive, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.GZipArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.GZipArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.GZipArchive, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.RarArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.RarArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.RarArchive, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.TapeArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.TapeArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.TapeArchive, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.XZArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.XZArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.XZArchive, TreatAsFile.All, ItemType.Rom)] + [InlineData(FileType.ZipArchive, (TreatAsFile)0x00, ItemType.Rom)] + [InlineData(FileType.ZipArchive, TreatAsFile.Archive, ItemType.Rom)] + [InlineData(FileType.ZipArchive, TreatAsFile.All, ItemType.Rom)] + public void CreateDatItemTest(FileType fileType, TreatAsFile asFile, ItemType? expected) + { + var baseFile = CreateBaseFile(fileType); + var actual = DatItemTool.CreateDatItem(baseFile, asFile); + Assert.Equal(expected, actual?.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()); + } + + #endregion + + #region ConvertToDisk + + [Fact] + public void ConvertToDisk_CHDFile() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + BaseFile baseFile = new CHDFile + { + Filename = filename, + MD5 = null, + InternalMD5 = md5.FromHexString(), + SHA1 = null, + InternalSHA1 = sha1.FromHexString(), + }; + + Disk actual = baseFile.ConvertToDisk(); + + Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Disk.NameKey)); + Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Disk.MD5Key)); + Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + [Fact] + public void ConvertToDisk_Generic() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + BaseFile baseFile = new BaseFile + { + Filename = filename, + MD5 = md5.FromHexString(), + SHA1 = sha1.FromHexString(), + }; + + Disk actual = baseFile.ConvertToDisk(); + + Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Disk.NameKey)); + Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Disk.MD5Key)); + Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + #endregion + + #region ConvertToFile + + [Fact] + public void ConvertToFile_Generic() + { + string crc = TextHelper.NormalizeCRC32("1234abcd")!; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + BaseFile baseFile = new BaseFile + { + CRC = crc.FromHexString(), + MD5 = md5.FromHexString(), + SHA1 = sha1.FromHexString(), + SHA256 = sha256.FromHexString(), + }; + + Formats.File actual = baseFile.ConvertToFile(); + + Assert.Equal(crc, actual.CRC); + Assert.Equal(md5, actual.MD5); + Assert.Equal(sha1, actual.SHA1); + Assert.Equal(sha256, actual.SHA256); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + #endregion + + #region ConvertToMedia + + [Fact] + public void ConvertToMedia_AaruFormat() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + string spamSum = "1234abcd"; + BaseFile baseFile = new AaruFormat + { + Filename = filename, + MD5 = null, + InternalMD5 = md5.FromHexString(), + SHA1 = null, + InternalSHA1 = sha1.FromHexString(), + SHA256 = null, + InternalSHA256 = sha256.FromHexString(), + SpamSum = null, + InternalSpamSum = Encoding.ASCII.GetBytes(spamSum), + }; + + Media actual = baseFile.ConvertToMedia(); + + Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Media.NameKey)); + Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Media.MD5Key)); + Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Media.SHA1Key)); + Assert.Equal(sha256, actual.GetStringFieldValue(Models.Metadata.Media.SHA256Key)); + Assert.Equal(spamSum, actual.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + [Fact] + public void ConvertToMedia_Generic() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + string spamSum = "1234abcd"; + BaseFile baseFile = new BaseFile + { + Filename = filename, + MD5 = md5.FromHexString(), + SHA1 = sha1.FromHexString(), + SHA256 = sha256.FromHexString(), + SpamSum = Encoding.ASCII.GetBytes(spamSum), + }; + + Media actual = baseFile.ConvertToMedia(); + + Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Media.NameKey)); + Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Media.MD5Key)); + Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Media.SHA1Key)); + Assert.Equal(sha256, actual.GetStringFieldValue(Models.Metadata.Media.SHA256Key)); + Assert.Equal(spamSum, actual.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + #endregion + + #region ConvertToRom + + [Fact] + public void ConvertToRom_Generic() + { + string filename = "XXXXXX"; + string date = "XXXXXX"; + string crc = TextHelper.NormalizeCRC32("1234abcd")!; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + string sha384 = TextHelper.NormalizeSHA384("1234abcd")!; + string sha512 = TextHelper.NormalizeSHA512("1234abcd")!; + string spamSum = "1234abcd"; + long size = 12345; + BaseFile baseFile = new BaseFile + { + Filename = filename, + Date = date, + CRC = crc.FromHexString(), + MD5 = md5.FromHexString(), + SHA1 = sha1.FromHexString(), + SHA256 = sha256.FromHexString(), + SHA384 = sha384.FromHexString(), + SHA512 = sha512.FromHexString(), + SpamSum = Encoding.ASCII.GetBytes(spamSum), + Size = size, + }; + + Rom actual = baseFile.ConvertToRom(); + + Assert.Equal(filename, actual.GetStringFieldValue(Models.Metadata.Rom.NameKey)); + Assert.Equal(date, actual.GetStringFieldValue(Models.Metadata.Rom.DateKey)); + Assert.Equal(crc, actual.GetStringFieldValue(Models.Metadata.Rom.CRCKey)); + Assert.Equal(md5, actual.GetStringFieldValue(Models.Metadata.Rom.MD5Key)); + Assert.Equal(sha1, actual.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)); + Assert.Equal(sha256, actual.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)); + Assert.Equal(sha384, actual.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)); + Assert.Equal(sha512, actual.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)); + Assert.Equal(spamSum, actual.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)); + Assert.Equal(size, actual.GetInt64FieldValue(Models.Metadata.Rom.SizeKey)); + Assert.Equal((DupeType)0x00, actual.GetFieldValue(DatItem.DupeTypeKey)); + } + + #endregion + + #region ConvertToBaseFile + + [Fact] + public void ConvertToBaseFile_Disk() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + + Disk disk = new Disk(); + disk.SetFieldValue(Models.Metadata.Disk.NameKey, filename); + disk.SetFieldValue(Models.Metadata.Disk.MD5Key, md5); + disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, sha1); + + BaseFile actual = disk.ConvertToBaseFile(); + CHDFile? actualChd = actual as CHDFile; + Assert.NotNull(actualChd); + + Assert.Equal(filename, actualChd.Filename); + Assert.Equal(md5, actualChd.MD5.ToHexString()); + Assert.Equal(md5, actualChd.InternalMD5.ToHexString()); + Assert.Equal(sha1, actualChd.SHA1.ToHexString()); + Assert.Equal(sha1, actualChd.InternalSHA1.ToHexString()); + } + + [Fact] + public void ConvertToBaseFile_File() + { + string crc = TextHelper.NormalizeCRC32("1234abcd")!; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + + Formats.File file = new Formats.File + { + CRC = crc, + MD5 = md5, + SHA1 = sha1, + SHA256 = sha256, + }; + + BaseFile actual = file.ConvertToBaseFile(); + + Assert.Equal(crc, actual.CRC.ToHexString()); + Assert.Equal(md5, actual.MD5.ToHexString()); + Assert.Equal(sha1, actual.SHA1.ToHexString()); + Assert.Equal(sha256, actual.SHA256.ToHexString()); + } + + [Fact] + public void ConvertToBaseFile_Media() + { + string filename = "XXXXXX"; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + string spamSum = "1234abcd"; + + Media media = new Media(); + media.SetFieldValue(Models.Metadata.Media.NameKey, filename); + media.SetFieldValue(Models.Metadata.Media.MD5Key, md5); + media.SetFieldValue(Models.Metadata.Media.SHA1Key, sha1); + media.SetFieldValue(Models.Metadata.Media.SHA256Key, sha256); + media.SetFieldValue(Models.Metadata.Media.SpamSumKey, spamSum); + + BaseFile actual = media.ConvertToBaseFile(); + AaruFormat? actualAif = actual as AaruFormat; + Assert.NotNull(actualAif); + + Assert.Equal(filename, actualAif.Filename); + Assert.Equal(md5, actualAif.MD5.ToHexString()); + Assert.Equal(md5, actualAif.InternalMD5.ToHexString()); + Assert.Equal(sha1, actualAif.SHA1.ToHexString()); + Assert.Equal(sha1, actualAif.InternalSHA1.ToHexString()); + Assert.Equal(sha256, actualAif.SHA256.ToHexString()); + Assert.Equal(sha256, actualAif.InternalSHA256.ToHexString()); + string actualSpamSum = Encoding.ASCII.GetString(actualAif.SpamSum!); + Assert.Equal(spamSum, actualSpamSum); + actualSpamSum = Encoding.ASCII.GetString(actualAif.InternalSpamSum!); + Assert.Equal(spamSum, actualSpamSum); + } + + [Fact] + public void ConvertToBaseFile_Rom() + { + string filename = "XXXXXX"; + string date = "XXXXXX"; + string crc = TextHelper.NormalizeCRC32("1234abcd")!; + string md5 = TextHelper.NormalizeMD5("1234abcd")!; + string sha1 = TextHelper.NormalizeSHA1("1234abcd")!; + string sha256 = TextHelper.NormalizeSHA256("1234abcd")!; + string sha384 = TextHelper.NormalizeSHA384("1234abcd")!; + string sha512 = TextHelper.NormalizeSHA512("1234abcd")!; + string spamSum = "1234abcd"; + long size = 12345; + + Rom rom = new Rom(); + rom.SetFieldValue(Models.Metadata.Rom.NameKey, filename); + rom.SetFieldValue(Models.Metadata.Rom.DateKey, date); + rom.SetFieldValue(Models.Metadata.Rom.CRCKey, crc); + rom.SetFieldValue(Models.Metadata.Rom.MD5Key, md5); + rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, sha1); + rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, sha256); + rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, sha384); + rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, sha512); + rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, spamSum); + rom.SetFieldValue(Models.Metadata.Rom.SizeKey, size); + + BaseFile actual = rom.ConvertToBaseFile(); + + Assert.Equal(filename, actual.Filename); + Assert.Equal(date, actual.Date); + Assert.Equal(crc, actual.CRC.ToHexString()); + Assert.Equal(md5, actual.MD5.ToHexString()); + Assert.Equal(sha1, actual.SHA1.ToHexString()); + Assert.Equal(sha256, actual.SHA256.ToHexString()); + Assert.Equal(sha384, actual.SHA384.ToHexString()); + Assert.Equal(sha512, actual.SHA512.ToHexString()); + string actualSpamSum = Encoding.ASCII.GetString(actual.SpamSum!); + Assert.Equal(spamSum, actualSpamSum); + Assert.Equal(size, actual.Size); + } + + #endregion + + #region Helpers + + /// + /// Create a BaseFile for testing + /// + private static BaseFile CreateBaseFile(FileType fileType) + { + return fileType switch + { + FileType.None => new BaseFile(), + FileType.AaruFormat => new AaruFormat(), + FileType.CHD => new CHDFile(), + FileType.Folder => new Folder(), + FileType.SevenZipArchive => new ZipArchive(), + FileType.GZipArchive => new ZipArchive(), + FileType.RarArchive => new ZipArchive(), + FileType.TapeArchive => new ZipArchive(), + FileType.XZArchive => new ZipArchive(), + FileType.ZipArchive => new ZipArchive(), + _ => new BaseFile(), + }; + } + + #endregion + } +} \ No newline at end of file diff --git a/SabreTools.DatItems.Test/SabreTools.DatItems.Test.csproj b/SabreTools.DatItems.Test/SabreTools.DatItems.Test.csproj new file mode 100644 index 00000000..008778f9 --- /dev/null +++ b/SabreTools.DatItems.Test/SabreTools.DatItems.Test.csproj @@ -0,0 +1,29 @@ + + + + net6.0;net8.0;net9.0 + false + latest + enable + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + \ No newline at end of file diff --git a/SabreTools.DatItems/DatItemTool.cs b/SabreTools.DatItems/DatItemTool.cs index e585c383..99e1e1bb 100644 --- a/SabreTools.DatItems/DatItemTool.cs +++ b/SabreTools.DatItems/DatItemTool.cs @@ -36,16 +36,16 @@ namespace SabreTools.DatItems { // Disk #if NET20 || NET35 - FileTypes.CHD.CHDFile when (asFile & TreatAsFile.CHD) == 0 => baseFile.ConvertToDisk(), + CHDFile when (asFile & TreatAsFile.CHD) == 0 => baseFile.ConvertToDisk(), #else - FileTypes.CHD.CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => baseFile.ConvertToDisk(), + CHDFile when !asFile.HasFlag(TreatAsFile.CHD) => baseFile.ConvertToDisk(), #endif // Media #if NET20 || NET35 - FileTypes.Aaru.AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => baseFile.ConvertToMedia(), + AaruFormat when (asFile & TreatAsFile.AaruFormat) == 0 => baseFile.ConvertToMedia(), #else - FileTypes.Aaru.AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => baseFile.ConvertToMedia(), + AaruFormat when !asFile.HasFlag(TreatAsFile.AaruFormat) => baseFile.ConvertToMedia(), #endif // Rom @@ -72,7 +72,7 @@ namespace SabreTools.DatItems var disk = new Disk(); disk.SetName(baseFile.Filename); - if (baseFile is FileTypes.CHD.CHDFile chd) + if (baseFile is CHDFile chd) { disk.SetFieldValue(Models.Metadata.Disk.MD5Key, chd.InternalMD5.ToHexString()); disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, chd.InternalSHA1.ToHexString()); @@ -118,7 +118,7 @@ namespace SabreTools.DatItems var media = new Media(); media.SetName(baseFile.Filename); - if (baseFile is FileTypes.Aaru.AaruFormat aif) + if (baseFile is AaruFormat aif) { media.SetFieldValue(Models.Metadata.Media.MD5Key, aif.InternalMD5.ToHexString()); media.SetFieldValue(Models.Metadata.Media.SHA1Key, aif.InternalSHA1.ToHexString()); @@ -171,10 +171,15 @@ namespace SabreTools.DatItems /// BaseFile containing original Disk information public static BaseFile ConvertToBaseFile(this Disk disk) { + string? machineName = null; + var machine = disk.GetFieldValue(DatItem.MachineKey); + if (machine != null) + machineName = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey); + return new CHDFile() { Filename = disk.GetName(), - Parent = disk.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + Parent = machineName, MD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(), InternalMD5 = disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key).FromHexString(), SHA1 = disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key).FromHexString(), @@ -189,9 +194,14 @@ namespace SabreTools.DatItems /// BaseFile containing original File information public static BaseFile ConvertToBaseFile(this Formats.File file) { + string? machineName = null; + var machine = file.GetFieldValue(DatItem.MachineKey); + if (machine != null) + machineName = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey); + return new BaseFile() { - Parent = file.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + Parent = machineName, CRC = file.CRC.FromHexString(), MD5 = file.MD5.FromHexString(), SHA1 = file.SHA1.FromHexString(), @@ -206,10 +216,15 @@ namespace SabreTools.DatItems /// BaseFile containing original Media information public static BaseFile ConvertToBaseFile(this Media media) { + string? machineName = null; + var machine = media.GetFieldValue(DatItem.MachineKey); + if (machine != null) + machineName = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey); + return new AaruFormat() { Filename = media.GetName(), - Parent = media.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + Parent = machineName, MD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(), InternalMD5 = media.GetStringFieldValue(Models.Metadata.Media.MD5Key).FromHexString(), SHA1 = media.GetStringFieldValue(Models.Metadata.Media.SHA1Key).FromHexString(), @@ -228,11 +243,16 @@ namespace SabreTools.DatItems /// BaseFile containing original Rom information public static BaseFile ConvertToBaseFile(this Rom rom) { + string? machineName = null; + var machine = rom.GetFieldValue(DatItem.MachineKey); + if (machine != null) + machineName = machine.GetStringFieldValue(Models.Metadata.Machine.NameKey); + string? spamSum = rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey); return new BaseFile() { Filename = rom.GetName(), - Parent = rom.GetFieldValue(DatItem.MachineKey)!.GetStringFieldValue(Models.Metadata.Machine.NameKey), + Parent = machineName, Date = rom.GetStringFieldValue(Models.Metadata.Rom.DateKey), Size = NumberHelper.ConvertToInt64(rom.GetStringFieldValue(Models.Metadata.Rom.SizeKey)), CRC = rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey).FromHexString(), diff --git a/SabreTools.Test/DatItems/DatItemTests.cs b/SabreTools.Test/DatItems/DatItemTests.cs index 5c377312..ce11e824 100644 --- a/SabreTools.Test/DatItems/DatItemTests.cs +++ b/SabreTools.Test/DatItems/DatItemTests.cs @@ -1,29 +1,11 @@ -using SabreTools.Core.Tools; using SabreTools.DatItems; using SabreTools.DatItems.Formats; -using SabreTools.FileTypes; -using SabreTools.FileTypes.Aaru; -using SabreTools.FileTypes.Archives; -using SabreTools.FileTypes.CHD; using Xunit; namespace SabreTools.Test.DatItems { public class DatItemTests { - [Theory] - [InlineData(FileType.None, ItemType.Rom)] - [InlineData(FileType.Folder, null)] - [InlineData(FileType.AaruFormat, ItemType.Media)] - [InlineData(FileType.CHD, ItemType.Disk)] - [InlineData(FileType.ZipArchive, ItemType.Rom)] - public void CreateBaseFileTest(FileType fileType, ItemType? expected) - { - var baseFile = CreateBaseFile(fileType); - var actual = DatItemTool.CreateDatItem(baseFile); - Assert.Equal(expected, actual?.GetStringFieldValue(Models.Metadata.DatItem.TypeKey).AsEnumValue()); - } - [Fact] public void DuplicateStatusUnequalTest() { @@ -133,36 +115,8 @@ namespace SabreTools.Test.DatItems Assert.Equal(DupeType.Internal | DupeType.Hash, actual); } - [Theory] - [InlineData(null, null, true)] - [InlineData(null, new byte[0], true)] - [InlineData(new byte[0], null, true)] - [InlineData(new byte[] { 0x00 }, new byte[] { 0x00, 0x01 }, false)] - [InlineData(new byte[] { 0x00 }, new byte[] { 0x01 }, false)] - [InlineData(new byte[] { 0x00 }, new byte[] { 0x00 }, true)] - public void ConditionalHashEqualsTest(byte[]? first, byte[]? second, bool expected) - { - bool actual = SabreTools.Core.Tools.Utilities.ConditionalHashEquals(first, second); - Assert.Equal(expected, actual); - } - // TODO: Add tests for DatItem.Merge // TODO: Add tests for ResolveNames // TODO: Add tests for Sort - - /// - /// Create a BaseFile for testing - /// - private static BaseFile CreateBaseFile(FileType fileType) - { - return fileType switch - { - FileType.Folder => new Folder(), - FileType.AaruFormat => new AaruFormat(), - FileType.CHD => new CHDFile(), - FileType.ZipArchive => new ZipArchive(), - _ => new BaseFile(), - }; - } } } \ No newline at end of file diff --git a/SabreTools.sln b/SabreTools.sln index 823ab27e..2770c7b7 100644 --- a/SabreTools.sln +++ b/SabreTools.sln @@ -32,6 +32,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.Core.Test", "Sab EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.FileTypes.Test", "SabreTools.FileTypes.Test\SabreTools.FileTypes.Test.csproj", "{76805ADC-1917-4892-BB07-7305825A72A5}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SabreTools.DatItems.Test", "SabreTools.DatItems.Test\SabreTools.DatItems.Test.csproj", "{5BB75FB7-D9D0-493D-AF31-A371882A44A4}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -128,6 +130,14 @@ Global {76805ADC-1917-4892-BB07-7305825A72A5}.Release|Any CPU.Build.0 = Release|Any CPU {76805ADC-1917-4892-BB07-7305825A72A5}.Release|x64.ActiveCfg = Release|Any CPU {76805ADC-1917-4892-BB07-7305825A72A5}.Release|x64.Build.0 = Release|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Debug|x64.ActiveCfg = Debug|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Debug|x64.Build.0 = Debug|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Release|Any CPU.Build.0 = Release|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Release|x64.ActiveCfg = Release|Any CPU + {5BB75FB7-D9D0-493D-AF31-A371882A44A4}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE