Convert most of Media over to properties

This commit is contained in:
Matt Nadareski
2026-04-03 19:47:58 -04:00
parent 5b3ff31f85
commit 8e2f519e15
36 changed files with 444 additions and 423 deletions

View File

@@ -84,10 +84,10 @@ namespace SabreTools.Data.Extensions.Test
DictionaryBase? self = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
Rom? actual = self.ConvertToRom();
@@ -225,17 +225,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = string.Empty,
MD5 = "XXXXXX",
SHA1 = string.Empty,
SHA256 = "XXXXXX",
SpamSum = string.Empty,
};
Media other = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = "XXXXXX",
MD5 = string.Empty,
SHA1 = "XXXXXX",
SHA256 = string.Empty,
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -247,17 +247,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = "XXXXXX",
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = string.Empty,
};
Media other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -269,17 +269,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = "XXXXXX",
SHA256 = string.Empty,
SpamSum = string.Empty,
};
Media other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -291,17 +291,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = "XXXXXX",
SpamSum = string.Empty,
};
Media other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -313,17 +313,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = "XXXXXX",
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = "XXXXXX",
};
Media other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -335,17 +335,17 @@ namespace SabreTools.Data.Extensions.Test
{
Media self = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
Media other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HashMatch(other);
@@ -1029,10 +1029,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.HasZeroHash();
@@ -1044,10 +1044,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = HashType.MD5.ZeroString,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = HashType.MD5.ZeroString,
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = string.Empty,
};
bool actual = self.HasZeroHash();
@@ -1059,10 +1059,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = HashType.SHA1.ZeroString,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = HashType.SHA1.ZeroString,
SHA256 = string.Empty,
SpamSum = string.Empty,
};
bool actual = self.HasZeroHash();
@@ -1074,10 +1074,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = HashType.SHA256.ZeroString,
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = HashType.SHA256.ZeroString,
SpamSum = string.Empty,
};
bool actual = self.HasZeroHash();
@@ -1089,10 +1089,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = HashType.SpamSum.ZeroString,
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = HashType.SpamSum.ZeroString,
};
bool actual = self.HasZeroHash();
@@ -1104,10 +1104,10 @@ namespace SabreTools.Data.Extensions.Test
{
DictionaryBase self = new Media
{
[Media.MD5Key] = HashType.MD5.ZeroString,
[Media.SHA1Key] = HashType.SHA1.ZeroString,
[Media.SHA256Key] = HashType.SHA256.ZeroString,
[Media.SpamSumKey] = HashType.SpamSum.ZeroString,
MD5 = HashType.MD5.ZeroString,
SHA1 = HashType.SHA1.ZeroString,
SHA256 = HashType.SHA256.ZeroString,
SpamSum = HashType.SpamSum.ZeroString,
};
bool actual = self.HasZeroHash();
@@ -1532,10 +1532,10 @@ namespace SabreTools.Data.Extensions.Test
DictionaryBase self = new Media();
DictionaryBase other = new Media
{
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
self.FillMissingHashes(other);

View File

@@ -314,6 +314,13 @@ namespace SabreTools.Data.Extensions
cloneMachine.Runnable = selfMachine.Runnable;
cloneMachine.Supported = selfMachine.Supported;
}
else if (self is Media selfMedia && clone is Media cloneMedia)
{
cloneMedia.MD5 = selfMedia.MD5;
cloneMedia.SHA1 = selfMedia.SHA1;
cloneMedia.SHA256 = selfMedia.SHA256;
cloneMedia.SpamSum = selfMedia.SpamSum;
}
else if (self is Part selfPart && clone is Part clonePart)
{
clonePart.Interface = selfPart.Interface;
@@ -431,10 +438,10 @@ namespace SabreTools.Data.Extensions
return new Rom
{
Name = name,
[Rom.MD5Key] = media.ReadString(Media.MD5Key),
[Rom.SHA1Key] = media.ReadString(Media.SHA1Key),
[Rom.SHA256Key] = media.ReadString(Media.SHA256Key),
[Rom.SpamSumKey] = media.ReadString(Media.SpamSumKey),
[Rom.MD5Key] = media.MD5,
[Rom.SHA1Key] = media.SHA1,
[Rom.SHA256Key] = media.SHA256,
[Rom.SpamSumKey] = media.SpamSum,
};
}
@@ -516,21 +523,10 @@ namespace SabreTools.Data.Extensions
return false;
// Return if all hashes match according to merge rules
string? selfMd5 = self.ReadString(Media.MD5Key);
string? otherMd5 = other.ReadString(Media.MD5Key);
bool conditionalMd5 = ConditionalHashEquals(selfMd5, otherMd5);
string? selfSha1 = self.ReadString(Media.SHA1Key);
string? otherSha1 = other.ReadString(Media.SHA1Key);
bool conditionalSha1 = ConditionalHashEquals(selfSha1, otherSha1);
string? selfSha256 = self.ReadString(Media.SHA256Key);
string? otherSha256 = other.ReadString(Media.SHA256Key);
bool conditionalSha256 = ConditionalHashEquals(selfSha256, otherSha256);
string? selfSpamSum = self.ReadString(Media.SpamSumKey);
string? otherSpamSum = other.ReadString(Media.SpamSumKey);
bool conditionalSpamSum = ConditionalHashEquals(selfSpamSum, otherSpamSum);
bool conditionalMd5 = ConditionalHashEquals(self.MD5, other.MD5);
bool conditionalSha1 = ConditionalHashEquals(self.SHA1, other.SHA1);
bool conditionalSha256 = ConditionalHashEquals(self.SHA256, other.SHA256);
bool conditionalSpamSum = ConditionalHashEquals(self.SpamSum, other.SpamSum);
return conditionalMd5
&& conditionalSha1
@@ -667,17 +663,17 @@ namespace SabreTools.Data.Extensions
/// </summary>
private static bool HasCommonHash(this Media self, Media other)
{
bool md5Null = string.IsNullOrEmpty(self.ReadString(Media.MD5Key));
md5Null ^= string.IsNullOrEmpty(other.ReadString(Media.MD5Key));
bool md5Null = string.IsNullOrEmpty(self.MD5);
md5Null ^= string.IsNullOrEmpty(other.MD5);
bool sha1Null = string.IsNullOrEmpty(self.ReadString(Media.SHA1Key));
sha1Null ^= string.IsNullOrEmpty(other.ReadString(Media.SHA1Key));
bool sha1Null = string.IsNullOrEmpty(self.SHA1);
sha1Null ^= string.IsNullOrEmpty(other.SHA1);
bool sha256Null = string.IsNullOrEmpty(self.ReadString(Media.SHA256Key));
sha256Null ^= string.IsNullOrEmpty(other.ReadString(Media.SHA256Key));
bool sha256Null = string.IsNullOrEmpty(self.SHA256);
sha256Null ^= string.IsNullOrEmpty(other.SHA256);
bool spamsumNull = string.IsNullOrEmpty(self.ReadString(Media.SpamSumKey));
spamsumNull ^= string.IsNullOrEmpty(other.ReadString(Media.SpamSumKey));
bool spamsumNull = string.IsNullOrEmpty(self.SpamSum);
spamsumNull ^= string.IsNullOrEmpty(other.SpamSum);
return !md5Null
|| !sha1Null
@@ -761,10 +757,10 @@ namespace SabreTools.Data.Extensions
/// </summary>
private static bool HasHashes(this Media media)
{
bool md5Null = string.IsNullOrEmpty(media.ReadString(Media.MD5Key));
bool sha1Null = string.IsNullOrEmpty(media.ReadString(Media.SHA1Key));
bool sha256Null = string.IsNullOrEmpty(media.ReadString(Media.SHA256Key));
bool spamsumNull = string.IsNullOrEmpty(media.ReadString(Media.SpamSumKey));
bool md5Null = string.IsNullOrEmpty(media.MD5);
bool sha1Null = string.IsNullOrEmpty(media.SHA1);
bool sha256Null = string.IsNullOrEmpty(media.SHA256);
bool spamsumNull = string.IsNullOrEmpty(media.SpamSum);
return !md5Null
|| !sha1Null
@@ -826,16 +822,16 @@ namespace SabreTools.Data.Extensions
/// </summary>
private static bool HasZeroHash(this Media media)
{
string? md5 = media.ReadString(Media.MD5Key);
string? md5 = media.MD5;
bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase);
string? sha1 = media.ReadString(Media.SHA1Key);
string? sha1 = media.SHA1;
bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase);
string? sha256 = media.ReadString(Media.SHA256Key);
string? sha256 = media.SHA256;
bool sha256Null = string.IsNullOrEmpty(sha256) || string.Equals(sha256, HashType.SHA256.ZeroString, StringComparison.OrdinalIgnoreCase);
string? spamsum = media.ReadString(Media.SpamSumKey);
string? spamsum = media.SpamSum;
bool spamsumNull = string.IsNullOrEmpty(spamsum) || string.Equals(spamsum, HashType.SpamSum.ZeroString, StringComparison.OrdinalIgnoreCase);
return md5Null
@@ -968,25 +964,25 @@ namespace SabreTools.Data.Extensions
if (self is null || other is null)
return;
string? selfMd5 = self.ReadString(Media.MD5Key);
string? otherMd5 = other.ReadString(Media.MD5Key);
string? selfMd5 = self.MD5;
string? otherMd5 = other.MD5;
if (string.IsNullOrEmpty(selfMd5) && !string.IsNullOrEmpty(otherMd5))
self[Media.MD5Key] = otherMd5;
self.MD5 = otherMd5;
string? selfSha1 = self.ReadString(Media.SHA1Key);
string? otherSha1 = other.ReadString(Media.SHA1Key);
string? selfSha1 = self.SHA1;
string? otherSha1 = other.SHA1;
if (string.IsNullOrEmpty(selfSha1) && !string.IsNullOrEmpty(otherSha1))
self[Media.SHA1Key] = otherSha1;
self.SHA1 = otherSha1;
string? selfSha256 = self.ReadString(Media.SHA256Key);
string? otherSha256 = other.ReadString(Media.SHA256Key);
string? selfSha256 = self.SHA256;
string? otherSha256 = other.SHA256;
if (string.IsNullOrEmpty(selfSha256) && !string.IsNullOrEmpty(otherSha256))
self[Media.SHA256Key] = otherSha256;
self.SHA256 = otherSha256;
string? selfSpamSum = self.ReadString(Media.SpamSumKey);
string? otherSpamSum = other.ReadString(Media.SpamSumKey);
string? selfSpamSum = self.SpamSum;
string? otherSpamSum = other.SpamSum;
if (string.IsNullOrEmpty(selfSpamSum) && !string.IsNullOrEmpty(otherSpamSum))
self[Media.SpamSumKey] = otherSpamSum;
self.SpamSum = otherSpamSum;
}
/// <summary>

View File

@@ -3,28 +3,22 @@ using Newtonsoft.Json;
namespace SabreTools.Data.Models.Metadata
{
// TODO: ICloneable
// TODO: IEquatable
[JsonObject("media"), XmlRoot("media")]
public class Media : DatItem
{
#region Properties
public string? MD5 { get; set; }
public string? Name { get; set; }
#endregion
public string? SHA1 { get; set; }
#region Keys
public string? SHA256 { get; set; }
/// <remarks>string</remarks>
public const string MD5Key = "md5";
/// <remarks>string</remarks>
public const string SHA1Key = "sha1";
/// <remarks>string</remarks>
public const string SHA256Key = "sha256";
/// <remarks>string</remarks>
public const string SpamSumKey = "spamsum";
public string? SpamSum { get; set; }
#endregion

View File

@@ -684,11 +684,11 @@ namespace SabreTools.Metadata.DatFiles.Test
{
return new Data.Models.Metadata.Media
{
[Data.Models.Metadata.Media.MD5Key] = HashType.MD5.ZeroString,
MD5 = HashType.MD5.ZeroString,
Name = "name",
[Data.Models.Metadata.Media.SHA1Key] = HashType.SHA1.ZeroString,
[Data.Models.Metadata.Media.SHA256Key] = HashType.SHA256.ZeroString,
[Data.Models.Metadata.Media.SpamSumKey] = HashType.SpamSum.ZeroString,
SHA1 = HashType.SHA1.ZeroString,
SHA256 = HashType.SHA256.ZeroString,
SpamSum = HashType.SpamSum.ZeroString,
};
}
@@ -1415,11 +1415,11 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMedia(Media? media)
{
Assert.NotNull(media);
Assert.Equal(HashType.MD5.ZeroString, media.ReadString(Data.Models.Metadata.Media.MD5Key));
Assert.Equal(HashType.MD5.ZeroString, media.MD5);
Assert.Equal("name", media.Name);
Assert.Equal(HashType.SHA1.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA1Key));
Assert.Equal(HashType.SHA256.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA256Key));
Assert.Equal(HashType.SpamSum.ZeroString, media.ReadString(Data.Models.Metadata.Media.SpamSumKey));
Assert.Equal(HashType.SHA1.ZeroString, media.SHA1);
Assert.Equal(HashType.SHA256.ZeroString, media.SHA256);
Assert.Equal(HashType.SpamSum.ZeroString, media.SpamSum);
}
private static void ValidatePart(Part? part)

View File

@@ -950,11 +950,11 @@ namespace SabreTools.Metadata.DatFiles.Test
private static void ValidateMetadataMedia(Data.Models.Metadata.Media? media)
{
Assert.NotNull(media);
Assert.Equal(HashType.MD5.ZeroString, media.ReadString(Data.Models.Metadata.Media.MD5Key));
Assert.Equal(HashType.MD5.ZeroString, media.MD5);
Assert.Equal("name", media.Name);
Assert.Equal(HashType.SHA1.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA1Key));
Assert.Equal(HashType.SHA256.ZeroString, media.ReadString(Data.Models.Metadata.Media.SHA256Key));
Assert.Equal(HashType.SpamSum.ZeroString, media.ReadString(Data.Models.Metadata.Media.SpamSumKey));
Assert.Equal(HashType.SHA1.ZeroString, media.SHA1);
Assert.Equal(HashType.SHA256.ZeroString, media.SHA256);
Assert.Equal(HashType.SpamSum.ZeroString, media.SpamSum);
}
private static void ValidateMetadataPart(Data.Models.Metadata.Part? part)

