mirror of
https://github.com/SabreTools/MPF.git
synced 2026-02-03 21:29:27 +00:00
314 lines
9.6 KiB
C#
314 lines
9.6 KiB
C#
using System;
|
|
using System.IO;
|
|
using SabreTools.Data.Models.Logiqx;
|
|
using Xunit;
|
|
|
|
namespace MPF.Processors.Test
|
|
{
|
|
public class BaseProcessorTests
|
|
{
|
|
#region GetGeneratedFilenames
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilenames_NullSuffix_Standard()
|
|
{
|
|
string? filenameSuffix = null;
|
|
var actual = BaseProcessor.GetGeneratedFilenames(filenameSuffix);
|
|
|
|
Assert.Equal(4, actual.Count);
|
|
Assert.Equal("!protectionInfo.txt", actual[0]);
|
|
Assert.Equal("!submissionInfo.json", actual[1]);
|
|
Assert.Equal("!submissionInfo.json.gz", actual[2]);
|
|
Assert.Equal("!submissionInfo.txt", actual[3]);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilenames_EmptySuffix_Standard()
|
|
{
|
|
string? filenameSuffix = string.Empty;
|
|
var actual = BaseProcessor.GetGeneratedFilenames(filenameSuffix);
|
|
|
|
Assert.Equal(4, actual.Count);
|
|
Assert.Equal("!protectionInfo.txt", actual[0]);
|
|
Assert.Equal("!submissionInfo.json", actual[1]);
|
|
Assert.Equal("!submissionInfo.json.gz", actual[2]);
|
|
Assert.Equal("!submissionInfo.txt", actual[3]);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilenames_ValidSuffix_Modified()
|
|
{
|
|
string? filenameSuffix = "suffix";
|
|
var actual = BaseProcessor.GetGeneratedFilenames(filenameSuffix);
|
|
|
|
Assert.Equal(4, actual.Count);
|
|
Assert.Equal("!protectionInfo_suffix.txt", actual[0]);
|
|
Assert.Equal("!submissionInfo_suffix.json", actual[1]);
|
|
Assert.Equal("!submissionInfo_suffix.json.gz", actual[2]);
|
|
Assert.Equal("!submissionInfo_suffix.txt", actual[3]);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetGeneratedFilePaths
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilePaths_NulloutputDirectory_Empty()
|
|
{
|
|
string? outputDirectory = null;
|
|
var actual = BaseProcessor.GetGeneratedFilePaths(outputDirectory, filenameSuffix: null);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilePaths_EmptyoutputDirectory_Empty()
|
|
{
|
|
string? outputDirectory = string.Empty;
|
|
var actual = BaseProcessor.GetGeneratedFilePaths(outputDirectory, filenameSuffix: null);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilePaths_InvalidoutputDirectory_Empty()
|
|
{
|
|
string? outputDirectory = "INVALID";
|
|
var actual = BaseProcessor.GetGeneratedFilePaths(outputDirectory, filenameSuffix: null);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetGeneratedFilePaths_ValidoutputDirectory_Empty()
|
|
{
|
|
string? outputDirectory = Path.Combine(Environment.CurrentDirectory, "TestData", "BaseProcessor");
|
|
var actual = BaseProcessor.GetGeneratedFilePaths(outputDirectory, filenameSuffix: null);
|
|
Assert.Equal(4, actual.Count);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GenerateDatafile
|
|
|
|
[Fact]
|
|
public void GenerateDatafile_Empty_Null()
|
|
{
|
|
string iso = string.Empty;
|
|
Datafile? actual = BaseProcessor.GenerateDatafile(iso);
|
|
Assert.Null(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GenerateDatafile_Invalid_Null()
|
|
{
|
|
string iso = "INVALID";
|
|
Datafile? actual = BaseProcessor.GenerateDatafile(iso);
|
|
Assert.Null(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GenerateDatafile_Valid_Filled()
|
|
{
|
|
string iso = Path.Combine(Environment.CurrentDirectory, "TestData", "PS3CFW", "BluRay", "test.iso");
|
|
var actual = BaseProcessor.GenerateDatafile(iso);
|
|
|
|
Assert.NotNull(actual);
|
|
Assert.NotNull(actual.Game);
|
|
var game = Assert.Single(actual.Game);
|
|
Assert.NotNull(game.Rom);
|
|
var rom = Assert.Single(game.Rom);
|
|
Assert.Equal("9", rom.Size);
|
|
Assert.Equal("560b9f59", rom.CRC);
|
|
Assert.Equal("edbb6676247e65c2245dd4883ed9fc24", rom.MD5);
|
|
Assert.Equal("1b33ad54d78085be5ecb1cf1b3e9da821e708075", rom.SHA1);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetPIC
|
|
|
|
[Fact]
|
|
public void GetPIC_InvalidPath_Null()
|
|
{
|
|
string picPath = "INVALID";
|
|
int trimLength = -1;
|
|
|
|
string? actual = BaseProcessor.GetPIC(picPath, trimLength);
|
|
Assert.Null(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetPIC_ValidPathZeroTrim_Empty()
|
|
{
|
|
string picPath = Path.Combine(Environment.CurrentDirectory, "TestData", "BaseProcessor", "pic.bin");
|
|
int trimLength = 0;
|
|
|
|
string? actual = BaseProcessor.GetPIC(picPath, trimLength);
|
|
Assert.NotNull(actual);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetPIC_ValidPathDefaultTrim_Formatted()
|
|
{
|
|
string expected = "000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n000102030405060708090A0B0C0D0E0F\n";
|
|
string picPath = Path.Combine(Environment.CurrentDirectory, "TestData", "BaseProcessor", "pic.bin");
|
|
int trimLength = -1;
|
|
|
|
string? actual = BaseProcessor.GetPIC(picPath, trimLength);
|
|
Assert.NotNull(actual);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetPIC_ValidPathCustomTrim_Formatted()
|
|
{
|
|
string expected = "000102030405060708090A0B0C0D0E0F\n";
|
|
string picPath = Path.Combine(Environment.CurrentDirectory, "TestData", "BaseProcessor", "pic.bin");
|
|
int trimLength = 32;
|
|
|
|
string? actual = BaseProcessor.GetPIC(picPath, trimLength);
|
|
Assert.NotNull(actual);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region GetPVD
|
|
|
|
// TODO: Create fake, 00-filled ISO for tests and implement
|
|
|
|
#endregion
|
|
|
|
#region IsAudio
|
|
|
|
[Fact]
|
|
public void IsAudio_Null_False()
|
|
{
|
|
string? cue = null;
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.False(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsAudio_Empty_False()
|
|
{
|
|
string? cue = string.Empty;
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.False(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsAudio_Invalid_False()
|
|
{
|
|
string? cue = @"INVALID";
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.False(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsAudio_NoAudio_False()
|
|
{
|
|
string? cue = @"FILE ""track (Track 1).bin"" BINARY
|
|
TRACK 01 MODE1/2352
|
|
INDEX 01 00:00:00
|
|
FILE ""track (Track 2).bin"" BINARY
|
|
TRACK 02 MODE1/2352
|
|
INDEX 01 00:00:00";
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.False(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsAudio_MixedTracks_False()
|
|
{
|
|
string? cue = @"FILE ""track (Track 1).bin"" BINARY
|
|
TRACK 01 MODE1/2352
|
|
INDEX 01 00:00:00
|
|
FILE ""track (Track 2).bin"" BINARY
|
|
TRACK 02 AUDIO
|
|
INDEX 00 00:00:00
|
|
INDEX 01 00:02:00";
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.False(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void IsAudio_AllAudio_True()
|
|
{
|
|
string? cue = @"FILE ""track (Track 1).bin"" BINARY
|
|
TRACK 01 AUDIO
|
|
INDEX 00 00:00:00
|
|
INDEX 01 00:02:00
|
|
FILE ""track (Track 2).bin"" BINARY
|
|
TRACK 02 AUDIO
|
|
INDEX 00 00:00:00
|
|
INDEX 01 00:02:00";
|
|
bool actual = BaseProcessor.IsAudio(cue);
|
|
Assert.True(actual);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region SplitString
|
|
|
|
[Fact]
|
|
public void SplitString_NullString_Empty()
|
|
{
|
|
string? str = null;
|
|
int count = 0;
|
|
bool trim = false;
|
|
|
|
string actual = BaseProcessor.SplitString(str, count, trim);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SplitString_EmptyString_Empty()
|
|
{
|
|
string? str = string.Empty;
|
|
int count = 0;
|
|
bool trim = false;
|
|
|
|
string actual = BaseProcessor.SplitString(str, count, trim);
|
|
Assert.Empty(actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SplitString_ValidStringInvalidCount_Original()
|
|
{
|
|
string expected = "VALID\n";
|
|
string? str = "VALID";
|
|
int count = 0;
|
|
bool trim = false;
|
|
|
|
string actual = BaseProcessor.SplitString(str, count, trim);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SplitString_ValidStringLessThanCount_Original()
|
|
{
|
|
string expected = "VALID\n";
|
|
string? str = "VALID";
|
|
int count = 10;
|
|
bool trim = false;
|
|
|
|
string actual = BaseProcessor.SplitString(str, count, trim);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
[Fact]
|
|
public void SplitString_ValidStringGreaterThanCount_Split()
|
|
{
|
|
string expected = "VA\nLI\nD\n";
|
|
string? str = "VALID";
|
|
int count = 2;
|
|
bool trim = false;
|
|
|
|
string actual = BaseProcessor.SplitString(str, count, trim);
|
|
Assert.Equal(expected, actual);
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|