mirror of
https://github.com/claunia/SabreTools.git
synced 2025-12-16 19:14:27 +00:00
99 lines
5.5 KiB
C#
99 lines
5.5 KiB
C#
using SabreTools.DatFiles;
|
|
using SabreTools.DatTools;
|
|
using Xunit;
|
|
|
|
namespace SabreTools.Test
|
|
{
|
|
public class WriterTests
|
|
{
|
|
[Theory]
|
|
[InlineData(DatFormat.CSV, "csv")]
|
|
[InlineData(DatFormat.ClrMamePro, "dat")]
|
|
[InlineData(DatFormat.RomCenter, "dat")]
|
|
[InlineData(DatFormat.DOSCenter, "dat")]
|
|
[InlineData(DatFormat.SabreJSON, "json")]
|
|
[InlineData(DatFormat.RedumpMD2, "md2")]
|
|
[InlineData(DatFormat.RedumpMD4, "md4")]
|
|
[InlineData(DatFormat.RedumpMD5, "md5")]
|
|
[InlineData(DatFormat.RedumpSFV, "sfv")]
|
|
[InlineData(DatFormat.RedumpSHA1, "sha1")]
|
|
[InlineData(DatFormat.RedumpSHA256, "sha256")]
|
|
[InlineData(DatFormat.RedumpSHA384, "sha384")]
|
|
[InlineData(DatFormat.RedumpSHA512, "sha512")]
|
|
[InlineData(DatFormat.RedumpSpamSum, "spamsum")]
|
|
[InlineData(DatFormat.SSV, "ssv")]
|
|
[InlineData(DatFormat.TSV, "tsv")]
|
|
[InlineData(DatFormat.AttractMode, "txt")]
|
|
[InlineData(DatFormat.Listrom, "txt")]
|
|
[InlineData(DatFormat.MissFile, "txt")]
|
|
[InlineData(DatFormat.EverdriveSMDB, "txt")]
|
|
[InlineData(DatFormat.Logiqx, "xml")]
|
|
[InlineData(DatFormat.LogiqxDeprecated, "xml")]
|
|
[InlineData(DatFormat.SabreXML, "xml")]
|
|
[InlineData(DatFormat.SoftwareList, "xml")]
|
|
[InlineData(DatFormat.Listxml, "xml")]
|
|
[InlineData(DatFormat.OfflineList, "xml")]
|
|
[InlineData(DatFormat.OpenMSX, "xml")]
|
|
[InlineData(DatFormat.ArchiveDotOrg, "xml")]
|
|
public void CreateOutFileNames_SingleFormat(DatFormat datFormat, string extension)
|
|
{
|
|
// Create the empty DatHeader
|
|
var datHeader = new DatHeader();
|
|
datHeader.SetFieldValue<string?>(DatHeader.FileNameKey, "test.dat");
|
|
datHeader.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, datFormat);
|
|
|
|
// Invoke the method
|
|
string outDir = "C:\\Test";
|
|
var actual = Writer.CreateOutFileNames(datHeader, outDir, overwrite: true);
|
|
|
|
// Check the result
|
|
string expected = $"{outDir}{System.IO.Path.DirectorySeparatorChar}test.{extension}";
|
|
Assert.Single(actual);
|
|
Assert.Equal(expected, actual[datFormat]);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateOutFileNames_AllFormats()
|
|
{
|
|
// Create the empty DatHeader
|
|
var datHeader = new DatHeader();
|
|
datHeader.SetFieldValue<string?>(DatHeader.FileNameKey, "test.dat");
|
|
datHeader.SetFieldValue<DatFormat>(DatHeader.DatFormatKey, DatFormat.ALL);
|
|
|
|
// Invoke the method
|
|
string outDir = "C:\\Test";
|
|
var actual = Writer.CreateOutFileNames(datHeader, outDir, overwrite: true);
|
|
|
|
// Check the normalized results
|
|
Assert.Equal(28, actual.Count);
|
|
Assert.Equal("C:\\Test\\test.csv", actual[DatFormat.CSV].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.dat", actual[DatFormat.ClrMamePro].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.rc.dat", actual[DatFormat.RomCenter].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.dc.dat", actual[DatFormat.DOSCenter].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.json", actual[DatFormat.SabreJSON].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.md2", actual[DatFormat.RedumpMD2].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.md4", actual[DatFormat.RedumpMD4].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.md5", actual[DatFormat.RedumpMD5].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sfv", actual[DatFormat.RedumpSFV].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sha1", actual[DatFormat.RedumpSHA1].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sha256", actual[DatFormat.RedumpSHA256].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sha384", actual[DatFormat.RedumpSHA384].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sha512", actual[DatFormat.RedumpSHA512].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.spamsum", actual[DatFormat.RedumpSpamSum].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.ssv", actual[DatFormat.SSV].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.tsv", actual[DatFormat.TSV].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.txt", actual[DatFormat.AttractMode].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.lr.txt", actual[DatFormat.Listrom].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.miss.txt", actual[DatFormat.MissFile].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.smdb.txt", actual[DatFormat.EverdriveSMDB].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.xml", actual[DatFormat.Logiqx].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.xml", actual[DatFormat.LogiqxDeprecated].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sd.xml", actual[DatFormat.SabreXML].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.sl.xml", actual[DatFormat.SoftwareList].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.mame.xml", actual[DatFormat.Listxml].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.ol.xml", actual[DatFormat.OfflineList].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.msx.xml", actual[DatFormat.OpenMSX].Replace('/', '\\'));
|
|
Assert.Equal("C:\\Test\\test.ado.xml", actual[DatFormat.ArchiveDotOrg].Replace('/', '\\'));
|
|
}
|
|
}
|
|
} |