View File

@@ -1448,12 +1448,14 @@ namespace SabreTools.Metadata.DatFiles.Test
machine.Write(Data.Models.Metadata.Machine.PublisherKey, "publisher");
machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category");
DatItem item = new Media();
DatItem item = new Media
{
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
item.SetName("name");
item.Write(Data.Models.Metadata.Media.MD5Key, "md5");
item.Write(Data.Models.Metadata.Media.SHA1Key, "sha1");
item.Write(Data.Models.Metadata.Media.SHA256Key, "sha256");
item.Write(Data.Models.Metadata.Media.SpamSumKey, "spamsum");
string actual = DatFile.FormatPrefixPostfix(item, machine, fix);
Assert.Equal(expected, actual);
@@ -1731,8 +1733,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Media_MD5()
{
string hash = "XXXXXX";
DatItem datItem = new Media();
datItem.Write(Data.Models.Metadata.Media.MD5Key, hash);
DatItem datItem = new Media() { MD5 = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);
@@ -1742,8 +1743,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Media_SHA1()
{
string hash = "XXXXXX";
DatItem datItem = new Media();
datItem.Write(Data.Models.Metadata.Media.SHA1Key, hash);
DatItem datItem = new Media() { SHA1 = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);
@@ -1753,8 +1753,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Media_SHA256()
{
string hash = "XXXXXX";
DatItem datItem = new Media();
datItem.Write(Data.Models.Metadata.Media.SHA256Key, hash);
DatItem datItem = new Media() { SHA256 = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);
@@ -1764,8 +1763,7 @@ namespace SabreTools.Metadata.DatFiles.Test
public void GetDuplicateSuffix_Media_SpamSum()
{
string hash = "XXXXXX";
DatItem datItem = new Media();
datItem.Write(Data.Models.Metadata.Media.SpamSumKey, hash);
DatItem datItem = new Media() { SpamSum = hash };
string actual = DatFile.GetDuplicateSuffix(datItem);
Assert.Equal($"_{hash}", actual);

View File

@@ -284,10 +284,10 @@ namespace SabreTools.Metadata.DatFiles.Test
{
var media = new Media();
media.Write<string?>(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
media.Write<string?>(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
media.Write<string?>(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
media.Write<string?>(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
media.MD5 = HashType.MD5.ZeroString;
media.SHA1 = HashType.SHA1.ZeroString;
media.SHA256 = HashType.SHA256.ZeroString;
media.SpamSum = HashType.SpamSum.ZeroString;
return media;
}

View File

@@ -442,7 +442,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.MD5Key,
nameof(Data.Models.Metadata.Media.MD5),
]));
}
@@ -549,7 +549,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA1Key,
nameof(Data.Models.Metadata.Media.SHA1),
]));
}
@@ -590,7 +590,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA256Key,
nameof(Data.Models.Metadata.Media.SHA256),
]));
}
@@ -681,7 +681,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SpamSumKey,
nameof(Data.Models.Metadata.Media.SpamSum),
]));
}
@@ -1154,7 +1154,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA1Key,
nameof(Data.Models.Metadata.Media.SHA1),
]));
}
@@ -1406,7 +1406,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA1Key,
nameof(Data.Models.Metadata.Media.SHA1),
]));
}
@@ -1464,7 +1464,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA1Key,
nameof(Data.Models.Metadata.Media.SHA1),
]));
}
@@ -1522,7 +1522,7 @@ namespace SabreTools.Metadata.DatFiles.Test
Assert.NotNull(actual);
Assert.True(actual.SequenceEqual([
nameof(Data.Models.Metadata.Media.Name),
Data.Models.Metadata.Media.SHA1Key,
nameof(Data.Models.Metadata.Media.SHA1),
]));
}

