diff --git a/SabreTools.DatFiles.Test/ReplacerTests.cs b/SabreTools.DatFiles.Test/ReplacerTests.cs index 417c8a6b..f0538b8d 100644 --- a/SabreTools.DatFiles.Test/ReplacerTests.cs +++ b/SabreTools.DatFiles.Test/ReplacerTests.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; +using SabreTools.Core.Tools; using SabreTools.DatItems; using SabreTools.DatItems.Formats; +using SabreTools.Hashing; using Xunit; namespace SabreTools.DatFiles.Test @@ -27,85 +29,164 @@ namespace SabreTools.DatFiles.Test Assert.Equal("foo", machine.GetStringFieldValue(Models.Metadata.Machine.NameKey)); } - // TODO: Check more fields for replacement [Fact] public void ReplaceFields_Disk() { var datItem = new Disk(); datItem.SetName("foo"); + datItem.SetFieldValue(Models.Metadata.Disk.MD5Key, ZeroHash.MD5Str); + datItem.SetFieldValue(Models.Metadata.Disk.SHA1Key, ZeroHash.SHA1Str); var repDatItem = new Disk(); repDatItem.SetName("bar"); + repDatItem.SetFieldValue(Models.Metadata.Disk.MD5Key, "deadbeef"); + repDatItem.SetFieldValue(Models.Metadata.Disk.SHA1Key, "deadbeef"); var fields = new Dictionary> { - ["item"] = [Models.Metadata.Disk.NameKey] + ["item"] = + [ + Models.Metadata.Disk.NameKey, + Models.Metadata.Disk.MD5Key, + Models.Metadata.Disk.SHA1Key, + ] }; Replacer.ReplaceFields(datItem, repDatItem, fields); Assert.Equal("bar", datItem.GetName()); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Disk.MD5Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)); } - // TODO: Check more fields for replacement [Fact] public void ReplaceFields_File() { var datItem = new DatItems.Formats.File(); - datItem.SetName("foo"); + datItem.CRC = ZeroHash.CRC32Str; + datItem.MD5 = ZeroHash.MD5Str; + datItem.SHA1 = ZeroHash.SHA1Str; + datItem.SHA256 = ZeroHash.SHA256Str; var repDatItem = new DatItems.Formats.File(); - repDatItem.SetName("bar"); + repDatItem.CRC = TextHelper.NormalizeCRC32("deadbeef"); + repDatItem.MD5 = TextHelper.NormalizeMD5("deadbeef"); + repDatItem.SHA1 = TextHelper.NormalizeSHA1("deadbeef"); + repDatItem.SHA256 = TextHelper.NormalizeSHA256("deadbeef"); var fields = new Dictionary> { - ["item"] = [Models.Metadata.Rom.NameKey] + ["item"] = + [ + Models.Metadata.Rom.CRCKey, + Models.Metadata.Rom.MD5Key, + Models.Metadata.Rom.SHA1Key, + Models.Metadata.Rom.SHA256Key, + ] }; Replacer.ReplaceFields(datItem, repDatItem, fields); - // TODO: There is no name field for File type - //Assert.Equal("bar", datItem.GetName()); + Assert.Equal(TextHelper.NormalizeCRC32("deadbeef"), datItem.CRC); + Assert.Equal(TextHelper.NormalizeMD5("deadbeef"), datItem.MD5); + Assert.Equal(TextHelper.NormalizeSHA1("deadbeef"), datItem.SHA1); + Assert.Equal(TextHelper.NormalizeSHA256("deadbeef"), datItem.SHA256); } - // TODO: Check more fields for replacement [Fact] public void ReplaceFields_Media() { var datItem = new Media(); datItem.SetName("foo"); + datItem.SetFieldValue(Models.Metadata.Media.MD5Key, ZeroHash.MD5Str); + datItem.SetFieldValue(Models.Metadata.Media.SHA1Key, ZeroHash.SHA1Str); + datItem.SetFieldValue(Models.Metadata.Media.SHA256Key, ZeroHash.SHA256Str); + datItem.SetFieldValue(Models.Metadata.Media.SpamSumKey, ZeroHash.SpamSumStr); var repDatItem = new Media(); repDatItem.SetName("bar"); + datItem.SetFieldValue(Models.Metadata.Media.MD5Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Media.SHA1Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Media.SHA256Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Media.SpamSumKey, "deadbeef"); var fields = new Dictionary> { - ["item"] = [Models.Metadata.Media.NameKey] + ["item"] = + [ + Models.Metadata.Media.NameKey, + Models.Metadata.Media.MD5Key, + Models.Metadata.Media.SHA1Key, + Models.Metadata.Media.SHA256Key, + Models.Metadata.Media.SpamSumKey, + ] }; Replacer.ReplaceFields(datItem, repDatItem, fields); Assert.Equal("bar", datItem.GetName()); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Media.MD5Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Media.SHA1Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Media.SHA256Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)); } - // TODO: Check more fields for replacement [Fact] public void ReplaceFields_Rom() { var datItem = new Rom(); datItem.SetName("foo"); + datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, ZeroHash.CRC32Str); + datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, ZeroHash.GetString(HashType.MD2)); + datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, ZeroHash.GetString(HashType.MD4)); + datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, ZeroHash.MD5Str); + datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, ZeroHash.SHA1Str); + datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, ZeroHash.SHA256Str); + datItem.SetFieldValue(Models.Metadata.Rom.SHA384Key, ZeroHash.SHA384Str); + datItem.SetFieldValue(Models.Metadata.Rom.SHA512Key, ZeroHash.SHA512Str); + datItem.SetFieldValue(Models.Metadata.Rom.SpamSumKey, ZeroHash.SpamSumStr); var repDatItem = new Rom(); repDatItem.SetName("bar"); + datItem.SetFieldValue(Models.Metadata.Rom.CRCKey, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.MD2Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.MD4Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.MD5Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.SHA1Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.SHA256Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.SHA384Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.SHA512Key, "deadbeef"); + datItem.SetFieldValue(Models.Metadata.Rom.SpamSumKey, "deadbeef"); var fields = new Dictionary> { - ["item"] = [Models.Metadata.Rom.NameKey] + ["item"] = + [ + Models.Metadata.Rom.NameKey, + Models.Metadata.Rom.CRCKey, + Models.Metadata.Rom.MD2Key, + Models.Metadata.Rom.MD4Key, + Models.Metadata.Rom.MD5Key, + Models.Metadata.Rom.SHA1Key, + Models.Metadata.Rom.SHA256Key, + Models.Metadata.Rom.SHA384Key, + Models.Metadata.Rom.SHA512Key, + Models.Metadata.Rom.SpamSumKey, + ] }; Replacer.ReplaceFields(datItem, repDatItem, fields); Assert.Equal("bar", datItem.GetName()); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)); + Assert.Equal("deadbeef", datItem.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)); } [Fact] diff --git a/SabreTools.DatFiles/Replacer.cs b/SabreTools.DatFiles/Replacer.cs index 399b4d4e..40e7a2dd 100644 --- a/SabreTools.DatFiles/Replacer.cs +++ b/SabreTools.DatFiles/Replacer.cs @@ -105,13 +105,13 @@ namespace SabreTools.DatFiles { if (datItemFields.Contains(Models.Metadata.Disk.MD5Key)) { - if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Disk.MD5Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Disk.MD5Key))) disk.SetFieldValue(Models.Metadata.Disk.MD5Key, newItem.GetStringFieldValue(Models.Metadata.Disk.MD5Key)); } if (datItemFields.Contains(Models.Metadata.Disk.SHA1Key)) { - if (string.IsNullOrEmpty(disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Disk.SHA1Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Disk.SHA1Key))) disk.SetFieldValue(Models.Metadata.Disk.SHA1Key, newItem.GetStringFieldValue(Models.Metadata.Disk.SHA1Key)); } } @@ -126,25 +126,25 @@ namespace SabreTools.DatFiles { if (datItemFields.Contains(Models.Metadata.Rom.CRCKey)) { - if (string.IsNullOrEmpty(file.CRC) && !string.IsNullOrEmpty(newItem.CRC)) + if (!string.IsNullOrEmpty(newItem.CRC)) file.CRC = newItem.CRC; } if (datItemFields.Contains(Models.Metadata.Rom.MD5Key)) { - if (string.IsNullOrEmpty(file.MD5) && !string.IsNullOrEmpty(newItem.MD5)) + if (!string.IsNullOrEmpty(newItem.MD5)) file.MD5 = newItem.MD5; } if (datItemFields.Contains(Models.Metadata.Rom.SHA1Key)) { - if (string.IsNullOrEmpty(file.SHA1) && !string.IsNullOrEmpty(newItem.SHA1)) + if (!string.IsNullOrEmpty(newItem.SHA1)) file.SHA1 = newItem.SHA1; } if (datItemFields.Contains(Models.Metadata.Rom.SHA256Key)) { - if (string.IsNullOrEmpty(file.SHA256) && !string.IsNullOrEmpty(newItem.SHA256)) + if (!string.IsNullOrEmpty(newItem.SHA256)) file.SHA256 = newItem.SHA256; } } @@ -159,25 +159,25 @@ namespace SabreTools.DatFiles { if (datItemFields.Contains(Models.Metadata.Media.MD5Key)) { - if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.MD5Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.MD5Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.MD5Key))) media.SetFieldValue(Models.Metadata.Media.MD5Key, newItem.GetStringFieldValue(Models.Metadata.Media.MD5Key)); } if (datItemFields.Contains(Models.Metadata.Media.SHA1Key)) { - if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA1Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SHA1Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SHA1Key))) media.SetFieldValue(Models.Metadata.Media.SHA1Key, newItem.GetStringFieldValue(Models.Metadata.Media.SHA1Key)); } if (datItemFields.Contains(Models.Metadata.Media.SHA256Key)) { - if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SHA256Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SHA256Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SHA256Key))) media.SetFieldValue(Models.Metadata.Media.SHA256Key, newItem.GetStringFieldValue(Models.Metadata.Media.SHA256Key)); } if (datItemFields.Contains(Models.Metadata.Media.SpamSumKey)) { - if (string.IsNullOrEmpty(media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SpamSumKey))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Media.SpamSumKey))) media.SetFieldValue(Models.Metadata.Media.SpamSumKey, newItem.GetStringFieldValue(Models.Metadata.Media.SpamSumKey)); } } @@ -192,55 +192,55 @@ namespace SabreTools.DatFiles { if (datItemFields.Contains(Models.Metadata.Rom.CRCKey)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey))) rom.SetFieldValue(Models.Metadata.Rom.CRCKey, newItem.GetStringFieldValue(Models.Metadata.Rom.CRCKey)); } if (datItemFields.Contains(Models.Metadata.Rom.MD2Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key))) rom.SetFieldValue(Models.Metadata.Rom.MD2Key, newItem.GetStringFieldValue(Models.Metadata.Rom.MD2Key)); } if (datItemFields.Contains(Models.Metadata.Rom.MD4Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key))) rom.SetFieldValue(Models.Metadata.Rom.MD4Key, newItem.GetStringFieldValue(Models.Metadata.Rom.MD4Key)); } if (datItemFields.Contains(Models.Metadata.Rom.MD5Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key))) rom.SetFieldValue(Models.Metadata.Rom.MD5Key, newItem.GetStringFieldValue(Models.Metadata.Rom.MD5Key)); } if (datItemFields.Contains(Models.Metadata.Rom.SHA1Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key))) rom.SetFieldValue(Models.Metadata.Rom.SHA1Key, newItem.GetStringFieldValue(Models.Metadata.Rom.SHA1Key)); } if (datItemFields.Contains(Models.Metadata.Rom.SHA256Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA256Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA256Key))) rom.SetFieldValue(Models.Metadata.Rom.SHA256Key, newItem.GetStringFieldValue(Models.Metadata.Rom.SHA256Key)); } if (datItemFields.Contains(Models.Metadata.Rom.SHA384Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA384Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA384Key))) rom.SetFieldValue(Models.Metadata.Rom.SHA384Key, newItem.GetStringFieldValue(Models.Metadata.Rom.SHA384Key)); } if (datItemFields.Contains(Models.Metadata.Rom.SHA512Key)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA512Key))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SHA512Key))) rom.SetFieldValue(Models.Metadata.Rom.SHA512Key, newItem.GetStringFieldValue(Models.Metadata.Rom.SHA512Key)); } if (datItemFields.Contains(Models.Metadata.Rom.SpamSumKey)) { - if (string.IsNullOrEmpty(rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)) && !string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey))) + if (!string.IsNullOrEmpty(newItem.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey))) rom.SetFieldValue(Models.Metadata.Rom.SpamSumKey, newItem.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey)); } }