From 5ae162400cea5659aadfd77d0ed4e166a485aa89 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 27 Nov 2024 14:04:20 -0500 Subject: [PATCH] Handle unexpected deserializer results --- .../Deserializers/AttractModeTests.cs | 20 +------ .../Deserializers/ClrMameProTests.cs | 16 +---- .../Deserializers/DosCenterTests.cs | 16 +---- .../Deserializers/EverdriveSMDBTests.cs | 14 +---- .../Deserializers/ListromTests.cs | 14 +---- .../Deserializers/RomCenterTests.cs | 18 +----- .../Deserializers/SeparatedValueTests.cs | 20 +------ .../Deserializers/AttractMode.cs | 9 ++- .../Deserializers/ClrMamePro.cs | 9 ++- .../Deserializers/DosCenter.cs | 9 ++- .../Deserializers/EverdriveSMDB.cs | 9 ++- .../Deserializers/Listrom.cs | 59 +++---------------- .../Deserializers/RomCenter.cs | 7 ++- .../Deserializers/SeparatedValue.cs | 9 ++- 14 files changed, 61 insertions(+), 168 deletions(-) diff --git a/SabreTools.Serialization.Test/Deserializers/AttractModeTests.cs b/SabreTools.Serialization.Test/Deserializers/AttractModeTests.cs index b9509c76..5732be24 100644 --- a/SabreTools.Serialization.Test/Deserializers/AttractModeTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/AttractModeTests.cs @@ -36,15 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.AttractMode(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into a single, malformatted header line - Assert.NotNull(actual); - Assert.NotNull(actual.Header); - var col = Assert.Single(actual.Header); - Assert.Equal(1024, col.Length); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } [Fact] @@ -74,15 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.AttractMode(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into a single, malformatted header line - Assert.NotNull(actual); - Assert.NotNull(actual.Header); - var col = Assert.Single(actual.Header); - Assert.Equal(1024, col.Length); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/ClrMameProTests.cs b/SabreTools.Serialization.Test/Deserializers/ClrMameProTests.cs index 9dae0553..3dd58f86 100644 --- a/SabreTools.Serialization.Test/Deserializers/ClrMameProTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/ClrMameProTests.cs @@ -36,13 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.ClrMamePro(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Equal(default, actual.ClrMamePro); - Assert.NotNull(actual.Game); - Assert.Empty(actual.Game); + Assert.Null(actual); } [Fact] @@ -72,13 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.ClrMamePro(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Equal(default, actual.ClrMamePro); - Assert.NotNull(actual.Game); - Assert.Empty(actual.Game); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/DosCenterTests.cs b/SabreTools.Serialization.Test/Deserializers/DosCenterTests.cs index f47d34a9..ea676dd7 100644 --- a/SabreTools.Serialization.Test/Deserializers/DosCenterTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/DosCenterTests.cs @@ -36,13 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.DosCenter(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Equal(default, actual.DosCenter); - Assert.NotNull(actual.Game); - Assert.Empty(actual.Game); + Assert.Null(actual); } [Fact] @@ -72,13 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.DosCenter(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Equal(default, actual.DosCenter); - Assert.NotNull(actual.Game); - Assert.Empty(actual.Game); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/EverdriveSMDBTests.cs b/SabreTools.Serialization.Test/Deserializers/EverdriveSMDBTests.cs index 231d9217..5def34a9 100644 --- a/SabreTools.Serialization.Test/Deserializers/EverdriveSMDBTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/EverdriveSMDBTests.cs @@ -36,12 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.EverdriveSMDB(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } [Fact] @@ -71,12 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.EverdriveSMDB(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/ListromTests.cs b/SabreTools.Serialization.Test/Deserializers/ListromTests.cs index 26a1eeda..79c86335 100644 --- a/SabreTools.Serialization.Test/Deserializers/ListromTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/ListromTests.cs @@ -36,12 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.Listrom(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.NotNull(actual.Set); - Assert.Empty(actual.Set); + Assert.Null(actual); } [Fact] @@ -71,12 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.Listrom(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.NotNull(actual.Set); - Assert.Empty(actual.Set); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/RomCenterTests.cs b/SabreTools.Serialization.Test/Deserializers/RomCenterTests.cs index e8ebeafc..2e9d9734 100644 --- a/SabreTools.Serialization.Test/Deserializers/RomCenterTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/RomCenterTests.cs @@ -36,14 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.RomCenter(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Null(actual.Credits); - Assert.Null(actual.Dat); - Assert.Null(actual.Emulator); - Assert.Null(actual.Games); + Assert.Null(actual); } [Fact] @@ -73,14 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.RomCenter(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into an empty model - Assert.NotNull(actual); - Assert.Null(actual.Credits); - Assert.Null(actual.Dat); - Assert.Null(actual.Emulator); - Assert.Null(actual.Games); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization.Test/Deserializers/SeparatedValueTests.cs b/SabreTools.Serialization.Test/Deserializers/SeparatedValueTests.cs index 0abfb8da..b43cee66 100644 --- a/SabreTools.Serialization.Test/Deserializers/SeparatedValueTests.cs +++ b/SabreTools.Serialization.Test/Deserializers/SeparatedValueTests.cs @@ -36,15 +36,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.SeparatedValue(); var actual = deserializer.Deserialize(data, offset); - - // TODO: Unexpected result - // Turns into a single, malformatted header line - Assert.NotNull(actual); - Assert.NotNull(actual.Header); - var col = Assert.Single(actual.Header); - Assert.Equal(1024, col.Length); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } [Fact] @@ -74,15 +66,7 @@ namespace SabreTools.Serialization.Test.Deserializers var deserializer = new Serialization.Deserializers.SeparatedValue(); var actual = deserializer.Deserialize(data); - - // TODO: Unexpected result - // Turns into a single, malformatted header line - Assert.NotNull(actual); - Assert.NotNull(actual.Header); - var col = Assert.Single(actual.Header); - Assert.Equal(1024, col.Length); - Assert.NotNull(actual.Row); - Assert.Empty(actual.Row); + Assert.Null(actual); } } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/AttractMode.cs b/SabreTools.Serialization/Deserializers/AttractMode.cs index ec86b32b..70882d11 100644 --- a/SabreTools.Serialization/Deserializers/AttractMode.cs +++ b/SabreTools.Serialization/Deserializers/AttractMode.cs @@ -111,8 +111,13 @@ namespace SabreTools.Serialization.Deserializers } // Assign the rows to the Dat and return - dat.Row = [.. rows]; - return dat; + if (rows.Count > 0) + { + dat.Row = [.. rows]; + return dat; + } + + return null; } #endregion diff --git a/SabreTools.Serialization/Deserializers/ClrMamePro.cs b/SabreTools.Serialization/Deserializers/ClrMamePro.cs index d31f9a50..70d9d0ee 100644 --- a/SabreTools.Serialization/Deserializers/ClrMamePro.cs +++ b/SabreTools.Serialization/Deserializers/ClrMamePro.cs @@ -381,8 +381,13 @@ namespace SabreTools.Serialization.Deserializers } // Add extra pieces and return - dat.Game = [.. games]; - return dat; + if (games.Count > 0) + { + dat.Game = [.. games]; + return dat; + } + + return null; } /// diff --git a/SabreTools.Serialization/Deserializers/DosCenter.cs b/SabreTools.Serialization/Deserializers/DosCenter.cs index 58a3633d..0eef367f 100644 --- a/SabreTools.Serialization/Deserializers/DosCenter.cs +++ b/SabreTools.Serialization/Deserializers/DosCenter.cs @@ -142,8 +142,13 @@ namespace SabreTools.Serialization.Deserializers } // Add extra pieces and return - dat.Game = [.. games]; - return dat; + if (games.Count > 0) + { + dat.Game = [.. games]; + return dat; + } + + return null; } /// diff --git a/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs b/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs index 317d7d11..b6ddafeb 100644 --- a/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs +++ b/SabreTools.Serialization/Deserializers/EverdriveSMDB.cs @@ -58,8 +58,13 @@ namespace SabreTools.Serialization.Deserializers } // Assign the rows to the Dat and return - dat.Row = [.. rows]; - return dat; + if (rows.Count > 0) + { + dat.Row = [.. rows]; + return dat; + } + + return null; } } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/Listrom.cs b/SabreTools.Serialization/Deserializers/Listrom.cs index 9b9cadea..a52858bc 100644 --- a/SabreTools.Serialization/Deserializers/Listrom.cs +++ b/SabreTools.Serialization/Deserializers/Listrom.cs @@ -55,41 +55,25 @@ namespace SabreTools.Serialization.Deserializers // Set lines are unique if (line.StartsWith("ROMs required for driver")) { -#if NETFRAMEWORK string driver = line.Substring("ROMs required for driver".Length).Trim('"', ' ', '.'); -#else - string driver = line["ROMs required for driver".Length..].Trim('"', ' ', '.'); -#endif set = new Set { Driver = driver }; continue; } else if (line.StartsWith("No ROMs required for driver")) { -#if NETFRAMEWORK string driver = line.Substring("No ROMs required for driver".Length).Trim('"', ' ', '.'); -#else - string driver = line["No ROMs required for driver".Length..].Trim('"', ' ', '.'); -#endif set = new Set { Driver = driver }; continue; } else if (line.StartsWith("ROMs required for device")) { -#if NETFRAMEWORK string device = line.Substring("ROMs required for device".Length).Trim('"', ' ', '.'); -#else - string device = line["ROMs required for device".Length..].Trim('"', ' ', '.'); -#endif set = new Set { Device = device }; continue; } else if (line.StartsWith("No ROMs required for device")) { -#if NETFRAMEWORK string device = line.Substring("No ROMs required for device".Length).Trim('"', ' ', '.'); -#else - string device = line["No ROMs required for device".Length..].Trim('"', ' ', '.'); -#endif set = new Set { Device = device }; continue; } @@ -120,11 +104,7 @@ namespace SabreTools.Serialization.Deserializers // Read the name and set the rest of the line for processing string name = lineParts[0]; -#if NETFRAMEWORK string trimmedLine = line.Substring(name.Length); -#else - string trimmedLine = line[name.Length..]; -#endif if (trimmedLine == null) continue; @@ -141,53 +121,31 @@ namespace SabreTools.Serialization.Deserializers // Normal CHD (Name, MD5/SHA1) case 1: row.Name = name; -#if NETFRAMEWORK if (line.Contains("MD5(")) row.MD5 = lineParts[0].Substring("MD5".Length).Trim('(', ')'); else row.SHA1 = lineParts[0].Substring("SHA1".Length).Trim('(', ')'); -#else - if (line.Contains("MD5(")) - row.MD5 = lineParts[0]["MD5".Length..].Trim('(', ')'); - else - row.SHA1 = lineParts[0]["SHA1".Length..].Trim('(', ')'); -#endif break; // Normal ROM (Name, Size, CRC, MD5/SHA1) case 3 when line.Contains("CRC"): row.Name = name; row.Size = lineParts[0]; -#if NETFRAMEWORK row.CRC = lineParts[1].Substring("CRC".Length).Trim('(', ')'); if (line.Contains("MD5(")) row.MD5 = lineParts[2].Substring("MD5".Length).Trim('(', ')'); else row.SHA1 = lineParts[2].Substring("SHA1".Length).Trim('(', ')'); -#else - row.CRC = lineParts[1]["CRC".Length..].Trim('(', ')'); - if (line.Contains("MD5(")) - row.MD5 = lineParts[2]["MD5".Length..].Trim('(', ')'); - else - row.SHA1 = lineParts[2]["SHA1".Length..].Trim('(', ')'); -#endif break; // Bad CHD (Name, BAD, SHA1, BAD_DUMP) case 3 when line.Contains("BAD_DUMP"): row.Name = name; row.Bad = true; -#if NETFRAMEWORK if (line.Contains("MD5(")) row.MD5 = lineParts[1].Substring("MD5".Length).Trim('(', ')'); else row.SHA1 = lineParts[1].Substring("SHA1".Length).Trim('(', ')'); -#else - if (line.Contains("MD5(")) - row.MD5 = lineParts[1]["MD5".Length..].Trim('(', ')'); - else - row.SHA1 = lineParts[1]["SHA1".Length..].Trim('(', ')'); -#endif break; // Nodump CHD (Name, NO GOOD DUMP KNOWN) @@ -201,19 +159,11 @@ namespace SabreTools.Serialization.Deserializers row.Name = name; row.Size = lineParts[0]; row.Bad = true; -#if NETFRAMEWORK row.CRC = lineParts[2].Substring("CRC".Length).Trim('(', ')'); if (line.Contains("MD5(")) row.MD5 = lineParts[3].Substring("MD5".Length).Trim('(', ')'); else row.SHA1 = lineParts[3].Substring("SHA1".Length).Trim('(', ')'); -#else - row.CRC = lineParts[2]["CRC".Length..].Trim('(', ')'); - if (line.Contains("MD5(")) - row.MD5 = lineParts[3]["MD5".Length..].Trim('(', ')'); - else - row.SHA1 = lineParts[3]["SHA1".Length..].Trim('(', ')'); -#endif break; // Nodump ROM (Name, Size, NO GOOD DUMP KNOWN) @@ -242,8 +192,13 @@ namespace SabreTools.Serialization.Deserializers } // Add extra pieces and return - dat.Set = [.. sets]; - return dat; + if (sets.Count > 0) + { + dat.Set = [.. sets]; + return dat; + } + + return null; } } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/RomCenter.cs b/SabreTools.Serialization/Deserializers/RomCenter.cs index b11f4bcf..d8e792d6 100644 --- a/SabreTools.Serialization/Deserializers/RomCenter.cs +++ b/SabreTools.Serialization/Deserializers/RomCenter.cs @@ -174,10 +174,13 @@ namespace SabreTools.Serialization.Deserializers } // Add extra pieces and return - if (dat.Games != null) + if (dat.Games != null && roms.Count > 0) + { dat.Games.Rom = [.. roms]; + return dat; + } - return dat; + return null; } } } \ No newline at end of file diff --git a/SabreTools.Serialization/Deserializers/SeparatedValue.cs b/SabreTools.Serialization/Deserializers/SeparatedValue.cs index f058e348..d31feb81 100644 --- a/SabreTools.Serialization/Deserializers/SeparatedValue.cs +++ b/SabreTools.Serialization/Deserializers/SeparatedValue.cs @@ -172,8 +172,13 @@ namespace SabreTools.Serialization.Deserializers } // Assign the rows to the Dat and return - dat.Row = [.. rows]; - return dat; + if (rows.Count > 0) + { + dat.Row = [.. rows]; + return dat; + } + + return null; } #endregion