View File

@@ -96,9 +96,8 @@ namespace SabreTools.Metadata.DatFiles.Test
Source source = new Source(0, source: null);
Machine machine = new Machine();
DatItem media = new Media();
DatItem media = new Media() { SHA1 = "deadbeef" };
media.SetName("item");
media.Write<string?>(Data.Models.Metadata.Media.SHA1Key, "deadbeef");
var dict = new ItemDictionaryDB();
long sourceIndex = dict.AddSource(source);

View File

@@ -96,9 +96,8 @@ namespace SabreTools.Metadata.DatFiles.Test
Source source = new Source(0, source: null);
Machine machine = new Machine();
DatItem media = new Media();
DatItem media = new Media() { SHA1 = "deadbeef" };
media.SetName("item");
media.Write<string?>(Data.Models.Metadata.Media.SHA1Key, "deadbeef");
media.Source = source;
media.Machine = machine;

View File

@@ -523,7 +523,7 @@ namespace SabreTools.Metadata.DatFiles
else if (item is Media media)
{
// We can only write out if there's a SHA-1
string? sha1 = media.ReadString(Data.Models.Metadata.Media.SHA1Key);
string? sha1 = media.SHA1;
if (!string.IsNullOrEmpty(sha1))
{
name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/');
@@ -620,10 +620,10 @@ namespace SabreTools.Metadata.DatFiles
}
else if (item is Media media)
{
md5 = media.ReadString(Data.Models.Metadata.Media.MD5Key) ?? string.Empty;
sha1 = media.ReadString(Data.Models.Metadata.Media.SHA1Key) ?? string.Empty;
sha256 = media.ReadString(Data.Models.Metadata.Media.SHA256Key) ?? string.Empty;
spamsum = media.ReadString(Data.Models.Metadata.Media.SpamSumKey) ?? string.Empty;
md5 = media.MD5 ?? string.Empty;
sha1 = media.SHA1 ?? string.Empty;
sha256 = media.SHA256 ?? string.Empty;
spamsum = media.SpamSum ?? string.Empty;
}
else if (item is Rom rom)
{
@@ -1072,19 +1072,19 @@ namespace SabreTools.Metadata.DatFiles
/// </summary>
private static string GetDuplicateSuffix(Media datItem)
{
string? md5 = datItem.ReadString(Data.Models.Metadata.Media.MD5Key);
string? md5 = datItem.MD5;
if (!string.IsNullOrEmpty(md5))
return $"_{md5}";
string? sha1 = datItem.ReadString(Data.Models.Metadata.Media.SHA1Key);
string? sha1 = datItem.SHA1;
if (!string.IsNullOrEmpty(sha1))
return $"_{sha1}";
string? sha256 = datItem.ReadString(Data.Models.Metadata.Media.SHA256Key);
string? sha256 = datItem.SHA256;
if (!string.IsNullOrEmpty(sha256))
return $"_{sha256}";
string? spamSum = datItem.ReadString(Data.Models.Metadata.Media.SpamSumKey);
string? spamSum = datItem.SpamSum;
if (!string.IsNullOrEmpty(spamSum))
return $"_{spamSum}";

View File

@@ -359,10 +359,10 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="media">Item to add info from</param>
private void AddItemStatistics(Media media)
{
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) ? 0 : 1);
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) ? 0 : 1);
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) ? 0 : 1);
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
AddHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : 1);
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : 1);
AddHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : 1);
AddHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : 1);
}
/// <summary>
@@ -488,10 +488,10 @@ namespace SabreTools.Metadata.DatFiles
/// <param name="media">Item to remove info for</param>
private void RemoveItemStatistics(Media media)
{
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key)) ? 0 : 1);
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key)) ? 0 : 1);
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key)) ? 0 : 1);
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)) ? 0 : 1);
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(media.MD5) ? 0 : 1);
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(media.SHA1) ? 0 : 1);
RemoveHashCount(HashType.SHA256, string.IsNullOrEmpty(media.SHA256) ? 0 : 1);
RemoveHashCount(HashType.SpamSum, string.IsNullOrEmpty(media.SpamSum) ? 0 : 1);
}
/// <summary>

