diff --git a/SabreTools.DatFiles/Formats/ArchiveDotOrg.cs b/SabreTools.DatFiles/Formats/ArchiveDotOrg.cs
index 6462f035..509d8019 100644
--- a/SabreTools.DatFiles/Formats/ArchiveDotOrg.cs
+++ b/SabreTools.DatFiles/Formats/ArchiveDotOrg.cs
@@ -19,6 +19,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public ArchiveDotOrg(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.ArchiveDotOrg);
}
}
}
diff --git a/SabreTools.DatFiles/Formats/AttractMode.cs b/SabreTools.DatFiles/Formats/AttractMode.cs
index 39a8a134..b4c43f30 100644
--- a/SabreTools.DatFiles/Formats/AttractMode.cs
+++ b/SabreTools.DatFiles/Formats/AttractMode.cs
@@ -20,6 +20,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public AttractMode(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.AttractMode);
}
///
diff --git a/SabreTools.DatFiles/Formats/ClrMamePro.cs b/SabreTools.DatFiles/Formats/ClrMamePro.cs
index 004ee237..54c88782 100644
--- a/SabreTools.DatFiles/Formats/ClrMamePro.cs
+++ b/SabreTools.DatFiles/Formats/ClrMamePro.cs
@@ -39,6 +39,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public ClrMamePro(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.ClrMamePro);
}
///
diff --git a/SabreTools.DatFiles/Formats/DosCenter.cs b/SabreTools.DatFiles/Formats/DosCenter.cs
index 57e47a2a..454e8df6 100644
--- a/SabreTools.DatFiles/Formats/DosCenter.cs
+++ b/SabreTools.DatFiles/Formats/DosCenter.cs
@@ -21,6 +21,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public DosCenter(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.DOSCenter);
}
///
diff --git a/SabreTools.DatFiles/Formats/EverdriveSmdb.cs b/SabreTools.DatFiles/Formats/EverdriveSmdb.cs
index 6e8ec37d..7bc952ac 100644
--- a/SabreTools.DatFiles/Formats/EverdriveSmdb.cs
+++ b/SabreTools.DatFiles/Formats/EverdriveSmdb.cs
@@ -21,6 +21,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public EverdriveSMDB(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.EverdriveSMDB);
}
///
diff --git a/SabreTools.DatFiles/Formats/Hashfile.cs b/SabreTools.DatFiles/Formats/Hashfile.cs
index 33010261..75a2900f 100644
--- a/SabreTools.DatFiles/Formats/Hashfile.cs
+++ b/SabreTools.DatFiles/Formats/Hashfile.cs
@@ -90,6 +90,7 @@ namespace SabreTools.DatFiles.Formats
public SfvFile(DatFile? datFile) : base(datFile)
{
_hash = HashType.CRC32;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSFV);
}
///
@@ -131,6 +132,7 @@ namespace SabreTools.DatFiles.Formats
public Md2File(DatFile? datFile) : base(datFile)
{
_hash = HashType.MD2;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD2);
}
///
@@ -172,6 +174,7 @@ namespace SabreTools.DatFiles.Formats
public Md4File(DatFile? datFile) : base(datFile)
{
_hash = HashType.MD4;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD4);
}
///
@@ -215,6 +218,7 @@ namespace SabreTools.DatFiles.Formats
public Md5File(DatFile? datFile) : base(datFile)
{
_hash = HashType.MD5;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpMD5);
}
///
@@ -268,6 +272,7 @@ namespace SabreTools.DatFiles.Formats
public Sha1File(DatFile? datFile) : base(datFile)
{
_hash = HashType.SHA1;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA1);
}
///
@@ -320,6 +325,7 @@ namespace SabreTools.DatFiles.Formats
public Sha256File(DatFile? datFile) : base(datFile)
{
_hash = HashType.SHA256;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA256);
}
///
@@ -366,6 +372,7 @@ namespace SabreTools.DatFiles.Formats
public Sha384File(DatFile? datFile) : base(datFile)
{
_hash = HashType.SHA384;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA384);
}
///
@@ -407,6 +414,7 @@ namespace SabreTools.DatFiles.Formats
public Sha512File(DatFile? datFile) : base(datFile)
{
_hash = HashType.SHA512;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSHA512);
}
///
@@ -449,6 +457,7 @@ namespace SabreTools.DatFiles.Formats
public SpamSumFile(DatFile? datFile) : base(datFile)
{
_hash = HashType.SpamSum;
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RedumpSpamSum);
}
///
diff --git a/SabreTools.DatFiles/Formats/Listrom.cs b/SabreTools.DatFiles/Formats/Listrom.cs
index 4971cd5e..9aa66566 100644
--- a/SabreTools.DatFiles/Formats/Listrom.cs
+++ b/SabreTools.DatFiles/Formats/Listrom.cs
@@ -22,6 +22,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public Listrom(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.Listrom);
}
///
diff --git a/SabreTools.DatFiles/Formats/Listxml.cs b/SabreTools.DatFiles/Formats/Listxml.cs
index 16082356..ea574e8a 100644
--- a/SabreTools.DatFiles/Formats/Listxml.cs
+++ b/SabreTools.DatFiles/Formats/Listxml.cs
@@ -216,6 +216,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public Listxml(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.Listxml);
}
///
diff --git a/SabreTools.DatFiles/Formats/Logiqx.cs b/SabreTools.DatFiles/Formats/Logiqx.cs
index 2d3d96e4..e6d5653b 100644
--- a/SabreTools.DatFiles/Formats/Logiqx.cs
+++ b/SabreTools.DatFiles/Formats/Logiqx.cs
@@ -253,6 +253,10 @@ namespace SabreTools.DatFiles.Formats
public Logiqx(DatFile? datFile, bool useGame) : base(datFile)
{
_useGame = useGame;
+ if (useGame)
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.LogiqxDeprecated);
+ else
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.Logiqx);
}
///
diff --git a/SabreTools.DatFiles/Formats/Missfile.cs b/SabreTools.DatFiles/Formats/Missfile.cs
index b665e590..ac606c1a 100644
--- a/SabreTools.DatFiles/Formats/Missfile.cs
+++ b/SabreTools.DatFiles/Formats/Missfile.cs
@@ -21,6 +21,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public Missfile(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.MissFile);
}
///
diff --git a/SabreTools.DatFiles/Formats/OfflineList.cs b/SabreTools.DatFiles/Formats/OfflineList.cs
index b6f9a5fc..8d453fc1 100644
--- a/SabreTools.DatFiles/Formats/OfflineList.cs
+++ b/SabreTools.DatFiles/Formats/OfflineList.cs
@@ -21,6 +21,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public OfflineList(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.OfflineList);
}
///
diff --git a/SabreTools.DatFiles/Formats/OpenMSX.cs b/SabreTools.DatFiles/Formats/OpenMSX.cs
index 3e88cb8f..15671827 100644
--- a/SabreTools.DatFiles/Formats/OpenMSX.cs
+++ b/SabreTools.DatFiles/Formats/OpenMSX.cs
@@ -60,6 +60,7 @@ The softwaredb.xml file contains information about rom mapper types
/// Parent DatFile to copy from
public OpenMSX(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.OpenMSX);
}
///
diff --git a/SabreTools.DatFiles/Formats/RomCenter.cs b/SabreTools.DatFiles/Formats/RomCenter.cs
index 5f556caf..00fb80fa 100644
--- a/SabreTools.DatFiles/Formats/RomCenter.cs
+++ b/SabreTools.DatFiles/Formats/RomCenter.cs
@@ -21,6 +21,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public RomCenter(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.RomCenter);
}
///
diff --git a/SabreTools.DatFiles/Formats/SabreJSON.cs b/SabreTools.DatFiles/Formats/SabreJSON.cs
index 344a79e9..a06a6d17 100644
--- a/SabreTools.DatFiles/Formats/SabreJSON.cs
+++ b/SabreTools.DatFiles/Formats/SabreJSON.cs
@@ -28,6 +28,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public SabreJSON(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SabreJSON);
}
///
diff --git a/SabreTools.DatFiles/Formats/SabreXML.cs b/SabreTools.DatFiles/Formats/SabreXML.cs
index d7606cb3..4e8503c0 100644
--- a/SabreTools.DatFiles/Formats/SabreXML.cs
+++ b/SabreTools.DatFiles/Formats/SabreXML.cs
@@ -25,6 +25,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public SabreXML(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SabreXML);
}
///
diff --git a/SabreTools.DatFiles/Formats/SeparatedValue.cs b/SabreTools.DatFiles/Formats/SeparatedValue.cs
index 2af34e61..aa2c58c9 100644
--- a/SabreTools.DatFiles/Formats/SeparatedValue.cs
+++ b/SabreTools.DatFiles/Formats/SeparatedValue.cs
@@ -141,6 +141,7 @@ namespace SabreTools.DatFiles.Formats
public CommaSeparatedValue(DatFile? datFile) : base(datFile)
{
_delim = ',';
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.CSV);
}
}
@@ -156,6 +157,7 @@ namespace SabreTools.DatFiles.Formats
public SemicolonSeparatedValue(DatFile? datFile) : base(datFile)
{
_delim = ';';
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SSV);
}
}
@@ -171,6 +173,7 @@ namespace SabreTools.DatFiles.Formats
public TabSeparatedValue(DatFile? datFile) : base(datFile)
{
_delim = '\t';
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.TSV);
}
}
}
diff --git a/SabreTools.DatFiles/Formats/SoftwareList.cs b/SabreTools.DatFiles/Formats/SoftwareList.cs
index e18c12b5..1c56c8f5 100644
--- a/SabreTools.DatFiles/Formats/SoftwareList.cs
+++ b/SabreTools.DatFiles/Formats/SoftwareList.cs
@@ -96,6 +96,7 @@ namespace SabreTools.DatFiles.Formats
/// Parent DatFile to copy from
public SoftwareList(DatFile? datFile) : base(datFile)
{
+ Header.SetFieldValue(DatHeader.DatFormatKey, DatFormat.SoftwareList);
}
///
diff --git a/SabreTools.DatTools/Parser.cs b/SabreTools.DatTools/Parser.cs
index 68f70377..d566a156 100644
--- a/SabreTools.DatTools/Parser.cs
+++ b/SabreTools.DatTools/Parser.cs
@@ -155,13 +155,23 @@ namespace SabreTools.DatTools
///
/// Name of the file to be parsed
/// True if the error that is thrown should be thrown back to the caller, false otherwise
+ ///
+ /// Code must remove the existing format in order to ensure the format is derived
+ /// from the input file instead. This should be addressed later by either always
+ /// deriving the format, or by setting a flag for this to be done automatically.
+ //
public static DatFile ParseStatistics(string? filename, bool throwOnError = false)
{
// Null filenames are invalid
if (filename == null)
- return CreateDatFile();
+ {
+ DatFile empty = CreateDatFile();
+ empty.Header.RemoveField(DatHeader.DatFormatKey);
+ return empty;
+ }
DatFile datFile = CreateDatFile();
+ datFile.Header.RemoveField(DatHeader.DatFormatKey);
ParseInto(datFile, filename, statsOnly: true, throwOnError: throwOnError);
return datFile;
}
diff --git a/SabreTools.Test/ParserTests.cs b/SabreTools.Test/ParserTests.cs
index baa6ccd5..740ca120 100644
--- a/SabreTools.Test/ParserTests.cs
+++ b/SabreTools.Test/ParserTests.cs
@@ -8,6 +8,142 @@ namespace SabreTools.Test
{
public class ParserTests
{
+ [Fact]
+ public void CreateDatFile_Default_Logiqx()
+ {
+ var datFile = Parser.CreateDatFile();
+ Assert.Equal(DatFormat.Logiqx, datFile.Header.GetFieldValue(DatHeader.DatFormatKey));
+ Assert.Equal(0, datFile.Items.DatStatistics.TotalCount);
+ Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount);
+ }
+
+ [Theory]
+ [InlineData((DatFormat)0x00, DatFormat.Logiqx)]
+ [InlineData(DatFormat.Logiqx, DatFormat.Logiqx)]
+ [InlineData(DatFormat.LogiqxDeprecated, DatFormat.LogiqxDeprecated)]
+ [InlineData(DatFormat.SoftwareList, DatFormat.SoftwareList)]
+ [InlineData(DatFormat.Listxml, DatFormat.Listxml)]
+ [InlineData(DatFormat.OfflineList, DatFormat.OfflineList)]
+ [InlineData(DatFormat.SabreXML, DatFormat.SabreXML)]
+ [InlineData(DatFormat.OpenMSX, DatFormat.OpenMSX)]
+ [InlineData(DatFormat.ArchiveDotOrg, DatFormat.ArchiveDotOrg)]
+ [InlineData(DatFormat.ClrMamePro, DatFormat.ClrMamePro)]
+ [InlineData(DatFormat.RomCenter, DatFormat.RomCenter)]
+ [InlineData(DatFormat.DOSCenter, DatFormat.DOSCenter)]
+ [InlineData(DatFormat.AttractMode, DatFormat.AttractMode)]
+ [InlineData(DatFormat.MissFile, DatFormat.MissFile)]
+ [InlineData(DatFormat.CSV, DatFormat.CSV)]
+ [InlineData(DatFormat.SSV, DatFormat.SSV)]
+ [InlineData(DatFormat.TSV, DatFormat.TSV)]
+ [InlineData(DatFormat.Listrom, DatFormat.Listrom)]
+ [InlineData(DatFormat.EverdriveSMDB, DatFormat.EverdriveSMDB)]
+ [InlineData(DatFormat.SabreJSON, DatFormat.SabreJSON)]
+ [InlineData(DatFormat.RedumpSFV, DatFormat.RedumpSFV)]
+ [InlineData(DatFormat.RedumpMD2, DatFormat.RedumpMD2)]
+ [InlineData(DatFormat.RedumpMD4, DatFormat.RedumpMD4)]
+ [InlineData(DatFormat.RedumpMD5, DatFormat.RedumpMD5)]
+ [InlineData(DatFormat.RedumpSHA1, DatFormat.RedumpSHA1)]
+ [InlineData(DatFormat.RedumpSHA256, DatFormat.RedumpSHA256)]
+ [InlineData(DatFormat.RedumpSHA384, DatFormat.RedumpSHA384)]
+ [InlineData(DatFormat.RedumpSHA512, DatFormat.RedumpSHA512)]
+ [InlineData(DatFormat.RedumpSpamSum, DatFormat.RedumpSpamSum)]
+ public void CreateDatFile_Format_NoBaseDat(DatFormat datFormat, DatFormat expected)
+ {
+ var datFile = Parser.CreateDatFile(datFormat, baseDat: null);
+ Assert.Equal(expected, datFile.Header.GetFieldValue(DatHeader.DatFormatKey));
+ Assert.Equal(0, datFile.Items.DatStatistics.TotalCount);
+ Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount);
+ }
+
+ [Theory]
+ [InlineData((DatFormat)0x00, DatFormat.Logiqx)]
+ [InlineData(DatFormat.Logiqx, DatFormat.Logiqx)]
+ [InlineData(DatFormat.LogiqxDeprecated, DatFormat.LogiqxDeprecated)]
+ [InlineData(DatFormat.SoftwareList, DatFormat.SoftwareList)]
+ [InlineData(DatFormat.Listxml, DatFormat.Listxml)]
+ [InlineData(DatFormat.OfflineList, DatFormat.OfflineList)]
+ [InlineData(DatFormat.SabreXML, DatFormat.SabreXML)]
+ [InlineData(DatFormat.OpenMSX, DatFormat.OpenMSX)]
+ [InlineData(DatFormat.ArchiveDotOrg, DatFormat.ArchiveDotOrg)]
+ [InlineData(DatFormat.ClrMamePro, DatFormat.ClrMamePro)]
+ [InlineData(DatFormat.RomCenter, DatFormat.RomCenter)]
+ [InlineData(DatFormat.DOSCenter, DatFormat.DOSCenter)]
+ [InlineData(DatFormat.AttractMode, DatFormat.AttractMode)]
+ [InlineData(DatFormat.MissFile, DatFormat.MissFile)]
+ [InlineData(DatFormat.CSV, DatFormat.CSV)]
+ [InlineData(DatFormat.SSV, DatFormat.SSV)]
+ [InlineData(DatFormat.TSV, DatFormat.TSV)]
+ [InlineData(DatFormat.Listrom, DatFormat.Listrom)]
+ [InlineData(DatFormat.EverdriveSMDB, DatFormat.EverdriveSMDB)]
+ [InlineData(DatFormat.SabreJSON, DatFormat.SabreJSON)]
+ [InlineData(DatFormat.RedumpSFV, DatFormat.RedumpSFV)]
+ [InlineData(DatFormat.RedumpMD2, DatFormat.RedumpMD2)]
+ [InlineData(DatFormat.RedumpMD4, DatFormat.RedumpMD4)]
+ [InlineData(DatFormat.RedumpMD5, DatFormat.RedumpMD5)]
+ [InlineData(DatFormat.RedumpSHA1, DatFormat.RedumpSHA1)]
+ [InlineData(DatFormat.RedumpSHA256, DatFormat.RedumpSHA256)]
+ [InlineData(DatFormat.RedumpSHA384, DatFormat.RedumpSHA384)]
+ [InlineData(DatFormat.RedumpSHA512, DatFormat.RedumpSHA512)]
+ [InlineData(DatFormat.RedumpSpamSum, DatFormat.RedumpSpamSum)]
+ public void CreateDatFile_Format_BaseDat(DatFormat datFormat, DatFormat expected)
+ {
+ var baseDat = Parser.CreateDatFile();
+ baseDat.Header.SetFieldValue(DatHeader.FileNameKey, "filename");
+
+ var datFile = Parser.CreateDatFile(datFormat, baseDat);
+ Assert.Equal(expected, datFile.Header.GetFieldValue(DatHeader.DatFormatKey));
+ Assert.Equal("filename", datFile.Header.GetFieldValue(DatHeader.FileNameKey));
+ Assert.Equal(0, datFile.Items.DatStatistics.TotalCount);
+ Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount);
+ }
+
+ [Theory]
+ [InlineData((DatFormat)0x00, (DatFormat)0x00)] // I think this is a bug
+ [InlineData(DatFormat.Logiqx, DatFormat.Logiqx)]
+ [InlineData(DatFormat.LogiqxDeprecated, DatFormat.LogiqxDeprecated)]
+ [InlineData(DatFormat.SoftwareList, DatFormat.SoftwareList)]
+ [InlineData(DatFormat.Listxml, DatFormat.Listxml)]
+ [InlineData(DatFormat.OfflineList, DatFormat.OfflineList)]
+ [InlineData(DatFormat.SabreXML, DatFormat.SabreXML)]
+ [InlineData(DatFormat.OpenMSX, DatFormat.OpenMSX)]
+ [InlineData(DatFormat.ArchiveDotOrg, DatFormat.ArchiveDotOrg)]
+ [InlineData(DatFormat.ClrMamePro, DatFormat.ClrMamePro)]
+ [InlineData(DatFormat.RomCenter, DatFormat.RomCenter)]
+ [InlineData(DatFormat.DOSCenter, DatFormat.DOSCenter)]
+ [InlineData(DatFormat.AttractMode, DatFormat.AttractMode)]
+ [InlineData(DatFormat.MissFile, DatFormat.MissFile)]
+ [InlineData(DatFormat.CSV, DatFormat.CSV)]
+ [InlineData(DatFormat.SSV, DatFormat.SSV)]
+ [InlineData(DatFormat.TSV, DatFormat.TSV)]
+ [InlineData(DatFormat.Listrom, DatFormat.Listrom)]
+ [InlineData(DatFormat.EverdriveSMDB, DatFormat.EverdriveSMDB)]
+ [InlineData(DatFormat.SabreJSON, DatFormat.SabreJSON)]
+ [InlineData(DatFormat.RedumpSFV, DatFormat.RedumpSFV)]
+ [InlineData(DatFormat.RedumpMD2, DatFormat.RedumpMD2)]
+ [InlineData(DatFormat.RedumpMD4, DatFormat.RedumpMD4)]
+ [InlineData(DatFormat.RedumpMD5, DatFormat.RedumpMD5)]
+ [InlineData(DatFormat.RedumpSHA1, DatFormat.RedumpSHA1)]
+ [InlineData(DatFormat.RedumpSHA256, DatFormat.RedumpSHA256)]
+ [InlineData(DatFormat.RedumpSHA384, DatFormat.RedumpSHA384)]
+ [InlineData(DatFormat.RedumpSHA512, DatFormat.RedumpSHA512)]
+ [InlineData(DatFormat.RedumpSpamSum, DatFormat.RedumpSpamSum)]
+ public void CreateDatFile_Format_FromHeader(DatFormat datFormat, DatFormat expected)
+ {
+ DatHeader datHeader = new DatHeader();
+ datHeader.SetFieldValue(DatHeader.DatFormatKey, datFormat);
+ datHeader.SetFieldValue(DatHeader.FileNameKey, "filename");
+
+ DatModifiers datModifiers = new DatModifiers();
+ datModifiers.Quotes = true;
+
+ var datFile = Parser.CreateDatFile(datHeader, datModifiers);
+ Assert.Equal(expected, datFile.Header.GetFieldValue(DatHeader.DatFormatKey));
+ Assert.Equal("filename", datFile.Header.GetFieldValue(DatHeader.FileNameKey));
+ Assert.True(datFile.Modifiers.Quotes);
+ Assert.Equal(0, datFile.Items.DatStatistics.TotalCount);
+ Assert.Equal(0, datFile.ItemsDB.DatStatistics.TotalCount);
+ }
+
[Theory]
[InlineData(null, (DatFormat)0x00, 0)]
[InlineData("test-logiqx.xml", DatFormat.Logiqx, 6)]
@@ -43,7 +179,7 @@ namespace SabreTools.Test
// For all filenames, add the local path for test data
if (filename != null)
filename = Path.Combine(Environment.CurrentDirectory, "TestData", filename);
-
+
var datFile = Parser.ParseStatistics(filename, throwOnError: true);
Assert.Equal(datFormat, datFile.Header.GetFieldValue(DatHeader.DatFormatKey));
Assert.Equal(totalCount, datFile.Items.DatStatistics.TotalCount);