Handle unexpected deserializer results

This commit is contained in:
Matt Nadareski
2024-11-27 14:04:20 -05:00
parent f828b57159
commit 5ae162400c
14 changed files with 61 additions and 168 deletions

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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);
}
}
}

View File

@@ -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

View File

@@ -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;
}
/// <summary>

View File

@@ -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;
}
/// <summary>

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}
}

View File

@@ -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