View File

@@ -317,12 +317,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
case Media media:
if (string.IsNullOrEmpty(media.Name))
missingFields.Add(nameof(Data.Models.Metadata.Media.Name));
if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)))
if (string.IsNullOrEmpty(media.MD5)
&& string.IsNullOrEmpty(media.SHA1)
&& string.IsNullOrEmpty(media.SHA256)
&& string.IsNullOrEmpty(media.SpamSum))
{
missingFields.Add(Data.Models.Metadata.Media.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Media.SHA1));
}
break;

View File

@@ -45,8 +45,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Media medium:
if (string.IsNullOrEmpty(medium.ReadString(Data.Models.Metadata.Media.MD5Key)))
missingFields.Add(Data.Models.Metadata.Media.MD5Key);
if (string.IsNullOrEmpty(medium.MD5))
missingFields.Add(nameof(Data.Models.Metadata.Media.MD5));
break;
case Rom rom:

View File

@@ -82,12 +82,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Media media:
if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)))
if (string.IsNullOrEmpty(media.MD5)
&& string.IsNullOrEmpty(media.SHA1)
&& string.IsNullOrEmpty(media.SHA256)
&& string.IsNullOrEmpty(media.SpamSum))
{
missingFields.Add(Data.Models.Metadata.Media.SHA1Key);
missingFields.Add(nameof(Data.Models.Metadata.Media.SHA1));
}
break;

