2020-12-20 14:20:03 -08:00
|
|
|
using System;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using SabreTools.DatFiles;
|
|
|
|
|
using Xunit;
|
|
|
|
|
|
|
|
|
|
namespace SabreTools.Test.DatTools
|
|
|
|
|
{
|
|
|
|
|
public class ParserTests
|
|
|
|
|
{
|
2024-04-24 16:27:26 -04:00
|
|
|
[Theory]
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData(null, (DatFormat)0x00, 0)]
|
2020-12-20 21:18:02 -08:00
|
|
|
[InlineData("test-logiqx.xml", DatFormat.Logiqx, 6)]
|
2020-12-20 15:09:36 -08:00
|
|
|
//[InlineData(null, DatFormat.LogiqxDeprecated, 0)] // Not parsed separately
|
2024-03-19 15:54:41 -04:00
|
|
|
[InlineData("test-softwarelist.xml", DatFormat.SoftwareList, 6)]
|
2023-08-01 11:48:28 -04:00
|
|
|
[InlineData("test-listxml.xml", DatFormat.Listxml, 19)]
|
2020-12-20 22:22:55 -08:00
|
|
|
[InlineData("test-offlinelist.xml", DatFormat.OfflineList, 1)]
|
2020-12-20 22:26:55 -08:00
|
|
|
//[InlineData(null, DatFormat.SabreXML, 0)] // TODO: Create good-enough test file for this
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData("test-openmsx.xml", DatFormat.OpenMSX, 3)]
|
2021-07-19 10:39:21 -07:00
|
|
|
[InlineData("test-archivedotorg.xml", DatFormat.ArchiveDotOrg, 1)]
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData("test-cmp.dat", DatFormat.ClrMamePro, 6)]
|
2020-12-20 22:01:05 -08:00
|
|
|
[InlineData("test-romcenter.dat", DatFormat.RomCenter, 1)]
|
2020-12-20 21:18:02 -08:00
|
|
|
[InlineData("test-doscenter.dat", DatFormat.DOSCenter, 1)]
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData("test-attractmode.txt", DatFormat.AttractMode, 1)]
|
|
|
|
|
//[InlineData(null, DatFormat.MissFile, 0)] // Parsing is not supported
|
2020-12-20 22:26:55 -08:00
|
|
|
//[InlineData(null, DatFormat.CSV, 0)] // TODO: Create good-enough test file for this
|
|
|
|
|
//[InlineData(null, DatFormat.SSV, 0)] // TODO: Create good-enough test file for this
|
|
|
|
|
//[InlineData(null, DatFormat.TSV, 0)] // TODO: Create good-enough test file for this
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData("test-listrom.txt", DatFormat.Listrom, 6)]
|
|
|
|
|
[InlineData("test-smdb.txt", DatFormat.EverdriveSMDB, 1)]
|
2020-12-20 22:26:55 -08:00
|
|
|
//[InlineData(null, DatFormat.SabreJSON, 0)] // TODO: Create good-enough test file for this
|
2020-12-20 15:09:36 -08:00
|
|
|
[InlineData("test-sfv.sfv", DatFormat.RedumpSFV, 1)]
|
|
|
|
|
[InlineData("test-md5.md5", DatFormat.RedumpMD5, 1)]
|
|
|
|
|
[InlineData("test-sha1.sha1", DatFormat.RedumpSHA1, 1)]
|
|
|
|
|
[InlineData("test-sha256.sha256", DatFormat.RedumpSHA256, 1)]
|
|
|
|
|
[InlineData("test-sha384.sha384", DatFormat.RedumpSHA384, 1)]
|
|
|
|
|
[InlineData("test-sha512.sha512", DatFormat.RedumpSHA512, 1)]
|
|
|
|
|
[InlineData("test-spamsum.spamsum", DatFormat.RedumpSpamSum, 1)]
|
2024-03-05 13:32:49 -05:00
|
|
|
public void CreateAndParseTest(string? filename, DatFormat datFormat, int totalCount)
|
2020-12-20 14:20:03 -08:00
|
|
|
{
|
|
|
|
|
// For all filenames, add the local path for test data
|
|
|
|
|
if (filename != null)
|
|
|
|
|
filename = Path.Combine(Environment.CurrentDirectory, "TestData", filename);
|
|
|
|
|
|
2023-07-12 17:21:19 -04:00
|
|
|
var datFile = SabreTools.DatTools.Parser.CreateAndParse(filename, throwOnError: true);
|
2024-03-10 21:54:07 -04:00
|
|
|
Assert.Equal(datFormat, datFile.Header.GetFieldValue<DatFormat>(DatHeader.DatFormatKey));
|
2024-03-13 01:22:59 -04:00
|
|
|
Assert.Equal(totalCount, datFile.Items.DatStatistics.TotalCount);
|
2024-03-19 15:59:08 -04:00
|
|
|
Assert.Equal(totalCount, datFile.ItemsDB.DatStatistics.TotalCount);
|
2020-12-20 14:20:03 -08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|