diff --git a/SabreTools.RedumpLib.Test/BuilderTests.cs b/SabreTools.RedumpLib.Test/BuilderTests.cs index 1743dcc..fdce855 100644 --- a/SabreTools.RedumpLib.Test/BuilderTests.cs +++ b/SabreTools.RedumpLib.Test/BuilderTests.cs @@ -26,102 +26,6 @@ namespace SabreTools.RedumpLib.Test Assert.Equal(expectNull, si == null); } - [Fact] - public void EnsureAllSections_Null_Filled() - { - SubmissionInfo? si = null; - var actual = Builder.EnsureAllSections(si); - - Assert.NotNull(actual); - Assert.NotNull(actual.CommonDiscInfo); - Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields); - Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields); - Assert.NotNull(actual.VersionAndEditions); - Assert.NotNull(actual.EDC); - Assert.NotNull(actual.ParentCloneRelationship); - Assert.NotNull(actual.Extras); - Assert.NotNull(actual.CopyProtection); - Assert.NotNull(actual.DumpersAndStatus); - Assert.NotNull(actual.TracksAndWriteOffsets); - Assert.NotNull(actual.SizeAndChecksums); - Assert.NotNull(actual.DumpingInfo); - Assert.NotNull(actual.Artifacts); - } - - [Fact] - public void EnsureAllSections_Empty_Filled() - { - SubmissionInfo? si = new SubmissionInfo - { - CommonDiscInfo = null, - VersionAndEditions = null, - EDC = null, - ParentCloneRelationship = null, - Extras = null, - CopyProtection = null, - DumpersAndStatus = null, - TracksAndWriteOffsets = null, - SizeAndChecksums = null, - DumpingInfo = null, - Artifacts = null, - }; - var actual = Builder.EnsureAllSections(si); - - Assert.NotNull(actual); - Assert.NotNull(actual.CommonDiscInfo); - Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields); - Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields); - Assert.NotNull(actual.VersionAndEditions); - Assert.NotNull(actual.EDC); - Assert.NotNull(actual.ParentCloneRelationship); - Assert.NotNull(actual.Extras); - Assert.NotNull(actual.CopyProtection); - Assert.NotNull(actual.DumpersAndStatus); - Assert.NotNull(actual.TracksAndWriteOffsets); - Assert.NotNull(actual.SizeAndChecksums); - Assert.NotNull(actual.DumpingInfo); - Assert.NotNull(actual.Artifacts); - } - - [Fact] - public void EnsureAllSections_Filled_Filled() - { - SubmissionInfo? si = new SubmissionInfo - { - CommonDiscInfo = new CommonDiscInfoSection - { - CommentsSpecialFields = [], - ContentsSpecialFields = [], - }, - VersionAndEditions = new VersionAndEditionsSection(), - EDC = new EDCSection(), - ParentCloneRelationship = new ParentCloneRelationshipSection(), - Extras = new ExtrasSection(), - CopyProtection = new CopyProtectionSection(), - DumpersAndStatus = new DumpersAndStatusSection(), - TracksAndWriteOffsets = new TracksAndWriteOffsetsSection(), - SizeAndChecksums = new SizeAndChecksumsSection(), - DumpingInfo = new DumpingInfoSection(), - Artifacts = [], - }; - var actual = Builder.EnsureAllSections(si); - - Assert.NotNull(actual); - Assert.NotNull(actual.CommonDiscInfo); - Assert.NotNull(actual.CommonDiscInfo.CommentsSpecialFields); - Assert.NotNull(actual.CommonDiscInfo.ContentsSpecialFields); - Assert.NotNull(actual.VersionAndEditions); - Assert.NotNull(actual.EDC); - Assert.NotNull(actual.ParentCloneRelationship); - Assert.NotNull(actual.Extras); - Assert.NotNull(actual.CopyProtection); - Assert.NotNull(actual.DumpersAndStatus); - Assert.NotNull(actual.TracksAndWriteOffsets); - Assert.NotNull(actual.SizeAndChecksums); - Assert.NotNull(actual.DumpingInfo); - Assert.NotNull(actual.Artifacts); - } - [Fact] public void InjectSubmissionInformation_BothNull_Null() { @@ -188,4 +92,4 @@ namespace SabreTools.RedumpLib.Test Assert.Equal(expected, actual); } } -} \ No newline at end of file +} diff --git a/SabreTools.RedumpLib.Test/ValidatorTests.cs b/SabreTools.RedumpLib.Test/ValidatorTests.cs index af1794c..18aaaa0 100644 --- a/SabreTools.RedumpLib.Test/ValidatorTests.cs +++ b/SabreTools.RedumpLib.Test/ValidatorTests.cs @@ -28,7 +28,7 @@ namespace SabreTools.RedumpLib.Test SubmissionInfo si = new SubmissionInfo { CommonDiscInfo = new CommonDiscInfoSection { Media = DiscType.CD }, - SizeAndChecksums = null, + SizeAndChecksums = new(), }; Validator.NormalizeDiscType(si); @@ -301,4 +301,4 @@ namespace SabreTools.RedumpLib.Test Assert.Equal(expected, si.CommonDiscInfo.Media); } } -} \ No newline at end of file +} diff --git a/SabreTools.RedumpLib/Builder.cs b/SabreTools.RedumpLib/Builder.cs index 0fdf24d..9932fd1 100644 --- a/SabreTools.RedumpLib/Builder.cs +++ b/SabreTools.RedumpLib/Builder.cs @@ -253,8 +253,6 @@ namespace SabreTools.RedumpLib /// True to include all pullable information, false to do bare minimum public async static Task FillFromId(RedumpClient rc, SubmissionInfo info, int id, bool includeAllData) { - // Ensure that required sections exist - info = EnsureAllSections(info); var discData = await rc.DownloadSingleSiteID(id); if (string.IsNullOrEmpty(discData)) return false; @@ -605,35 +603,6 @@ namespace SabreTools.RedumpLib return true; } - /// - /// Ensure all required sections in a submission info exist - /// - /// SubmissionInfo object to verify - public static SubmissionInfo EnsureAllSections(SubmissionInfo? info) - { - // If there's no info, create one - info ??= new SubmissionInfo(); - - // Ensure all sections - info.CommonDiscInfo ??= new CommonDiscInfoSection(); - info.VersionAndEditions ??= new VersionAndEditionsSection(); - info.EDC ??= new EDCSection(); - info.ParentCloneRelationship ??= new ParentCloneRelationshipSection(); - info.Extras ??= new ExtrasSection(); - info.CopyProtection ??= new CopyProtectionSection(); - info.DumpersAndStatus ??= new DumpersAndStatusSection(); - info.TracksAndWriteOffsets ??= new TracksAndWriteOffsetsSection(); - info.SizeAndChecksums ??= new SizeAndChecksumsSection(); - info.DumpingInfo ??= new DumpingInfoSection(); - info.Artifacts ??= []; - - // Ensure special dictionaries - info.CommonDiscInfo.CommentsSpecialFields ??= []; - info.CommonDiscInfo.ContentsSpecialFields ??= []; - - return info; - } - /// /// Inject information from a seed SubmissionInfo into the existing one /// @@ -645,62 +614,52 @@ namespace SabreTools.RedumpLib if (seed == null) return info; - // Ensure that required sections exist - info = EnsureAllSections(info); - // Otherwise, inject information as necessary - if (info.CommonDiscInfo != null && seed.CommonDiscInfo != null) - { - // Info that only overwrites if supplied - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Title)) info.CommonDiscInfo.Title = seed.CommonDiscInfo.Title; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.ForeignTitleNonLatin)) info.CommonDiscInfo.ForeignTitleNonLatin = seed.CommonDiscInfo.ForeignTitleNonLatin; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscNumberLetter)) info.CommonDiscInfo.DiscNumberLetter = seed.CommonDiscInfo.DiscNumberLetter; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscTitle)) info.CommonDiscInfo.DiscTitle = seed.CommonDiscInfo.DiscTitle; - if (seed.CommonDiscInfo.Category != null) info.CommonDiscInfo.Category = seed.CommonDiscInfo.Category; - if (seed.CommonDiscInfo.Region != null) info.CommonDiscInfo.Region = seed.CommonDiscInfo.Region; - if (seed.CommonDiscInfo.Languages != null) info.CommonDiscInfo.Languages = seed.CommonDiscInfo.Languages; - if (seed.CommonDiscInfo.LanguageSelection != null) info.CommonDiscInfo.LanguageSelection = seed.CommonDiscInfo.LanguageSelection; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Serial)) info.CommonDiscInfo.Serial = seed.CommonDiscInfo.Serial; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Barcode)) info.CommonDiscInfo.Barcode = seed.CommonDiscInfo.Barcode; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Comments)) info.CommonDiscInfo.Comments = seed.CommonDiscInfo.Comments; - if (seed.CommonDiscInfo.CommentsSpecialFields != null) info.CommonDiscInfo.CommentsSpecialFields = seed.CommonDiscInfo.CommentsSpecialFields; - if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Contents)) info.CommonDiscInfo.Contents = seed.CommonDiscInfo.Contents; - if (seed.CommonDiscInfo.ContentsSpecialFields != null) info.CommonDiscInfo.ContentsSpecialFields = seed.CommonDiscInfo.ContentsSpecialFields; + info ??= new SubmissionInfo(); - // Info that always overwrites - info.CommonDiscInfo.Layer0MasteringRing = seed.CommonDiscInfo.Layer0MasteringRing; - info.CommonDiscInfo.Layer0MasteringSID = seed.CommonDiscInfo.Layer0MasteringSID; - info.CommonDiscInfo.Layer0ToolstampMasteringCode = seed.CommonDiscInfo.Layer0ToolstampMasteringCode; - info.CommonDiscInfo.Layer0MouldSID = seed.CommonDiscInfo.Layer0MouldSID; - info.CommonDiscInfo.Layer0AdditionalMould = seed.CommonDiscInfo.Layer0AdditionalMould; + // Info that only overwrites if supplied + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Title)) info.CommonDiscInfo.Title = seed.CommonDiscInfo.Title; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.ForeignTitleNonLatin)) info.CommonDiscInfo.ForeignTitleNonLatin = seed.CommonDiscInfo.ForeignTitleNonLatin; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscNumberLetter)) info.CommonDiscInfo.DiscNumberLetter = seed.CommonDiscInfo.DiscNumberLetter; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.DiscTitle)) info.CommonDiscInfo.DiscTitle = seed.CommonDiscInfo.DiscTitle; + if (seed.CommonDiscInfo.Category != null) info.CommonDiscInfo.Category = seed.CommonDiscInfo.Category; + if (seed.CommonDiscInfo.Region != null) info.CommonDiscInfo.Region = seed.CommonDiscInfo.Region; + if (seed.CommonDiscInfo.Languages != null) info.CommonDiscInfo.Languages = seed.CommonDiscInfo.Languages; + if (seed.CommonDiscInfo.LanguageSelection != null) info.CommonDiscInfo.LanguageSelection = seed.CommonDiscInfo.LanguageSelection; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Serial)) info.CommonDiscInfo.Serial = seed.CommonDiscInfo.Serial; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Barcode)) info.CommonDiscInfo.Barcode = seed.CommonDiscInfo.Barcode; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Comments)) info.CommonDiscInfo.Comments = seed.CommonDiscInfo.Comments; + if (seed.CommonDiscInfo.CommentsSpecialFields != null) info.CommonDiscInfo.CommentsSpecialFields = seed.CommonDiscInfo.CommentsSpecialFields; + if (!string.IsNullOrEmpty(seed.CommonDiscInfo.Contents)) info.CommonDiscInfo.Contents = seed.CommonDiscInfo.Contents; + if (seed.CommonDiscInfo.ContentsSpecialFields != null) info.CommonDiscInfo.ContentsSpecialFields = seed.CommonDiscInfo.ContentsSpecialFields; - info.CommonDiscInfo.Layer1MasteringRing = seed.CommonDiscInfo.Layer1MasteringRing; - info.CommonDiscInfo.Layer1MasteringSID = seed.CommonDiscInfo.Layer1MasteringSID; - info.CommonDiscInfo.Layer1ToolstampMasteringCode = seed.CommonDiscInfo.Layer1ToolstampMasteringCode; - info.CommonDiscInfo.Layer1MouldSID = seed.CommonDiscInfo.Layer1MouldSID; - info.CommonDiscInfo.Layer1AdditionalMould = seed.CommonDiscInfo.Layer1AdditionalMould; + // Info that always overwrites + info.CommonDiscInfo.Layer0MasteringRing = seed.CommonDiscInfo.Layer0MasteringRing; + info.CommonDiscInfo.Layer0MasteringSID = seed.CommonDiscInfo.Layer0MasteringSID; + info.CommonDiscInfo.Layer0ToolstampMasteringCode = seed.CommonDiscInfo.Layer0ToolstampMasteringCode; + info.CommonDiscInfo.Layer0MouldSID = seed.CommonDiscInfo.Layer0MouldSID; + info.CommonDiscInfo.Layer0AdditionalMould = seed.CommonDiscInfo.Layer0AdditionalMould; - info.CommonDiscInfo.Layer2MasteringRing = seed.CommonDiscInfo.Layer2MasteringRing; - info.CommonDiscInfo.Layer2MasteringSID = seed.CommonDiscInfo.Layer2MasteringSID; - info.CommonDiscInfo.Layer2ToolstampMasteringCode = seed.CommonDiscInfo.Layer2ToolstampMasteringCode; + info.CommonDiscInfo.Layer1MasteringRing = seed.CommonDiscInfo.Layer1MasteringRing; + info.CommonDiscInfo.Layer1MasteringSID = seed.CommonDiscInfo.Layer1MasteringSID; + info.CommonDiscInfo.Layer1ToolstampMasteringCode = seed.CommonDiscInfo.Layer1ToolstampMasteringCode; + info.CommonDiscInfo.Layer1MouldSID = seed.CommonDiscInfo.Layer1MouldSID; + info.CommonDiscInfo.Layer1AdditionalMould = seed.CommonDiscInfo.Layer1AdditionalMould; - info.CommonDiscInfo.Layer3MasteringRing = seed.CommonDiscInfo.Layer3MasteringRing; - info.CommonDiscInfo.Layer3MasteringSID = seed.CommonDiscInfo.Layer3MasteringSID; - info.CommonDiscInfo.Layer3ToolstampMasteringCode = seed.CommonDiscInfo.Layer3ToolstampMasteringCode; - } + info.CommonDiscInfo.Layer2MasteringRing = seed.CommonDiscInfo.Layer2MasteringRing; + info.CommonDiscInfo.Layer2MasteringSID = seed.CommonDiscInfo.Layer2MasteringSID; + info.CommonDiscInfo.Layer2ToolstampMasteringCode = seed.CommonDiscInfo.Layer2ToolstampMasteringCode; - if (info.VersionAndEditions != null && seed.VersionAndEditions != null) - { - // Info that only overwrites if supplied - if (!string.IsNullOrEmpty(seed.VersionAndEditions.Version)) info.VersionAndEditions.Version = seed.VersionAndEditions.Version; - if (!string.IsNullOrEmpty(seed.VersionAndEditions.OtherEditions)) info.VersionAndEditions.OtherEditions = seed.VersionAndEditions.OtherEditions; - } + info.CommonDiscInfo.Layer3MasteringRing = seed.CommonDiscInfo.Layer3MasteringRing; + info.CommonDiscInfo.Layer3MasteringSID = seed.CommonDiscInfo.Layer3MasteringSID; + info.CommonDiscInfo.Layer3ToolstampMasteringCode = seed.CommonDiscInfo.Layer3ToolstampMasteringCode; - if (info.CopyProtection != null && seed.CopyProtection != null) - { - // Info that only overwrites if supplied - if (!string.IsNullOrEmpty(seed.CopyProtection.Protection)) info.CopyProtection.Protection = seed.CopyProtection.Protection; - } + // Info that only overwrites if supplied + if (!string.IsNullOrEmpty(seed.VersionAndEditions.Version)) info.VersionAndEditions.Version = seed.VersionAndEditions.Version; + if (!string.IsNullOrEmpty(seed.VersionAndEditions.OtherEditions)) info.VersionAndEditions.OtherEditions = seed.VersionAndEditions.OtherEditions; + + // Info that only overwrites if supplied + if (!string.IsNullOrEmpty(seed.CopyProtection.Protection)) info.CopyProtection.Protection = seed.CopyProtection.Protection; return info; } diff --git a/SabreTools.RedumpLib/Data/SubmissionInfo.cs b/SabreTools.RedumpLib/Data/SubmissionInfo.cs index c9a140c..07f506a 100644 --- a/SabreTools.RedumpLib/Data/SubmissionInfo.cs +++ b/SabreTools.RedumpLib/Data/SubmissionInfo.cs @@ -38,48 +38,44 @@ namespace SabreTools.RedumpLib.Data public DateTime? LastModified { get; set; } [JsonProperty(PropertyName = "common_disc_info", DefaultValueHandling = DefaultValueHandling.Ignore)] - public CommonDiscInfoSection? CommonDiscInfo { get; set; } = new CommonDiscInfoSection(); + public CommonDiscInfoSection CommonDiscInfo { get; set; } = new CommonDiscInfoSection(); [JsonProperty(PropertyName = "versions_and_editions", DefaultValueHandling = DefaultValueHandling.Ignore)] - public VersionAndEditionsSection? VersionAndEditions { get; set; } = new VersionAndEditionsSection(); + public VersionAndEditionsSection VersionAndEditions { get; set; } = new VersionAndEditionsSection(); [JsonProperty(PropertyName = "edc", DefaultValueHandling = DefaultValueHandling.Ignore)] - public EDCSection? EDC { get; set; } = new EDCSection(); + public EDCSection EDC { get; set; } = new EDCSection(); [JsonProperty(PropertyName = "parent_clone_relationship", DefaultValueHandling = DefaultValueHandling.Ignore)] - public ParentCloneRelationshipSection? ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection(); + public ParentCloneRelationshipSection ParentCloneRelationship { get; set; } = new ParentCloneRelationshipSection(); [JsonProperty(PropertyName = "extras", DefaultValueHandling = DefaultValueHandling.Ignore)] - public ExtrasSection? Extras { get; set; } = new ExtrasSection(); + public ExtrasSection Extras { get; set; } = new ExtrasSection(); [JsonProperty(PropertyName = "copy_protection", DefaultValueHandling = DefaultValueHandling.Ignore)] - public CopyProtectionSection? CopyProtection { get; set; } = new CopyProtectionSection(); + public CopyProtectionSection CopyProtection { get; set; } = new CopyProtectionSection(); [JsonProperty(PropertyName = "dumpers_and_status", DefaultValueHandling = DefaultValueHandling.Ignore)] - public DumpersAndStatusSection? DumpersAndStatus { get; set; } = new DumpersAndStatusSection(); + public DumpersAndStatusSection DumpersAndStatus { get; set; } = new DumpersAndStatusSection(); [JsonProperty(PropertyName = "tracks_and_write_offsets", DefaultValueHandling = DefaultValueHandling.Ignore)] - public TracksAndWriteOffsetsSection? TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection(); + public TracksAndWriteOffsetsSection TracksAndWriteOffsets { get; set; } = new TracksAndWriteOffsetsSection(); [JsonProperty(PropertyName = "size_and_checksums", DefaultValueHandling = DefaultValueHandling.Ignore)] - public SizeAndChecksumsSection? SizeAndChecksums { get; set; } = new SizeAndChecksumsSection(); + public SizeAndChecksumsSection SizeAndChecksums { get; set; } = new SizeAndChecksumsSection(); [JsonProperty(PropertyName = "dumping_info", DefaultValueHandling = DefaultValueHandling.Ignore)] - public DumpingInfoSection? DumpingInfo { get; set; } = new DumpingInfoSection(); + public DumpingInfoSection DumpingInfo { get; set; } = new DumpingInfoSection(); [JsonProperty(PropertyName = "artifacts", DefaultValueHandling = DefaultValueHandling.Ignore)] - public Dictionary? Artifacts { get; set; } = []; + public Dictionary Artifacts { get; set; } = []; public object Clone() { - Dictionary? artifacts = null; - if (this.Artifacts != null) + Dictionary artifacts = []; + foreach (var kvp in this.Artifacts) { - artifacts = new Dictionary(); - foreach (var kvp in this.Artifacts) - { - artifacts[kvp.Key] = kvp.Value; - } + artifacts[kvp.Key] = kvp.Value; } return new SubmissionInfo @@ -89,16 +85,16 @@ namespace SabreTools.RedumpLib.Data PartiallyMatchedIDs = this.PartiallyMatchedIDs, Added = this.Added, LastModified = this.LastModified, - CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection, - VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection, - EDC = this.EDC?.Clone() as EDCSection, - ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection, - Extras = this.Extras?.Clone() as ExtrasSection, - CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection, - DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection, - TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection, - SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection, - DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection, + CommonDiscInfo = this.CommonDiscInfo?.Clone() as CommonDiscInfoSection ?? new CommonDiscInfoSection(), + VersionAndEditions = this.VersionAndEditions?.Clone() as VersionAndEditionsSection ?? new VersionAndEditionsSection(), + EDC = this.EDC?.Clone() as EDCSection ?? new EDCSection(), + ParentCloneRelationship = this.ParentCloneRelationship?.Clone() as ParentCloneRelationshipSection ?? new ParentCloneRelationshipSection(), + Extras = this.Extras?.Clone() as ExtrasSection ?? new ExtrasSection(), + CopyProtection = this.CopyProtection?.Clone() as CopyProtectionSection ?? new CopyProtectionSection(), + DumpersAndStatus = this.DumpersAndStatus?.Clone() as DumpersAndStatusSection ?? new DumpersAndStatusSection(), + TracksAndWriteOffsets = this.TracksAndWriteOffsets?.Clone() as TracksAndWriteOffsetsSection ?? new TracksAndWriteOffsetsSection(), + SizeAndChecksums = this.SizeAndChecksums?.Clone() as SizeAndChecksumsSection ?? new SizeAndChecksumsSection(), + DumpingInfo = this.DumpingInfo?.Clone() as DumpingInfoSection ?? new DumpingInfoSection(), Artifacts = artifacts, }; } @@ -232,34 +228,26 @@ namespace SabreTools.RedumpLib.Data public string? Comments { get; set; } [JsonIgnore] - public Dictionary? CommentsSpecialFields { get; set; } + public Dictionary CommentsSpecialFields { get; set; } = []; [JsonProperty(PropertyName = "d_contents", NullValueHandling = NullValueHandling.Ignore)] public string? Contents { get; set; } [JsonIgnore] - public Dictionary? ContentsSpecialFields { get; set; } + public Dictionary ContentsSpecialFields { get; set; } = []; public object Clone() { - Dictionary? commentsSpecialFields = null; - if (this.CommentsSpecialFields != null) + Dictionary commentsSpecialFields = []; + foreach (var kvp in this.CommentsSpecialFields) { - commentsSpecialFields = new Dictionary(); - foreach (var kvp in this.CommentsSpecialFields) - { - commentsSpecialFields[kvp.Key] = kvp.Value; - } + commentsSpecialFields[kvp.Key] = kvp.Value; } - Dictionary? contentsSpecialFields = null; - if (this.ContentsSpecialFields != null) + Dictionary contentsSpecialFields = []; + foreach (var kvp in this.ContentsSpecialFields) { - contentsSpecialFields = new Dictionary(); - foreach (var kvp in this.ContentsSpecialFields) - { - contentsSpecialFields[kvp.Key] = kvp.Value; - } + contentsSpecialFields[kvp.Key] = kvp.Value; } return new CommonDiscInfoSection diff --git a/SabreTools.RedumpLib/Formatter.cs b/SabreTools.RedumpLib/Formatter.cs index 8186304..4a1a259 100644 --- a/SabreTools.RedumpLib/Formatter.cs +++ b/SabreTools.RedumpLib/Formatter.cs @@ -156,7 +156,7 @@ namespace SabreTools.RedumpLib output.AppendLine(); // EDC section - FormatOutputData(output, info.EDC, info.CommonDiscInfo?.System); + FormatOutputData(output, info.EDC, info.CommonDiscInfo.System); output.AppendLine(); // Extras section @@ -164,11 +164,11 @@ namespace SabreTools.RedumpLib output.AppendLine(); // Copy Protection section - FormatOutputData(output, info.CopyProtection, info.CommonDiscInfo?.System); + FormatOutputData(output, info.CopyProtection, info.CommonDiscInfo.System); output.AppendLine(); // Tracks and Write Offsets section - if (!string.IsNullOrEmpty(info.TracksAndWriteOffsets?.ClrMameProData)) + if (!string.IsNullOrEmpty(info.TracksAndWriteOffsets.ClrMameProData)) { FormatOutputData(output, info.TracksAndWriteOffsets!); output.AppendLine(); @@ -178,8 +178,8 @@ namespace SabreTools.RedumpLib { FormatOutputData(output, info.SizeAndChecksums, - info.CommonDiscInfo?.Media.ToMediaType(), - info.CommonDiscInfo?.System, + info.CommonDiscInfo.Media.ToMediaType(), + info.CommonDiscInfo.System, enableRedumpCompatibility); output.AppendLine(); } @@ -226,7 +226,7 @@ namespace SabreTools.RedumpLib info.CommonDiscInfo.Comments = info.CommonDiscInfo.Comments.Trim(); // Wipe out the special fields dictionary - info.CommonDiscInfo.CommentsSpecialFields = null; + info.CommonDiscInfo.CommentsSpecialFields.Clear(); } // Process the contents field @@ -246,7 +246,7 @@ namespace SabreTools.RedumpLib info.CommonDiscInfo.Contents = info.CommonDiscInfo.Contents.Trim(); // Wipe out the special fields dictionary - info.CommonDiscInfo.ContentsSpecialFields = null; + info.CommonDiscInfo.ContentsSpecialFields.Clear(); } } diff --git a/SabreTools.RedumpLib/Validator.cs b/SabreTools.RedumpLib/Validator.cs index f26ff71..6acc524 100644 --- a/SabreTools.RedumpLib/Validator.cs +++ b/SabreTools.RedumpLib/Validator.cs @@ -16,7 +16,7 @@ namespace SabreTools.RedumpLib public static void NormalizeDiscType(SubmissionInfo info) { // If we have nothing valid, do nothing - if (info?.CommonDiscInfo?.Media == null || info?.SizeAndChecksums == null) + if (info.CommonDiscInfo.Media == null || info.SizeAndChecksums == default) return; switch (info.CommonDiscInfo.Media) @@ -161,7 +161,7 @@ namespace SabreTools.RedumpLib public async static Task?> ValidateUniversalHash(RedumpClient rc, SubmissionInfo info) { // If we don't have special fields - if (info.CommonDiscInfo?.CommentsSpecialFields == null) + if (info.CommonDiscInfo.CommentsSpecialFields == null) return null; // If we don't have a universal hash