View File

@@ -45,8 +45,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
break;
case Media medium:
if (string.IsNullOrEmpty(medium.ReadString(Data.Models.Metadata.Media.SHA1Key)))
missingFields.Add(Data.Models.Metadata.Media.SHA1Key);
if (string.IsNullOrEmpty(medium.SHA1))
missingFields.Add(nameof(Data.Models.Metadata.Media.SHA1));
break;
case Rom rom:

View File

@@ -39,8 +39,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Media medium:
if (string.IsNullOrEmpty(medium.ReadString(Data.Models.Metadata.Media.SHA256Key)))
missingFields.Add(Data.Models.Metadata.Media.SHA256Key);
if (string.IsNullOrEmpty(medium.SHA256))
missingFields.Add(nameof(Data.Models.Metadata.Media.SHA256));
break;
case Rom rom:

View File

@@ -39,8 +39,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
switch (datItem)
{
case Media medium:
if (string.IsNullOrEmpty(medium.ReadString(Data.Models.Metadata.Media.SpamSumKey)))
missingFields.Add(Data.Models.Metadata.Media.SpamSumKey);
if (string.IsNullOrEmpty(medium.SpamSum))
missingFields.Add(nameof(Data.Models.Metadata.Media.SpamSum));
break;
case Rom rom:

View File

@@ -124,10 +124,10 @@ namespace SabreTools.Metadata.DatFiles
else if (item is Media media)
{
// If the file has aboslutely no hashes, skip and log
if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)))
if (string.IsNullOrEmpty(media.MD5)
&& string.IsNullOrEmpty(media.SHA1)
&& string.IsNullOrEmpty(media.SHA256)
&& string.IsNullOrEmpty(media.SpamSum))
{
_logger.Verbose($"Incomplete entry for '{media.Name}' will be output as nodump");
}

View File

@@ -213,10 +213,10 @@ namespace SabreTools.Metadata.DatFiles
else if (item is Media media)
{
// If the file has aboslutely no hashes, skip and log
if (string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.MD5Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA1Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SHA256Key))
&& string.IsNullOrEmpty(media.ReadString(Data.Models.Metadata.Media.SpamSumKey)))
if (string.IsNullOrEmpty(media.MD5)
&& string.IsNullOrEmpty(media.SHA1)
&& string.IsNullOrEmpty(media.SHA256)
&& string.IsNullOrEmpty(media.SpamSum))
{
_logger.Verbose($"Incomplete entry for '{media.Name}' will be output as nodump");
}

View File

