mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-19 15:25:18 +00:00
Handle unexpected deserializer results
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user