2024-08-18 04:24:59 +00:00
|
|
|
using NUnit.Framework;
|
|
|
|
|
|
|
|
using MultiversalDiplomacy.Model;
|
|
|
|
using MultiversalDiplomacy.Script;
|
|
|
|
|
|
|
|
namespace MultiversalDiplomacyTests;
|
|
|
|
|
|
|
|
public class ScriptTests
|
|
|
|
{
|
|
|
|
static IEnumerable<TestCaseData> DatcTestCases()
|
|
|
|
{
|
|
|
|
foreach (var path in Directory.EnumerateFiles("Scripts/DATC"))
|
|
|
|
{
|
|
|
|
yield return new TestCaseData(path)
|
|
|
|
.SetName($"{{m}}({Path.GetFileNameWithoutExtension(path)})");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
[TestCaseSource(nameof(DatcTestCases))]
|
|
|
|
public void Test_DATC(string testScriptPath)
|
|
|
|
{
|
2024-08-18 20:32:36 +00:00
|
|
|
string filename = Path.GetFileName(testScriptPath);
|
|
|
|
int line = 0;
|
2024-08-18 04:24:59 +00:00
|
|
|
IScriptHandler? handler = new SetupScriptHandler(World.WithStandardMap(), strict: true);
|
|
|
|
foreach (string input in File.ReadAllLines(testScriptPath)) {
|
2024-08-18 20:32:36 +00:00
|
|
|
line++;
|
2024-08-18 04:24:59 +00:00
|
|
|
handler = handler?.HandleInput(input);
|
2024-08-18 20:32:36 +00:00
|
|
|
if (handler is null) Assert.Fail($"Script {filename} quit unexpectedly at line {line}: \"{input}\"");
|
2024-08-18 04:24:59 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|