@@ -17,10 +17,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Media media = new Media();
media.Name = "name";
media.Write(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
media.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
media.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
media.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
media.MD5 = HashType.MD5.ZeroString;
media.SHA1 = HashType.SHA1.ZeroString;
media.SHA256 = HashType.SHA256.ZeroString;
media.SpamSum = HashType.SpamSum.ZeroString;
media.DupeType = DupeType.All | DupeType.External;
media.Machine = machine;
media.RemoveFlag = false;
@@ -59,10 +59,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
self.FillMissingInformation(other);
Assert.Null(self.ReadString(Data.Models.Metadata.Media.MD5Key));
Assert.Null(self.ReadString(Data.Models.Metadata.Media.SHA1Key));
Assert.Null(self.ReadString(Data.Models.Metadata.Media.SHA256Key));
Assert.Null(self.ReadString(Data.Models.Metadata.Media.SpamSumKey));
Assert.Null(self.MD5);
Assert.Null(self.SHA1);
Assert.Null(self.SHA256);
Assert.Null(self.SpamSum);
}
[Fact]
@@ -71,17 +71,17 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Media self = new Media();
Media other = new Media();
other.Write(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
other.Write(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
other.Write(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
other.Write(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
other.MD5 = "XXXXXX";
other.SHA1 = "XXXXXX";
other.SHA256 = "XXXXXX";
other.SpamSum = "XXXXXX";
self.FillMissingInformation(other);
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Media.MD5Key));
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Media.SHA1Key));
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Media.SHA256Key));
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Media.SpamSumKey));
Assert.Equal("XXXXXX", self.MD5);
Assert.Equal("XXXXXX", self.SHA1);
Assert.Equal("XXXXXX", self.SHA256);
Assert.Equal("XXXXXX", self.SpamSum);
}
#endregion
@@ -100,10 +100,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasHashes_MD5_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = "XXXXXX";
self.SHA1 = string.Empty;
self.SHA256 = string.Empty;
self.SpamSum = string.Empty;
bool actual = self.HasHashes();
Assert.True(actual);
@@ -113,10 +113,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasHashes_SHA1_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = string.Empty;
self.SHA1 = "XXXXXX";
self.SHA256 = string.Empty;
self.SpamSum = string.Empty;
bool actual = self.HasHashes();
Assert.True(actual);
@@ -126,10 +126,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasHashes_SHA256_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = string.Empty;
self.SHA1 = string.Empty;
self.SHA256 = "XXXXXX";
self.SpamSum = string.Empty;
bool actual = self.HasHashes();
Assert.True(actual);
@@ -139,10 +139,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasHashes_SpamSum_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
self.MD5 = string.Empty;
self.SHA1 = string.Empty;
self.SHA256 = string.Empty;
self.SpamSum = "XXXXXX";
bool actual = self.HasHashes();
Assert.True(actual);
@@ -152,10 +152,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasHashes_All_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
self.MD5 = "XXXXXX";
self.SHA1 = "XXXXXX";
self.SHA256 = "XXXXXX";
self.SpamSum = "XXXXXX";
bool actual = self.HasHashes();
Assert.True(actual);
@@ -177,10 +177,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_NonZeroHash_False()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA1Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SHA256Key, "XXXXXX");
self.Write(Data.Models.Metadata.Media.SpamSumKey, "XXXXXX");
self.MD5 = "XXXXXX";
self.SHA1 = "XXXXXX";
self.SHA256 = "XXXXXX";
self.SpamSum = "XXXXXX";
bool actual = self.HasZeroHash();
Assert.False(actual);
@@ -190,10 +190,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_ZeroMD5_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = HashType.MD5.ZeroString;
self.SHA1 = string.Empty;
self.SHA256 = string.Empty;
self.SpamSum = string.Empty;
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -203,10 +203,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_ZeroSHA1_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = string.Empty;
self.SHA1 = HashType.SHA1.ZeroString;
self.SHA256 = string.Empty;
self.SpamSum = string.Empty;
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -216,10 +216,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_ZeroSHA256_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
self.Write(Data.Models.Metadata.Media.SpamSumKey, string.Empty);
self.MD5 = string.Empty;
self.SHA1 = string.Empty;
self.SHA256 = HashType.SHA256.ZeroString;
self.SpamSum = string.Empty;
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -229,10 +229,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_ZeroSpamSum_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA1Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SHA256Key, string.Empty);
self.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
self.MD5 = string.Empty;
self.SHA1 = string.Empty;
self.SHA256 = string.Empty;
self.SpamSum = HashType.SpamSum.ZeroString;
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -242,10 +242,10 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
public void HasZeroHash_ZeroAll_True()
{
Media self = new Media();
self.Write(Data.Models.Metadata.Media.MD5Key, HashType.MD5.ZeroString);
self.Write(Data.Models.Metadata.Media.SHA1Key, HashType.SHA1.ZeroString);
self.Write(Data.Models.Metadata.Media.SHA256Key, HashType.SHA256.ZeroString);
self.Write(Data.Models.Metadata.Media.SpamSumKey, HashType.SpamSum.ZeroString);
self.MD5 = HashType.MD5.ZeroString;
self.SHA1 = HashType.SHA1.ZeroString;
self.SHA256 = HashType.SHA256.ZeroString;
self.SpamSum = HashType.SpamSum.ZeroString;
bool actual = self.HasZeroHash();
Assert.True(actual);
@@ -308,12 +308,13 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
Machine machine = new Machine();
machine.Name = "Machine";
DatItem datItem = new Media();
datItem.Write(Data.Models.Metadata.Media.MD5Key, "DEADBEEF");
datItem.Write(Data.Models.Metadata.Media.SHA1Key, "DEADBEEF");
datItem.Write(Data.Models.Metadata.Media.SHA256Key, "DEADBEEF");
datItem.Write(Data.Models.Metadata.Media.SpamSumKey, "DEADBEEF");
DatItem datItem = new Media
{
MD5 = "DEADBEEF",
SHA1 = "DEADBEEF",
SHA256 = "DEADBEEF",
SpamSum = "DEADBEEF"
};
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
Assert.Equal(expected, actual);
}

View File

