mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Convert Disk fully over to properties
This commit is contained in:
@@ -40,12 +40,12 @@ namespace SabreTools.Data.Extensions.Test
|
||||
DictionaryBase? self = new Disk
|
||||
{
|
||||
Name = "name",
|
||||
[Disk.MergeKey] = "XXXXXX",
|
||||
[Disk.RegionKey] = "XXXXXX",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Status = ItemStatus.Good,
|
||||
Optional = true,
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
Rom? actual = self.ConvertToRom();
|
||||
@@ -54,12 +54,12 @@ namespace SabreTools.Data.Extensions.Test
|
||||
Assert.Equal(4, actual.Count);
|
||||
Assert.Equal(ItemType.Rom, actual.ItemType);
|
||||
Assert.Equal("name.chd", actual.Name);
|
||||
Assert.Equal("XXXXXX", actual[Rom.MergeKey]);
|
||||
Assert.Equal("XXXXXX", actual[Rom.RegionKey]);
|
||||
Assert.Equal("merge", actual[Rom.MergeKey]);
|
||||
Assert.Equal("region", actual[Rom.RegionKey]);
|
||||
Assert.Equal(ItemStatus.Good, actual.Status);
|
||||
Assert.Equal(true, actual.Optional);
|
||||
Assert.Equal("XXXXXX", actual[Rom.MD5Key]);
|
||||
Assert.Equal("XXXXXX", actual[Rom.SHA1Key]);
|
||||
Assert.Equal("md5", actual[Rom.MD5Key]);
|
||||
Assert.Equal("sha1", actual[Rom.SHA1Key]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -84,10 +84,10 @@ namespace SabreTools.Data.Extensions.Test
|
||||
DictionaryBase? self = new Media
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
SHA256 = "XXXXXX",
|
||||
SpamSum = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
SHA256 = "sha256",
|
||||
SpamSum = "spamsum",
|
||||
};
|
||||
|
||||
Rom? actual = self.ConvertToRom();
|
||||
@@ -96,10 +96,10 @@ namespace SabreTools.Data.Extensions.Test
|
||||
Assert.Equal(4, actual.Count);
|
||||
Assert.Equal(ItemType.Rom, actual.ItemType);
|
||||
Assert.Equal("name.aaruf", actual.Name);
|
||||
Assert.Equal("XXXXXX", actual[Rom.MD5Key]);
|
||||
Assert.Equal("XXXXXX", actual[Rom.SHA1Key]);
|
||||
Assert.Equal("XXXXXX", actual[Rom.SHA256Key]);
|
||||
Assert.Equal("XXXXXX", actual[Rom.SpamSumKey]);
|
||||
Assert.Equal("md5", actual[Rom.MD5Key]);
|
||||
Assert.Equal("sha1", actual[Rom.SHA1Key]);
|
||||
Assert.Equal("sha256", actual[Rom.SHA256Key]);
|
||||
Assert.Equal("spamsum", actual[Rom.SpamSumKey]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -153,13 +153,13 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
Disk self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = "md5",
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
Disk other = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HashMatch(other);
|
||||
@@ -171,13 +171,13 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
Disk self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = "md5",
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
Disk other = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HashMatch(other);
|
||||
@@ -189,13 +189,13 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
Disk self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
Disk other = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HashMatch(other);
|
||||
@@ -207,13 +207,13 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
Disk self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
Disk other = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HashMatch(other);
|
||||
@@ -225,17 +225,17 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
Media self = new Media
|
||||
{
|
||||
MD5 = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = string.Empty,
|
||||
SHA256 = "XXXXXX",
|
||||
SHA256 = "sha256",
|
||||
SpamSum = string.Empty,
|
||||
};
|
||||
Media other = new Media
|
||||
{
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "XXXXXX",
|
||||
SHA1 = "sha1",
|
||||
SHA256 = string.Empty,
|
||||
SpamSum = "XXXXXX",
|
||||
SpamSum = "spamsum",
|
||||
};
|
||||
|
||||
bool actual = self.HashMatch(other);
|
||||
@@ -969,8 +969,8 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
@@ -982,8 +982,8 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = HashType.MD5.ZeroString,
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
@@ -995,8 +995,8 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = HashType.SHA1.ZeroString,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
@@ -1008,8 +1008,8 @@ namespace SabreTools.Data.Extensions.Test
|
||||
{
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = HashType.MD5.ZeroString,
|
||||
[Disk.SHA1Key] = HashType.SHA1.ZeroString,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
@@ -1510,8 +1510,8 @@ namespace SabreTools.Data.Extensions.Test
|
||||
DictionaryBase self = new Disk();
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
self.FillMissingHashes(other);
|
||||
|
||||
@@ -173,6 +173,8 @@ namespace SabreTools.Data.Extensions
|
||||
return dipSwitch.Clone() as DipSwitch;
|
||||
else if (self is DipValue dipValue)
|
||||
return dipValue.Clone() as DipValue;
|
||||
else if (self is Disk disk)
|
||||
return disk.Clone() as Disk;
|
||||
else if (self is Display display)
|
||||
return display.Clone() as Display;
|
||||
else if (self is Driver driver)
|
||||
@@ -224,12 +226,6 @@ namespace SabreTools.Data.Extensions
|
||||
cloneDataArea.Size = selfDataArea.Size;
|
||||
cloneDataArea.Width = selfDataArea.Width;
|
||||
}
|
||||
else if (self is Disk selfDisk && clone is Disk cloneDisk)
|
||||
{
|
||||
cloneDisk.Optional = selfDisk.Optional;
|
||||
cloneDisk.Status = selfDisk.Status;
|
||||
cloneDisk.Writable = selfDisk.Writable;
|
||||
}
|
||||
else if (self is Feature selfFeature && clone is Feature cloneFeature)
|
||||
{
|
||||
// TODO: Remove when PartFeature no longer needs nesting
|
||||
@@ -434,12 +430,12 @@ namespace SabreTools.Data.Extensions
|
||||
return new Rom
|
||||
{
|
||||
Name = name,
|
||||
[Rom.MergeKey] = disk.ReadString(Disk.MergeKey),
|
||||
[Rom.RegionKey] = disk.ReadString(Disk.RegionKey),
|
||||
[Rom.MergeKey] = disk.Merge,
|
||||
[Rom.RegionKey] = disk.Region,
|
||||
Status = disk.Status,
|
||||
Optional = disk.Optional,
|
||||
[Rom.MD5Key] = disk.ReadString(Disk.MD5Key),
|
||||
[Rom.SHA1Key] = disk.ReadString(Disk.SHA1Key),
|
||||
[Rom.MD5Key] = disk.MD5,
|
||||
[Rom.SHA1Key] = disk.SHA1,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -519,13 +515,8 @@ namespace SabreTools.Data.Extensions
|
||||
return false;
|
||||
|
||||
// Return if all hashes match according to merge rules
|
||||
string? selfMd5 = self.ReadString(Disk.MD5Key);
|
||||
string? otherMd5 = other.ReadString(Disk.MD5Key);
|
||||
bool conditionalMd5 = ConditionalHashEquals(selfMd5, otherMd5);
|
||||
|
||||
string? selfSha1 = self.ReadString(Disk.SHA1Key);
|
||||
string? otherSha1 = other.ReadString(Disk.SHA1Key);
|
||||
bool conditionalSha1 = ConditionalHashEquals(selfSha1, otherSha1);
|
||||
bool conditionalMd5 = ConditionalHashEquals(self.MD5, other.MD5);
|
||||
bool conditionalSha1 = ConditionalHashEquals(self.SHA1, other.SHA1);
|
||||
|
||||
return conditionalMd5
|
||||
&& conditionalSha1;
|
||||
@@ -670,11 +661,11 @@ namespace SabreTools.Data.Extensions
|
||||
/// </summary>
|
||||
private static bool HasCommonHash(this Disk self, Disk other)
|
||||
{
|
||||
bool md5Null = string.IsNullOrEmpty(self.ReadString(Disk.MD5Key));
|
||||
md5Null ^= string.IsNullOrEmpty(other.ReadString(Disk.MD5Key));
|
||||
bool md5Null = string.IsNullOrEmpty(self.MD5);
|
||||
md5Null ^= string.IsNullOrEmpty(other.MD5);
|
||||
|
||||
bool sha1Null = string.IsNullOrEmpty(self.ReadString(Disk.SHA1Key));
|
||||
sha1Null ^= string.IsNullOrEmpty(other.ReadString(Disk.SHA1Key));
|
||||
bool sha1Null = string.IsNullOrEmpty(self.SHA1);
|
||||
sha1Null ^= string.IsNullOrEmpty(other.SHA1);
|
||||
|
||||
return !md5Null
|
||||
|| !sha1Null;
|
||||
@@ -767,8 +758,8 @@ namespace SabreTools.Data.Extensions
|
||||
/// </summary>
|
||||
private static bool HasHashes(this Disk disk)
|
||||
{
|
||||
bool md5Null = string.IsNullOrEmpty(disk.ReadString(Disk.MD5Key));
|
||||
bool sha1Null = string.IsNullOrEmpty(disk.ReadString(Disk.SHA1Key));
|
||||
bool md5Null = string.IsNullOrEmpty(disk.MD5);
|
||||
bool sha1Null = string.IsNullOrEmpty(disk.SHA1);
|
||||
|
||||
return !md5Null
|
||||
|| !sha1Null;
|
||||
@@ -829,10 +820,10 @@ namespace SabreTools.Data.Extensions
|
||||
/// </summary>
|
||||
private static bool HasZeroHash(this Disk disk)
|
||||
{
|
||||
string? md5 = disk.ReadString(Disk.MD5Key);
|
||||
string? md5 = disk.MD5;
|
||||
bool md5Null = string.IsNullOrEmpty(md5) || string.Equals(md5, HashType.MD5.ZeroString, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
string? sha1 = disk.ReadString(Disk.SHA1Key);
|
||||
string? sha1 = disk.SHA1;
|
||||
bool sha1Null = string.IsNullOrEmpty(sha1) || string.Equals(sha1, HashType.SHA1.ZeroString, StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
return md5Null
|
||||
@@ -967,15 +958,15 @@ namespace SabreTools.Data.Extensions
|
||||
if (self is null || other is null)
|
||||
return;
|
||||
|
||||
string? selfMd5 = self.ReadString(Disk.MD5Key);
|
||||
string? otherMd5 = other.ReadString(Disk.MD5Key);
|
||||
string? selfMd5 = self.MD5;
|
||||
string? otherMd5 = other.MD5;
|
||||
if (string.IsNullOrEmpty(selfMd5) && !string.IsNullOrEmpty(otherMd5))
|
||||
self[Disk.MD5Key] = otherMd5;
|
||||
self.MD5 = otherMd5;
|
||||
|
||||
string? selfSha1 = self.ReadString(Disk.SHA1Key);
|
||||
string? otherSha1 = other.ReadString(Disk.SHA1Key);
|
||||
string? selfSha1 = self.SHA1;
|
||||
string? otherSha1 = other.SHA1;
|
||||
if (string.IsNullOrEmpty(selfSha1) && !string.IsNullOrEmpty(otherSha1))
|
||||
self[Disk.SHA1Key] = otherSha1;
|
||||
self.SHA1 = otherSha1;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -24,9 +24,8 @@ namespace SabreTools.Data.Models.Listxml
|
||||
[XmlAttribute("region")]
|
||||
public string? Region { get; set; }
|
||||
|
||||
/// <remarks>Numeric?</remarks>
|
||||
[XmlAttribute("index")]
|
||||
public string? Index { get; set; }
|
||||
public long? Index { get; set; }
|
||||
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
[XmlAttribute("writable")]
|
||||
|
||||
@@ -1,18 +1,32 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
// TODO: IEquatable<Disk>
|
||||
[JsonObject("disk"), XmlRoot(elementName: "disk")]
|
||||
public class Disk : DatItem
|
||||
public class Disk : DatItem, ICloneable
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public string? Flags { get; set; }
|
||||
|
||||
public long? Index { get; set; }
|
||||
|
||||
public string? MD5 { get; set; }
|
||||
|
||||
public string? Merge { get; set; }
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
public bool? Optional { get; set; }
|
||||
|
||||
public string? Region { get; set; }
|
||||
|
||||
public string? SHA1 { get; set; }
|
||||
|
||||
/// <remarks>(baddump|nodump|good|verified) "good"</remarks>
|
||||
public ItemStatus? Status { get; set; }
|
||||
|
||||
@@ -21,28 +35,25 @@ namespace SabreTools.Data.Models.Metadata
|
||||
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string FlagsKey = "flags";
|
||||
|
||||
/// <remarks>string, possibly long</remarks>
|
||||
public const string IndexKey = "index";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MD5Key = "md5";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string MergeKey = "merge";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RegionKey = "region";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string SHA1Key = "sha1";
|
||||
|
||||
#endregion
|
||||
|
||||
public Disk() => ItemType = ItemType.Disk;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public object Clone()
|
||||
{
|
||||
var obj = new Disk();
|
||||
|
||||
obj.Flags = Flags;
|
||||
obj.Index = Index;
|
||||
obj.MD5 = MD5;
|
||||
obj.Merge = Merge;
|
||||
obj.Name = Name;
|
||||
obj.Optional = Optional;
|
||||
obj.Region = Region;
|
||||
obj.SHA1 = SHA1;
|
||||
obj.Status = Status;
|
||||
obj.Writable = Writable;
|
||||
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,10 +133,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
// All other fields are tested separately
|
||||
Disk? partDisk = Array.Find(datItems, item => item is Disk disk && disk.DiskAreaSpecified && disk.PartSpecified) as Disk;
|
||||
Assert.NotNull(partDisk);
|
||||
DiskArea? diskDiskArea = partDisk.Read<DiskArea>(Disk.DiskAreaKey);
|
||||
ValidateDiskArea(diskDiskArea);
|
||||
Part? diskPart = partDisk.Read<Part>(Disk.PartKey);
|
||||
ValidatePart(diskPart);
|
||||
ValidateDiskArea(partDisk.DiskArea);
|
||||
ValidatePart(partDisk.Part);
|
||||
|
||||
PartFeature? partFeature = Array.Find(datItems, item => item is PartFeature) as PartFeature;
|
||||
ValidatePartFeature(partFeature);
|
||||
@@ -551,14 +549,14 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
{
|
||||
return new Data.Models.Metadata.Disk
|
||||
{
|
||||
[Data.Models.Metadata.Disk.FlagsKey] = "flags",
|
||||
[Data.Models.Metadata.Disk.IndexKey] = "index",
|
||||
[Data.Models.Metadata.Disk.MD5Key] = HashType.MD5.ZeroString,
|
||||
[Data.Models.Metadata.Disk.MergeKey] = "merge",
|
||||
Flags = "flags",
|
||||
Index = 12345,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
Merge = "merge",
|
||||
Name = "name",
|
||||
Optional = true,
|
||||
[Data.Models.Metadata.Disk.RegionKey] = "region",
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = HashType.SHA1.ZeroString,
|
||||
Region = "region",
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
Writable = true,
|
||||
};
|
||||
}
|
||||
@@ -1307,14 +1305,14 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateDisk(Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("flags", disk.ReadString(Data.Models.Metadata.Disk.FlagsKey));
|
||||
Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey));
|
||||
Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey));
|
||||
Assert.Equal("flags", disk.Flags);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(HashType.MD5.ZeroString, disk.MD5);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.True(disk.Optional);
|
||||
Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey));
|
||||
Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key));
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(HashType.SHA1.ZeroString, disk.SHA1);
|
||||
Assert.True(disk.Writable);
|
||||
}
|
||||
|
||||
|
||||
@@ -196,8 +196,8 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
{
|
||||
Disk item = new Disk(CreateMetadataDisk());
|
||||
item.CopyMachineInformation(machine);
|
||||
item.Write(Disk.DiskAreaKey, CreateDiskArea(machine));
|
||||
item.Write(Disk.PartKey, CreatePart(machine));
|
||||
item.DiskArea = CreateDiskArea(machine);
|
||||
item.Part = CreatePart(machine);
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -837,14 +837,14 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateMetadataDisk(Data.Models.Metadata.Disk? disk)
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("flags", disk.ReadString(Data.Models.Metadata.Disk.FlagsKey));
|
||||
Assert.Equal("index", disk.ReadString(Data.Models.Metadata.Disk.IndexKey));
|
||||
Assert.Equal(HashType.MD5.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Equal("merge", disk.ReadString(Data.Models.Metadata.Disk.MergeKey));
|
||||
Assert.Equal("flags", disk.Flags);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(HashType.MD5.ZeroString, disk.MD5);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.True(disk.Optional);
|
||||
Assert.Equal("region", disk.ReadString(Data.Models.Metadata.Disk.RegionKey));
|
||||
Assert.Equal(HashType.SHA1.ZeroString, disk.ReadString(Data.Models.Metadata.Disk.SHA1Key));
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(HashType.SHA1.ZeroString, disk.SHA1);
|
||||
Assert.True(disk.Writable);
|
||||
}
|
||||
|
||||
|
||||
@@ -1404,9 +1404,12 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
};
|
||||
machine.Write(Data.Models.Metadata.Machine.CategoryKey, "category");
|
||||
|
||||
DatItem item = new Disk { Name = "name" };
|
||||
item.Write(Data.Models.Metadata.Disk.MD5Key, "md5");
|
||||
item.Write(Data.Models.Metadata.Disk.SHA1Key, "sha1");
|
||||
DatItem item = new Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
string actual = DatFile.FormatPrefixPostfix(item, machine, fix);
|
||||
Assert.Equal(expected, actual);
|
||||
@@ -1670,8 +1673,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
public void GetDuplicateSuffix_Disk_MD5()
|
||||
{
|
||||
string hash = "XXXXXX";
|
||||
DatItem datItem = new Disk();
|
||||
datItem.Write(Data.Models.Metadata.Disk.MD5Key, hash);
|
||||
DatItem datItem = new Disk { MD5 = hash };
|
||||
|
||||
string actual = DatFile.GetDuplicateSuffix(datItem);
|
||||
Assert.Equal($"_{hash}", actual);
|
||||
@@ -1681,8 +1683,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
public void GetDuplicateSuffix_Disk_SHA1()
|
||||
{
|
||||
string hash = "XXXXXX";
|
||||
DatItem datItem = new Disk();
|
||||
datItem.Write(Data.Models.Metadata.Disk.SHA1Key, hash);
|
||||
DatItem datItem = new Disk { SHA1 = hash };
|
||||
|
||||
string actual = DatFile.GetDuplicateSuffix(datItem);
|
||||
Assert.Equal($"_{hash}", actual);
|
||||
|
||||
@@ -251,9 +251,12 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
/// </summary>
|
||||
private static Disk CreateDisk()
|
||||
{
|
||||
var disk = new Disk { Status = ItemStatus.Good };
|
||||
disk.Write<string?>(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
disk.Write<string?>(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
var disk = new Disk
|
||||
{
|
||||
Status = ItemStatus.Good,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
};
|
||||
|
||||
return disk;
|
||||
}
|
||||
|
||||
@@ -143,7 +143,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -427,7 +427,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.MD5Key,
|
||||
nameof(Data.Models.Metadata.Disk.MD5),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -534,7 +534,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -726,7 +726,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -822,7 +822,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -1139,7 +1139,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -1391,7 +1391,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -1449,7 +1449,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -1507,7 +1507,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Disk.Name),
|
||||
Data.Models.Metadata.Disk.SHA1Key,
|
||||
nameof(Data.Models.Metadata.Disk.SHA1),
|
||||
]));
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,11 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Source source = new Source(0, source: null);
|
||||
Machine machine = new Machine();
|
||||
|
||||
DatItem disk = new Disk { Name = "item" };
|
||||
disk.Write<string?>(Data.Models.Metadata.Disk.SHA1Key, "deadbeef");
|
||||
DatItem disk = new Disk
|
||||
{
|
||||
Name = "item",
|
||||
SHA1 = "deadbeef",
|
||||
};
|
||||
|
||||
var dict = new ItemDictionaryDB();
|
||||
long sourceIndex = dict.AddSource(source);
|
||||
|
||||
@@ -16,10 +16,13 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Source source = new Source(0, source: null);
|
||||
Machine machine = new Machine();
|
||||
|
||||
DatItem disk = new Disk { Name = "item" };
|
||||
disk.Write<string?>(Data.Models.Metadata.Disk.SHA1Key, "deadbeef");
|
||||
disk.Source = source;
|
||||
disk.Machine = machine;
|
||||
DatItem disk = new Disk
|
||||
{
|
||||
Name = "item",
|
||||
SHA1 = "deadbeef",
|
||||
Source = source,
|
||||
Machine = machine,
|
||||
};
|
||||
|
||||
var dict = new ItemDictionary();
|
||||
_ = dict.AddItem(disk, statsOnly: false);
|
||||
|
||||
@@ -654,9 +654,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (filterRunner is not null && !filterRunner.Run(disk))
|
||||
continue;
|
||||
|
||||
var diskItem = new Disk(disk, machine, source);
|
||||
diskItem.Write<DiskArea?>(Disk.DiskAreaKey, diskAreaitem);
|
||||
diskItem.Write<Part?>(Disk.PartKey, partItem);
|
||||
var diskItem = new Disk(disk, machine, source)
|
||||
{
|
||||
DiskArea = diskAreaitem,
|
||||
Part = partItem,
|
||||
};
|
||||
|
||||
AddItem(diskItem, statsOnly);
|
||||
// AddItemDB(diskItem, machineIndex, sourceIndex, statsOnly);
|
||||
|
||||
@@ -297,7 +297,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Special disk handling
|
||||
if (item is Disk disk)
|
||||
{
|
||||
string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
|
||||
string? mergeTag = disk.Merge;
|
||||
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (mergeTag is not null && GetItemsForBucket(cloneOf)
|
||||
@@ -433,7 +433,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Special disk handling
|
||||
if (item.Value is Disk disk)
|
||||
{
|
||||
string? mergeTag = disk.ReadString(Data.Models.Metadata.Disk.MergeKey);
|
||||
string? mergeTag = disk.Merge;
|
||||
|
||||
// If the merge tag exists and the parent already contains it, skip
|
||||
if (mergeTag is not null && GetItemsForBucketDB(cloneOf).Values
|
||||
@@ -722,8 +722,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
continue;
|
||||
|
||||
deviceReferences.Add(deviceReference);
|
||||
var deviceRef = new DeviceRef();
|
||||
deviceRef.Name = deviceReference;
|
||||
var deviceRef = new DeviceRef { Name = deviceReference };
|
||||
deviceRef.CopyMachineInformation(copyFrom);
|
||||
Items.AddItem(deviceRef, statsOnly: false);
|
||||
}
|
||||
@@ -772,8 +771,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
continue;
|
||||
|
||||
slotOptions.Add(slotOption);
|
||||
var slotOptionItem = new SlotOption();
|
||||
slotOptionItem.DevName = slotOption;
|
||||
var slotOptionItem = new SlotOption { DevName = slotOption };
|
||||
slotOptionItem.CopyMachineInformation(copyFrom);
|
||||
|
||||
var slotItem = new Slot();
|
||||
@@ -887,8 +885,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
if (!deviceReferences.Contains(deviceReference))
|
||||
{
|
||||
var deviceRef = new DeviceRef();
|
||||
deviceRef.Name = deviceReference;
|
||||
var deviceRef = new DeviceRef { Name = deviceReference };
|
||||
ItemsDB.AddItem(deviceRef, machine.Key, source.Key);
|
||||
}
|
||||
}
|
||||
@@ -943,8 +940,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
if (!slotOptions.Contains(slotOption))
|
||||
{
|
||||
var slotOptionItem = new SlotOption();
|
||||
slotOptionItem.DevName = slotOption;
|
||||
var slotOptionItem = new SlotOption { DevName = slotOption };
|
||||
|
||||
var slotItem = new Slot();
|
||||
slotItem.Write<SlotOption[]?>(Data.Models.Metadata.Slot.SlotOptionKey, [slotOptionItem]);
|
||||
|
||||
@@ -164,17 +164,17 @@ namespace SabreTools.Metadata.DatFiles
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
|
||||
bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
|
||||
bool diskContainsPart = disk.Part is not null;
|
||||
bool diskContainsDiskArea = disk.DiskArea is not null;
|
||||
if (diskContainsPart && diskContainsDiskArea)
|
||||
{
|
||||
var partItem = diskItem.Read<DatItems.Formats.Part>(DatItems.Formats.Disk.PartKey);
|
||||
var partItem = disk.Part;
|
||||
if (partItem is not null)
|
||||
{
|
||||
var partItemInternal = partItem.GetInternalClone();
|
||||
partMappings[partItemInternal] = diskItem;
|
||||
|
||||
var diskAreaItem = diskItem.Read<DatItems.Formats.DiskArea>(DatItems.Formats.Disk.DiskAreaKey);
|
||||
var diskAreaItem = disk.DiskArea;
|
||||
if (diskAreaItem is not null)
|
||||
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
|
||||
}
|
||||
@@ -585,17 +585,17 @@ namespace SabreTools.Metadata.DatFiles
|
||||
AppendToMachineKey(machine, Data.Models.Metadata.Machine.DiskKey, diskItem);
|
||||
|
||||
// Add Part and DiskArea mappings
|
||||
bool diskContainsPart = diskItem.ContainsKey(DatItems.Formats.Disk.PartKey);
|
||||
bool diskContainsDiskArea = diskItem.ContainsKey(DatItems.Formats.Disk.DiskAreaKey);
|
||||
bool diskContainsPart = disk.Part is not null;
|
||||
bool diskContainsDiskArea = disk.DiskArea is not null;
|
||||
if (diskContainsPart && diskContainsDiskArea)
|
||||
{
|
||||
var partItem = diskItem.Read<DatItems.Formats.Part>(DatItems.Formats.Disk.PartKey);
|
||||
var partItem = disk.Part;
|
||||
if (partItem is not null)
|
||||
{
|
||||
var partItemInternal = partItem.GetInternalClone();
|
||||
partMappings[partItemInternal] = diskItem;
|
||||
|
||||
var diskAreaItem = diskItem.Read<DatItems.Formats.DiskArea>(DatItems.Formats.Disk.DiskAreaKey);
|
||||
var diskAreaItem = disk.DiskArea;
|
||||
if (diskAreaItem is not null)
|
||||
diskAreaMappings[partItemInternal] = (diskAreaItem.GetInternalClone(), diskItem);
|
||||
}
|
||||
|
||||
@@ -503,7 +503,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item is Disk disk)
|
||||
{
|
||||
// We can only write out if there's a SHA-1
|
||||
string? sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key);
|
||||
string? sha1 = disk.SHA1;
|
||||
if (!string.IsNullOrEmpty(sha1))
|
||||
{
|
||||
name = Utilities.GetDepotPath(sha1, Modifiers.OutputDepot.Depth)?.Replace('\\', '/');
|
||||
@@ -606,8 +606,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Ensure we have the proper values for replacement
|
||||
if (item is Disk disk)
|
||||
{
|
||||
md5 = disk.ReadString(Data.Models.Metadata.Disk.MD5Key) ?? string.Empty;
|
||||
sha1 = disk.ReadString(Data.Models.Metadata.Disk.SHA1Key) ?? string.Empty;
|
||||
md5 = disk.MD5 ?? string.Empty;
|
||||
sha1 = disk.SHA1 ?? string.Empty;
|
||||
}
|
||||
else if (item is DatItems.Formats.File file)
|
||||
{
|
||||
@@ -1038,11 +1038,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// </summary>
|
||||
private static string GetDuplicateSuffix(Disk datItem)
|
||||
{
|
||||
string? md5 = datItem.ReadString(Data.Models.Metadata.Disk.MD5Key);
|
||||
string? md5 = datItem.MD5;
|
||||
if (!string.IsNullOrEmpty(md5))
|
||||
return $"_{md5}";
|
||||
|
||||
string? sha1 = datItem.ReadString(Data.Models.Metadata.Disk.SHA1Key);
|
||||
string? sha1 = datItem.SHA1;
|
||||
if (!string.IsNullOrEmpty(sha1))
|
||||
return $"_{sha1}";
|
||||
|
||||
|
||||
@@ -330,8 +330,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
ItemStatus? status = disk.Status;
|
||||
if (status != ItemStatus.Nodump)
|
||||
{
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
AddHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
|
||||
AddHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
|
||||
}
|
||||
|
||||
AddStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);
|
||||
@@ -459,8 +459,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
ItemStatus? status = disk.Status;
|
||||
if (status != ItemStatus.Nodump)
|
||||
{
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)) ? 0 : 1);
|
||||
RemoveHashCount(HashType.MD5, string.IsNullOrEmpty(disk.MD5) ? 0 : 1);
|
||||
RemoveHashCount(HashType.SHA1, string.IsNullOrEmpty(disk.SHA1) ? 0 : 1);
|
||||
}
|
||||
|
||||
RemoveStatusCount(ItemStatus.BadDump, status == ItemStatus.BadDump ? 1 : 0);
|
||||
|
||||
@@ -114,10 +114,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -37,10 +37,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -282,10 +282,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -306,10 +306,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.Name));
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key)))
|
||||
missingFields.Add(Data.Models.Metadata.Disk.MD5Key);
|
||||
if (string.IsNullOrEmpty(disk.MD5))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.MD5));
|
||||
break;
|
||||
|
||||
case Media medium:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
@@ -73,10 +73,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
if (string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -40,8 +40,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
switch (datItem)
|
||||
{
|
||||
case Disk disk:
|
||||
if (string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
missingFields.Add(Data.Models.Metadata.Disk.SHA1Key);
|
||||
if (string.IsNullOrEmpty(disk.SHA1))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Disk.SHA1));
|
||||
break;
|
||||
|
||||
case Media medium:
|
||||
|
||||
@@ -145,9 +145,9 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.Read<Part?>(Disk.PartKey)!.Name))
|
||||
if (string.IsNullOrEmpty(disk.Part!.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Name));
|
||||
if (string.IsNullOrEmpty(disk.Read<Part?>(Disk.PartKey)!.Interface))
|
||||
if (string.IsNullOrEmpty(disk.Part.Interface))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Part.Interface));
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
}
|
||||
else
|
||||
{
|
||||
if (string.IsNullOrEmpty(disk.Read<DiskArea?>(Disk.DiskAreaKey)!.Name))
|
||||
if (string.IsNullOrEmpty(disk.DiskArea!.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.DiskArea.Name));
|
||||
}
|
||||
|
||||
|
||||
@@ -99,8 +99,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
// If the file has aboslutely no hashes, skip and log
|
||||
if (disk.Status != ItemStatus.Nodump
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
&& string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
|
||||
disk.Status = ItemStatus.Nodump;
|
||||
|
||||
@@ -188,8 +188,8 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
// If the file has aboslutely no hashes, skip and log
|
||||
if (disk.Status != ItemStatus.Nodump
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.MD5Key))
|
||||
&& string.IsNullOrEmpty(disk.ReadString(Data.Models.Metadata.Disk.SHA1Key)))
|
||||
&& string.IsNullOrEmpty(disk.MD5)
|
||||
&& string.IsNullOrEmpty(disk.SHA1))
|
||||
{
|
||||
_logger.Verbose($"Incomplete entry for '{disk.Name}' will be output as nodump");
|
||||
disk.Status = ItemStatus.Nodump;
|
||||
|
||||
@@ -10,39 +10,36 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void ConvertToRomTest()
|
||||
{
|
||||
DiskArea diskArea = new DiskArea
|
||||
{
|
||||
Name = "name"
|
||||
};
|
||||
DiskArea diskArea = new DiskArea { Name = "name" };
|
||||
|
||||
Machine machine = new Machine { Name = "name" };
|
||||
|
||||
Part part = new Part
|
||||
Part part = new Part { Name = "name" };
|
||||
|
||||
Source source = new Source(0, "source");
|
||||
|
||||
Disk disk = new Disk
|
||||
{
|
||||
Name = "name"
|
||||
Name = "name",
|
||||
DiskArea = diskArea,
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
DupeType = DupeType.All | DupeType.External,
|
||||
Machine = machine,
|
||||
Part = part,
|
||||
RemoveFlag = false,
|
||||
Source = source,
|
||||
};
|
||||
|
||||
Source source = new Source(0, "XXXXXX");
|
||||
|
||||
Disk disk = new Disk { Name = "name" };
|
||||
disk.Write(Disk.DiskAreaKey, diskArea);
|
||||
disk.Write(Data.Models.Metadata.Disk.MergeKey, "XXXXXX");
|
||||
disk.Write(Data.Models.Metadata.Disk.RegionKey, "XXXXXX");
|
||||
disk.Status = Data.Models.Metadata.ItemStatus.Good;
|
||||
disk.Optional = true;
|
||||
disk.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
disk.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
disk.DupeType = DupeType.All | DupeType.External;
|
||||
disk.Machine = machine;
|
||||
disk.Write(Disk.PartKey, part);
|
||||
disk.RemoveFlag = false;
|
||||
disk.Source = source;
|
||||
|
||||
Rom actual = disk.ConvertToRom();
|
||||
|
||||
Assert.Equal("name.chd", actual.Name);
|
||||
Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.MergeKey));
|
||||
Assert.Equal("XXXXXX", actual.ReadString(Data.Models.Metadata.Rom.RegionKey));
|
||||
Assert.Equal("merge", actual.ReadString(Data.Models.Metadata.Rom.MergeKey));
|
||||
Assert.Equal("region", actual.ReadString(Data.Models.Metadata.Rom.RegionKey));
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, actual.Status);
|
||||
Assert.Equal(true, actual.Optional);
|
||||
Assert.Equal(HashType.MD5.ZeroString, actual.ReadString(Data.Models.Metadata.Rom.MD5Key));
|
||||
@@ -66,7 +63,7 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
Source? actualSource = actual.Source;
|
||||
Assert.NotNull(actualSource);
|
||||
Assert.Equal(0, actualSource.Index);
|
||||
Assert.Equal("XXXXXX", actualSource.Name);
|
||||
Assert.Equal("source", actualSource.Name);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -81,8 +78,8 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Null(self.ReadString(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Null(self.ReadString(Data.Models.Metadata.Disk.SHA1Key));
|
||||
Assert.Null(self.MD5);
|
||||
Assert.Null(self.SHA1);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@@ -90,14 +87,16 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
{
|
||||
Disk self = new Disk();
|
||||
|
||||
Disk other = new Disk();
|
||||
other.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
other.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
Disk other = new Disk
|
||||
{
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
self.FillMissingInformation(other);
|
||||
|
||||
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.MD5Key));
|
||||
Assert.Equal("XXXXXX", self.ReadString(Data.Models.Metadata.Disk.SHA1Key));
|
||||
Assert.Equal("md5", self.MD5);
|
||||
Assert.Equal("sha1", self.SHA1);
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -115,9 +114,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasHashes_MD5_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = "md5",
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
@@ -126,9 +127,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasHashes_SHA1_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty);
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
@@ -137,9 +140,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasHashes_All_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, "XXXXXX");
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, "XXXXXX");
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
};
|
||||
|
||||
bool actual = self.HasHashes();
|
||||
Assert.True(actual);
|
||||
@@ -160,9 +165,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasZeroHash_NonZeroHash_False()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = "DEADBEEF",
|
||||
SHA1 = "DEADBEEF",
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.False(actual);
|
||||
@@ -171,9 +178,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroMD5_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, string.Empty);
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
@@ -182,9 +191,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroSHA1_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, string.Empty);
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = string.Empty,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
@@ -193,9 +204,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
[Fact]
|
||||
public void HasZeroHash_ZeroAll_True()
|
||||
{
|
||||
Disk self = new Disk();
|
||||
self.Write(Data.Models.Metadata.Disk.MD5Key, HashType.MD5.ZeroString);
|
||||
self.Write(Data.Models.Metadata.Disk.SHA1Key, HashType.SHA1.ZeroString);
|
||||
Disk self = new Disk
|
||||
{
|
||||
MD5 = HashType.MD5.ZeroString,
|
||||
SHA1 = HashType.SHA1.ZeroString,
|
||||
};
|
||||
|
||||
bool actual = self.HasZeroHash();
|
||||
Assert.True(actual);
|
||||
@@ -257,9 +270,11 @@ namespace SabreTools.Metadata.DatItems.Formats.Test
|
||||
|
||||
Machine machine = new Machine { Name = "Machine" };
|
||||
|
||||
DatItem datItem = new Disk();
|
||||
datItem.Write(Data.Models.Metadata.Disk.MD5Key, "DEADBEEF");
|
||||
datItem.Write(Data.Models.Metadata.Disk.SHA1Key, "DEADBEEF");
|
||||
DatItem datItem = new Disk
|
||||
{
|
||||
MD5 = "DEADBEEF",
|
||||
SHA1 = "DEADBEEF",
|
||||
};
|
||||
|
||||
string actual = datItem.GetKey(bucketedBy, machine, source, lower, norename);
|
||||
Assert.Equal(expected, actual);
|
||||
|
||||
@@ -12,35 +12,41 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
[JsonObject("disk"), XmlRoot("disk")]
|
||||
public sealed class Disk : DatItem<Data.Models.Metadata.Disk>
|
||||
{
|
||||
#region Constants
|
||||
|
||||
/// <summary>
|
||||
/// Non-standard key for inverted logic
|
||||
/// </summary>
|
||||
public const string DiskAreaKey = "DISKAREA";
|
||||
|
||||
/// <summary>
|
||||
/// Non-standard key for inverted logic
|
||||
/// </summary>
|
||||
public const string PartKey = "PART";
|
||||
|
||||
#endregion
|
||||
|
||||
#region Fields
|
||||
|
||||
public DiskArea? DiskArea { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool DiskAreaSpecified
|
||||
=> DiskArea is not null && !string.IsNullOrEmpty(DiskArea.Name);
|
||||
|
||||
public string? Flags
|
||||
{
|
||||
get
|
||||
{
|
||||
var diskArea = Read<DiskArea?>(DiskAreaKey);
|
||||
return diskArea is not null && !string.IsNullOrEmpty(diskArea.Name);
|
||||
}
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Flags;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.Flags = value;
|
||||
}
|
||||
|
||||
public long? Index
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Index;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.Index = value;
|
||||
}
|
||||
|
||||
/// <inheritdoc>/>
|
||||
public override ItemType ItemType => ItemType.Disk;
|
||||
|
||||
public string? MD5
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.MD5;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.MD5 = value;
|
||||
}
|
||||
|
||||
public string? Merge
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Merge;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.Merge = value;
|
||||
}
|
||||
|
||||
public string? Name
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Name;
|
||||
@@ -53,18 +59,31 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.Optional = value;
|
||||
}
|
||||
|
||||
public Part? Part { get; set; }
|
||||
|
||||
[JsonIgnore]
|
||||
public bool PartSpecified
|
||||
{
|
||||
get
|
||||
{
|
||||
var part = Read<Part?>(PartKey);
|
||||
return part is not null
|
||||
&& (!string.IsNullOrEmpty(part.Name)
|
||||
|| !string.IsNullOrEmpty(part.Interface));
|
||||
return Part is not null
|
||||
&& (!string.IsNullOrEmpty(Part.Name)
|
||||
|| !string.IsNullOrEmpty(Part.Interface));
|
||||
}
|
||||
}
|
||||
|
||||
public string? Region
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Region;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.Region = value;
|
||||
}
|
||||
|
||||
public string? SHA1
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.SHA1;
|
||||
set => (_internal as Data.Models.Metadata.Disk)?.SHA1 = value;
|
||||
}
|
||||
|
||||
public ItemStatus? Status
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Disk)?.Status;
|
||||
@@ -92,13 +111,11 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
DupeType = 0x00;
|
||||
|
||||
// Process hash values
|
||||
string? md5 = ReadString(Data.Models.Metadata.Disk.MD5Key);
|
||||
if (md5 is not null)
|
||||
Write<string?>(Data.Models.Metadata.Disk.MD5Key, TextHelper.NormalizeMD5(md5));
|
||||
if (MD5 is not null)
|
||||
MD5 = TextHelper.NormalizeMD5(MD5);
|
||||
|
||||
string? sha1 = ReadString(Data.Models.Metadata.Disk.SHA1Key);
|
||||
if (sha1 is not null)
|
||||
Write<string?>(Data.Models.Metadata.Disk.SHA1Key, TextHelper.NormalizeSHA1(sha1));
|
||||
if (SHA1 is not null)
|
||||
SHA1 = TextHelper.NormalizeSHA1(SHA1);
|
||||
}
|
||||
|
||||
public Disk(Data.Models.Metadata.Disk item, Machine machine, Source source) : this(item)
|
||||
@@ -123,18 +140,15 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
var rom = new Rom(_internal.ConvertToRom()!);
|
||||
|
||||
// Create a DataArea if there was an existing DiskArea
|
||||
var diskArea = Read<DiskArea?>(DiskAreaKey);
|
||||
if (diskArea is not null)
|
||||
if (DiskArea is not null)
|
||||
{
|
||||
var dataArea = new DataArea();
|
||||
dataArea.Name = diskArea.Name;
|
||||
|
||||
var dataArea = new DataArea { Name = DiskArea.Name };
|
||||
rom.Write<DataArea?>(Rom.DataAreaKey, dataArea);
|
||||
}
|
||||
|
||||
rom.DupeType = DupeType;
|
||||
rom.Machine = Machine?.Clone() as Machine;
|
||||
rom.Write(Rom.PartKey, Read<Part>(PartKey)?.Clone() as Part);
|
||||
rom.Write(Rom.PartKey, Part?.Clone() as Part);
|
||||
rom.RemoveFlag = RemoveFlag;
|
||||
rom.Source = Source?.Clone() as Source;
|
||||
|
||||
@@ -179,11 +193,11 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
switch (bucketedBy)
|
||||
{
|
||||
case ItemKey.MD5:
|
||||
key = ReadString(Data.Models.Metadata.Disk.MD5Key);
|
||||
key = MD5;
|
||||
break;
|
||||
|
||||
case ItemKey.SHA1:
|
||||
key = ReadString(Data.Models.Metadata.Disk.SHA1Key);
|
||||
key = SHA1;
|
||||
break;
|
||||
|
||||
// Let the base handle generic stuff
|
||||
|
||||
@@ -504,9 +504,27 @@ namespace SabreTools.Metadata.Filter
|
||||
checkValue = item.Value;
|
||||
return true;
|
||||
|
||||
case Disk item when fieldName == "flags":
|
||||
checkValue = item.Flags;
|
||||
return true;
|
||||
case Disk item when fieldName == "index":
|
||||
checkValue = item.Index?.ToString();
|
||||
return true;
|
||||
case Disk item when fieldName == "md5":
|
||||
checkValue = item.MD5;
|
||||
return true;
|
||||
case Disk item when fieldName == "merge":
|
||||
checkValue = item.Merge;
|
||||
return true;
|
||||
case Disk item when fieldName == "optional":
|
||||
checkValue = item.Optional.FromYesNo();
|
||||
return true;
|
||||
case Disk item when fieldName == "region":
|
||||
checkValue = item.Region;
|
||||
return true;
|
||||
case Disk item when fieldName == "sha1":
|
||||
checkValue = item.SHA1;
|
||||
return true;
|
||||
case Disk item when fieldName == "status":
|
||||
checkValue = item.Status?.AsStringValue();
|
||||
return true;
|
||||
|
||||
@@ -24,15 +24,15 @@ namespace SabreTools.Metadata.Test
|
||||
{
|
||||
Status = ItemStatus.Nodump,
|
||||
Name = "name",
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
Status = ItemStatus.Nodump,
|
||||
Name = "name",
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = string.Empty,
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
|
||||
bool actual = self.EqualTo(other);
|
||||
@@ -45,14 +45,14 @@ namespace SabreTools.Metadata.Test
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
Name = "name",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
Name = "name",
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
bool actual = self.EqualTo(other);
|
||||
@@ -65,14 +65,14 @@ namespace SabreTools.Metadata.Test
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
Name = "XXXXXX1",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = string.Empty,
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = string.Empty,
|
||||
};
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
Name = "XXXXXX2",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
bool actual = self.EqualTo(other);
|
||||
@@ -85,14 +85,14 @@ namespace SabreTools.Metadata.Test
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
Name = "XXXXXX1",
|
||||
[Disk.MD5Key] = string.Empty,
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = string.Empty,
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
Name = "XXXXXX2",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
bool actual = self.EqualTo(other);
|
||||
@@ -105,14 +105,14 @@ namespace SabreTools.Metadata.Test
|
||||
DictionaryBase self = new Disk
|
||||
{
|
||||
Name = "XXXXXX1",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
DictionaryBase other = new Disk
|
||||
{
|
||||
Name = "XXXXXX2",
|
||||
[Disk.MD5Key] = "XXXXXX",
|
||||
[Disk.SHA1Key] = "XXXXXX",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
};
|
||||
|
||||
bool actual = self.EqualTo(other);
|
||||
|
||||
@@ -128,11 +128,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var disk = new Data.Models.ClrMamePro.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Flags = "XXXXXX",
|
||||
Flags = "flags",
|
||||
};
|
||||
|
||||
var sample = new Data.Models.ClrMamePro.Sample
|
||||
@@ -395,11 +395,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal("XXXXXX", disk.Flags);
|
||||
Assert.Equal("flags", disk.Flags);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -89,11 +89,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -505,11 +505,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -85,11 +85,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -499,11 +499,11 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -197,11 +197,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Status = item.Status,
|
||||
Flags = item.ReadString(Data.Models.Metadata.Disk.FlagsKey),
|
||||
Flags = item.Flags,
|
||||
};
|
||||
return disk;
|
||||
}
|
||||
|
||||
@@ -210,11 +210,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
[Data.Models.Metadata.Disk.MergeKey] = item.Merge,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Status = item.Status,
|
||||
[Data.Models.Metadata.Disk.FlagsKey] = item.Flags,
|
||||
Flags = item.Flags,
|
||||
};
|
||||
return disk;
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var row = new Row
|
||||
{
|
||||
Name = item.Name,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
};
|
||||
|
||||
if (item.Status == Data.Models.Metadata.ItemStatus.Nodump)
|
||||
|
||||
@@ -84,8 +84,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
};
|
||||
|
||||
if (item.NoGoodDumpKnown)
|
||||
|
||||
@@ -404,11 +404,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
|
||||
Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
|
||||
Index = item.ReadString(Data.Models.Metadata.Disk.IndexKey),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Region = item.Region,
|
||||
Index = item.Index,
|
||||
Writable = item.Writable,
|
||||
Status = item.Status,
|
||||
Optional = item.Optional,
|
||||
|
||||
@@ -427,11 +427,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
[Data.Models.Metadata.Disk.MergeKey] = item.Merge,
|
||||
[Data.Models.Metadata.Disk.RegionKey] = item.Region,
|
||||
[Data.Models.Metadata.Disk.IndexKey] = item.Index,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Region = item.Region,
|
||||
Index = item.Index,
|
||||
Writable = item.Writable,
|
||||
Status = item.Status,
|
||||
Optional = item.Optional,
|
||||
|
||||
@@ -233,11 +233,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
Merge = item.ReadString(Data.Models.Metadata.Disk.MergeKey),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Status = item.Status,
|
||||
Region = item.ReadString(Data.Models.Metadata.Disk.RegionKey),
|
||||
Region = item.Region,
|
||||
};
|
||||
return disk;
|
||||
}
|
||||
|
||||
@@ -227,11 +227,11 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
[Data.Models.Metadata.Disk.MergeKey] = item.Merge,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Merge = item.Merge,
|
||||
Status = item.Status,
|
||||
[Data.Models.Metadata.Disk.RegionKey] = item.Region,
|
||||
Region = item.Region,
|
||||
};
|
||||
return disk;
|
||||
}
|
||||
|
||||
@@ -86,8 +86,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
DiskName = item.Name,
|
||||
Size = null,
|
||||
CRC = null,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
SHA256 = null,
|
||||
SHA384 = null,
|
||||
SHA512 = null,
|
||||
|
||||
@@ -90,8 +90,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
"disk" => new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.DiskName,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Status = item.Status,
|
||||
},
|
||||
"media" => new Data.Models.Metadata.Media
|
||||
|
||||
@@ -127,8 +127,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
MD5 = item.ReadString(Data.Models.Metadata.Disk.MD5Key),
|
||||
SHA1 = item.ReadString(Data.Models.Metadata.Disk.SHA1Key),
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Status = item.Status,
|
||||
Writeable = item.Writable,
|
||||
};
|
||||
|
||||
@@ -126,8 +126,8 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var disk = new Data.Models.Metadata.Disk
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Disk.MD5Key] = item.MD5,
|
||||
[Data.Models.Metadata.Disk.SHA1Key] = item.SHA1,
|
||||
MD5 = item.MD5,
|
||||
SHA1 = item.SHA1,
|
||||
Status = item.Status,
|
||||
Writable = item.Writeable,
|
||||
};
|
||||
|
||||
@@ -156,11 +156,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -572,11 +572,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -152,11 +152,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var disk = new Data.Models.Listxml.Disk
|
||||
{
|
||||
Name = "name",
|
||||
MD5 = "XXXXXX",
|
||||
SHA1 = "XXXXXX",
|
||||
Merge = "XXXXXX",
|
||||
Region = "XXXXXX",
|
||||
Index = "XXXXXX",
|
||||
MD5 = "md5",
|
||||
SHA1 = "sha1",
|
||||
Merge = "merge",
|
||||
Region = "region",
|
||||
Index = 12345,
|
||||
Writable = true,
|
||||
Status = Data.Models.Metadata.ItemStatus.Good,
|
||||
Optional = true,
|
||||
@@ -566,11 +566,11 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Assert.NotNull(disk);
|
||||
Assert.Equal("name", disk.Name);
|
||||
Assert.Equal("XXXXXX", disk.MD5);
|
||||
Assert.Equal("XXXXXX", disk.SHA1);
|
||||
Assert.Equal("XXXXXX", disk.Merge);
|
||||
Assert.Equal("XXXXXX", disk.Region);
|
||||
Assert.Equal("XXXXXX", disk.Index);
|
||||
Assert.Equal("md5", disk.MD5);
|
||||
Assert.Equal("sha1", disk.SHA1);
|
||||
Assert.Equal("merge", disk.Merge);
|
||||
Assert.Equal("region", disk.Region);
|
||||
Assert.Equal(12345, disk.Index);
|
||||
Assert.Equal(true, disk.Writable);
|
||||
Assert.Equal(Data.Models.Metadata.ItemStatus.Good, disk.Status);
|
||||
Assert.Equal(true, disk.Optional);
|
||||
|
||||
@@ -557,7 +557,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.SHA1 = reader.GetAttribute("sha1");
|
||||
obj.Merge = reader.GetAttribute("merge");
|
||||
obj.Region = reader.GetAttribute("region");
|
||||
obj.Index = reader.GetAttribute("index");
|
||||
obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
|
||||
obj.Writable = reader.GetAttribute("writable").AsYesNo();
|
||||
obj.Status = reader.GetAttribute("status").AsItemStatus();
|
||||
obj.Optional = reader.GetAttribute("optional").AsYesNo();
|
||||
|
||||
@@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.SHA1 = reader.GetAttribute("sha1");
|
||||
obj.Merge = reader.GetAttribute("merge");
|
||||
obj.Region = reader.GetAttribute("region");
|
||||
obj.Index = reader.GetAttribute("index");
|
||||
obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
|
||||
obj.Writable = reader.GetAttribute("writable").AsYesNo();
|
||||
obj.Status = reader.GetAttribute("status").AsItemStatus();
|
||||
obj.Optional = reader.GetAttribute("optional").AsYesNo();
|
||||
|
||||
@@ -555,7 +555,7 @@ namespace SabreTools.Serialization.Readers
|
||||
obj.SHA1 = reader.GetAttribute("sha1");
|
||||
obj.Merge = reader.GetAttribute("merge");
|
||||
obj.Region = reader.GetAttribute("region");
|
||||
obj.Index = reader.GetAttribute("index");
|
||||
obj.Index = NumberHelper.ConvertToInt64(reader.GetAttribute("index"));
|
||||
obj.Writable = reader.GetAttribute("writable").AsYesNo();
|
||||
obj.Status = reader.GetAttribute("status").AsItemStatus();
|
||||
obj.Optional = reader.GetAttribute("optional").AsYesNo();
|
||||
|
||||
@@ -372,7 +372,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
|
||||
writer.WriteOptionalAttributeString("merge", obj.Merge);
|
||||
writer.WriteOptionalAttributeString("region", obj.Region);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
|
||||
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
|
||||
|
||||
@@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
|
||||
writer.WriteOptionalAttributeString("merge", obj.Merge);
|
||||
writer.WriteOptionalAttributeString("region", obj.Region);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
|
||||
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
|
||||
|
||||
@@ -370,7 +370,7 @@ namespace SabreTools.Serialization.Writers
|
||||
writer.WriteOptionalAttributeString("sha1", obj.SHA1);
|
||||
writer.WriteOptionalAttributeString("merge", obj.Merge);
|
||||
writer.WriteOptionalAttributeString("region", obj.Region);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index);
|
||||
writer.WriteOptionalAttributeString("index", obj.Index?.ToString());
|
||||
writer.WriteOptionalAttributeString("writable", obj.Writable.FromYesNo());
|
||||
writer.WriteOptionalAttributeString("status", obj.Status?.AsStringValue());
|
||||
writer.WriteOptionalAttributeString("optional", obj.Optional.FromYesNo());
|
||||
|
||||
Reference in New Issue
Block a user