@@ -13,6 +13,12 @@ namespace SabreTools.Metadata.DatItems.Formats
{
#region Fields
public string? MD5
{
get => (_internal as Data.Models.Metadata.Media)?.MD5;
set => (_internal as Data.Models.Metadata.Media)?.MD5 = value;
}
/// <inheritdoc>/>
public override Data.Models.Metadata.ItemType ItemType
=> Data.Models.Metadata.ItemType.Media;
@@ -23,6 +29,24 @@ namespace SabreTools.Metadata.DatItems.Formats
set => (_internal as Data.Models.Metadata.Media)?.Name = value;
}
public string? SHA1
{
get => (_internal as Data.Models.Metadata.Media)?.SHA1;
set => (_internal as Data.Models.Metadata.Media)?.SHA1 = value;
}
public string? SHA256
{
get => (_internal as Data.Models.Metadata.Media)?.SHA256;
set => (_internal as Data.Models.Metadata.Media)?.SHA256 = value;
}
public string? SpamSum
{
get => (_internal as Data.Models.Metadata.Media)?.SpamSum;
set => (_internal as Data.Models.Metadata.Media)?.SpamSum = value;
}
#endregion
#region Constructors
@@ -37,17 +61,14 @@ namespace SabreTools.Metadata.DatItems.Formats
DupeType = 0x00;
// Process hash values
string? md5 = ReadString(Data.Models.Metadata.Media.MD5Key);
if (md5 is not null)
Write<string?>(Data.Models.Metadata.Media.MD5Key, TextHelper.NormalizeMD5(md5));
if (MD5 is not null)
MD5 = TextHelper.NormalizeMD5(MD5);
string? sha1 = ReadString(Data.Models.Metadata.Media.SHA1Key);
if (sha1 is not null)
Write<string?>(Data.Models.Metadata.Media.SHA1Key, TextHelper.NormalizeSHA1(sha1));
if (SHA1 is not null)
SHA1 = TextHelper.NormalizeSHA1(SHA1);
string? sha256 = ReadString(Data.Models.Metadata.Media.SHA256Key);
if (sha256 is not null)
Write<string?>(Data.Models.Metadata.Media.SHA256Key, TextHelper.NormalizeSHA256(sha256));
if (SHA256 is not null)
SHA256 = TextHelper.NormalizeSHA256(SHA256);
}
public Media(Data.Models.Metadata.Media item, Machine machine, Source source) : this(item)
@@ -117,19 +138,19 @@ namespace SabreTools.Metadata.DatItems.Formats
switch (bucketedBy)
{
case ItemKey.MD5:
key = ReadString(Data.Models.Metadata.Media.MD5Key);
key = MD5;
break;
case ItemKey.SHA1:
key = ReadString(Data.Models.Metadata.Media.SHA1Key);
key = SHA1;
break;
case ItemKey.SHA256:
key = ReadString(Data.Models.Metadata.Media.SHA256Key);
key = SHA256;
break;
case ItemKey.SpamSum:
key = ReadString(Data.Models.Metadata.Media.SpamSumKey);
key = SpamSum;
break;
// Let the base handle generic stuff

View File

@@ -752,6 +752,19 @@ namespace SabreTools.Metadata.Filter
checkValue = item.Supported?.AsStringValue();
return true;
case Media item when fieldName == "md5":
checkValue = item.MD5;
return true;
case Media item when fieldName == "sha1":
checkValue = item.SHA1;
return true;
case Media item when fieldName == "sha256":
checkValue = item.SHA256;
return true;
case Media item when fieldName == "spamsum":
checkValue = item.SpamSum;
return true;
case Original item when fieldName == "content":
checkValue = item.Content;
return true;

View File

@@ -125,18 +125,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = string.Empty,
MD5 = "XXXXXX",
SHA1 = string.Empty,
SHA256 = "XXXXXX",
SpamSum = string.Empty,
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = "XXXXXX",
MD5 = string.Empty,
SHA1 = "XXXXXX",
SHA256 = string.Empty,
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -149,18 +149,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = "XXXXXX",
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = string.Empty,
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -173,18 +173,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = "XXXXXX",
SHA256 = string.Empty,
SpamSum = string.Empty,
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -197,18 +197,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = string.Empty,
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = "XXXXXX",
SpamSum = string.Empty,
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -221,18 +221,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = string.Empty,
[Media.SHA1Key] = string.Empty,
[Media.SHA256Key] = string.Empty,
[Media.SpamSumKey] = "XXXXXX",
MD5 = string.Empty,
SHA1 = string.Empty,
SHA256 = string.Empty,
SpamSum = "XXXXXX",
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);
@@ -245,18 +245,18 @@ namespace SabreTools.Metadata.Test
DictionaryBase self = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
DictionaryBase other = new Media
{
Name = "name",
[Media.MD5Key] = "XXXXXX",
[Media.SHA1Key] = "XXXXXX",
[Media.SHA256Key] = "XXXXXX",
[Media.SpamSumKey] = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
};
bool actual = self.EqualTo(other);

View File

@@ -148,10 +148,10 @@ namespace SabreTools.Serialization.CrossModel.Test
var media = new Data.Models.ClrMamePro.Media
{
Name = "name",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var chip = new Data.Models.ClrMamePro.Chip
@@ -427,10 +427,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(media);
Assert.Equal("name", media.Name);
Assert.Equal("XXXXXX", media.MD5);
Assert.Equal("XXXXXX", media.SHA1);
Assert.Equal("XXXXXX", media.SHA256);
Assert.Equal("XXXXXX", media.SpamSum);
Assert.Equal("md5", media.MD5);
Assert.Equal("sha1", media.SHA1);
Assert.Equal("sha256", media.SHA256);
Assert.Equal("spamsum", media.SpamSum);
}
/// <summary>

View File

@@ -186,10 +186,10 @@ namespace SabreTools.Serialization.CrossModel.Test
var media = new Data.Models.Logiqx.Media
{
Name = "name",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var deviceRef = new Data.Models.Logiqx.DeviceRef
@@ -510,10 +510,10 @@ namespace SabreTools.Serialization.CrossModel.Test
{
Assert.NotNull(media);
Assert.Equal("name", media.Name);
Assert.Equal("XXXXXX", media.MD5);
Assert.Equal("XXXXXX", media.SHA1);
Assert.Equal("XXXXXX", media.SHA256);
Assert.Equal("XXXXXX", media.SpamSum);
Assert.Equal("md5", media.MD5);
Assert.Equal("sha1", media.SHA1);
Assert.Equal("sha256", media.SHA256);
Assert.Equal("spamsum", media.SpamSum);
}
/// <summary>

View File

@@ -61,10 +61,10 @@ namespace SabreTools.Serialization.CrossModel.Test
GameDescription = "description",
Type = "media",
DiskName = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var rom = new Data.Models.SeparatedValue.Row
@@ -145,12 +145,12 @@ namespace SabreTools.Serialization.CrossModel.Test
Assert.Equal("XXXXXX", row.DiskName);
Assert.Null(row.Size);
Assert.Null(row.CRC);
Assert.Equal("XXXXXX", row.MD5);
Assert.Equal("XXXXXX", row.SHA1);
Assert.Equal("XXXXXX", row.SHA256);
Assert.Equal("md5", row.MD5);
Assert.Equal("sha1", row.SHA1);
Assert.Equal("sha256", row.SHA256);
Assert.Null(row.SHA384);
Assert.Null(row.SHA512);
Assert.Equal("XXXXXX", row.SpamSum);
Assert.Equal("spamsum", row.SpamSum);
Assert.Null(row.Status);
}

View File

@@ -247,10 +247,10 @@ namespace SabreTools.Serialization.CrossModel
var media = new Media
{
Name = item.Name,
MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Media.SHA1Key),
SHA256 = item.ReadString(Data.Models.Metadata.Media.SHA256Key),
SpamSum = item.ReadString(Data.Models.Metadata.Media.SpamSumKey),
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SpamSum = item.SpamSum,
};
return media;
}

View File

@@ -260,10 +260,10 @@ namespace SabreTools.Serialization.CrossModel
var media = new Data.Models.Metadata.Media
{
Name = item.Name,
[Data.Models.Metadata.Media.MD5Key] = item.MD5,
[Data.Models.Metadata.Media.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Media.SHA256Key] = item.SHA256,
[Data.Models.Metadata.Media.SpamSumKey] = item.SpamSum,
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SpamSum = item.SpamSum,
};
return media;
}

View File

@@ -269,10 +269,10 @@ namespace SabreTools.Serialization.CrossModel
var media = new Media
{
Name = item.Name,
MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Media.SHA1Key),
SHA256 = item.ReadString(Data.Models.Metadata.Media.SHA256Key),
SpamSum = item.ReadString(Data.Models.Metadata.Media.SpamSumKey),
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SpamSum = item.SpamSum,
};
return media;
}

View File

@@ -263,10 +263,10 @@ namespace SabreTools.Serialization.CrossModel
var media = new Data.Models.Metadata.Media
{
Name = item.Name,
[Data.Models.Metadata.Media.MD5Key] = item.MD5,
[Data.Models.Metadata.Media.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Media.SHA256Key] = item.SHA256,
[Data.Models.Metadata.Media.SpamSumKey] = item.SpamSum,
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SpamSum = item.SpamSum,
};
return media;
}

View File

@@ -114,12 +114,12 @@ namespace SabreTools.Serialization.CrossModel
DiskName = item.Name,
Size = null,
CRC = null,
MD5 = item.ReadString(Data.Models.Metadata.Media.MD5Key),
SHA1 = item.ReadString(Data.Models.Metadata.Media.SHA1Key),
SHA256 = item.ReadString(Data.Models.Metadata.Media.SHA256Key),
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SHA384 = null,
SHA512 = null,
SpamSum = item.ReadString(Data.Models.Metadata.Media.SpamSumKey),
SpamSum = item.SpamSum,
};
return row;
}

View File

@@ -97,10 +97,10 @@ namespace SabreTools.Serialization.CrossModel
"media" => new Data.Models.Metadata.Media
{
Name = item.DiskName,
[Data.Models.Metadata.Media.MD5Key] = item.MD5,
[Data.Models.Metadata.Media.SHA1Key] = item.SHA1,
[Data.Models.Metadata.Media.SHA256Key] = item.SHA256,
[Data.Models.Metadata.Media.SpamSumKey] = item.SpamSum,
MD5 = item.MD5,
SHA1 = item.SHA1,
SHA256 = item.SHA256,
SpamSum = item.SpamSum,
},
"rom" => new Data.Models.Metadata.Rom
{

View File

@@ -265,10 +265,10 @@ namespace SabreTools.Serialization.Readers.Test
var media = new Data.Models.ClrMamePro.Media
{
Name = "name",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var chip = new Data.Models.ClrMamePro.Chip
@@ -544,10 +544,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(media);
Assert.Equal("name", media.Name);
Assert.Equal("XXXXXX", media.MD5);
Assert.Equal("XXXXXX", media.SHA1);
Assert.Equal("XXXXXX", media.SHA256);
Assert.Equal("XXXXXX", media.SpamSum);
Assert.Equal("md5", media.MD5);
Assert.Equal("sha1", media.SHA1);
Assert.Equal("sha256", media.SHA256);
Assert.Equal("spamsum", media.SpamSum);
}
/// <summary>

View File

@@ -251,10 +251,10 @@ namespace SabreTools.Serialization.Readers.Test
var media = new Data.Models.Logiqx.Media
{
Name = "name",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var deviceRef = new Data.Models.Logiqx.DeviceRef
@@ -558,10 +558,10 @@ namespace SabreTools.Serialization.Readers.Test
{
Assert.NotNull(media);
Assert.Equal("name", media.Name);
Assert.Equal("XXXXXX", media.MD5);
Assert.Equal("XXXXXX", media.SHA1);
Assert.Equal("XXXXXX", media.SHA256);
Assert.Equal("XXXXXX", media.SpamSum);
Assert.Equal("md5", media.MD5);
Assert.Equal("sha1", media.SHA1);
Assert.Equal("sha256", media.SHA256);
Assert.Equal("spamsum", media.SpamSum);
}
/// <summary>

View File

@@ -156,10 +156,10 @@ namespace SabreTools.Serialization.Readers.Test
GameDescription = "description",
Type = "media",
DiskName = "XXXXXX",
MD5 = "XXXXXX",
SHA1 = "XXXXXX",
SHA256 = "XXXXXX",
SpamSum = "XXXXXX",
MD5 = "md5",
SHA1 = "sha1",
SHA256 = "sha256",
SpamSum = "spamsum",
};
var rom = new Data.Models.SeparatedValue.Row
@@ -252,14 +252,14 @@ namespace SabreTools.Serialization.Readers.Test
Assert.Equal("XXXXXX", row.DiskName);
Assert.Null(row.Size);
Assert.NotNull(row.CRC); Assert.Empty(row.CRC);
Assert.Equal("XXXXXX", row.MD5);
Assert.Equal("XXXXXX", row.SHA1);
Assert.Equal("XXXXXX", row.SHA256);
Assert.Equal("md5", row.MD5);
Assert.Equal("sha1", row.SHA1);
Assert.Equal("sha256", row.SHA256);
if (longHeader)
{
Assert.NotNull(row.SHA384); Assert.Empty(row.SHA384);
Assert.NotNull(row.SHA512); Assert.Empty(row.SHA512);
Assert.Equal("XXXXXX", row.SpamSum);
Assert.Equal("spamsum", row.SpamSum);
}
else
{