Betäubungs-Ring über dem Kopf (Gäste über Bit 18 der Rahmen-Flags), Nebel-Gitter LuneFogOverlay mit Shader Luneraria/FogOverlay aus LuneFog.Vision (10 Hz, weiche Kante), laufende Glyphe je Team als vier Zusatzwerte nach den Gebäude-Lebenspunkten. Reine Darstellung. Kern 627/627 (s4 8), EditMode 35/35, PlayMode 20/20, Verify 718/0, Selbsttest 30/30, Golden 0, Fingerabdruck unverändert. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
56 lines
1.9 KiB
C#
56 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Luneraria.Core.Tests
|
|
{
|
|
/// <summary>
|
|
/// A test suite in the style of the Godot reference tests: named checks, counted, failures
|
|
/// collected with their label. The same suites run in the .NET harness (tools/dotnet) and in
|
|
/// Unity's Test Runner (Unity/CoreSuiteTests.cs); check counts stay comparable with Godot.
|
|
/// </summary>
|
|
public abstract class CheckSuite
|
|
{
|
|
public int Checks { get; private set; }
|
|
public readonly List<string> Failures = new List<string>();
|
|
public readonly List<string> Notes = new List<string>();
|
|
/// <summary>Folder with the golden files (Assets/Luneraria/Tests/Core/Golden).</summary>
|
|
public string GoldenDirectory = "";
|
|
|
|
public abstract string Name { get; }
|
|
|
|
protected abstract void RunChecks();
|
|
|
|
public bool Run()
|
|
{
|
|
Checks = 0;
|
|
Failures.Clear();
|
|
Notes.Clear();
|
|
try
|
|
{
|
|
RunChecks();
|
|
}
|
|
catch (Exception error)
|
|
{
|
|
Failures.Add("EXCEPTION " + error.GetType().Name + ": " + error.Message + "\n" + error.StackTrace);
|
|
}
|
|
return Failures.Count == 0;
|
|
}
|
|
|
|
protected void Check(bool ok, string label)
|
|
{
|
|
Checks += 1;
|
|
if (!ok)
|
|
Failures.Add(label);
|
|
}
|
|
|
|
protected void Note(string text)
|
|
{
|
|
Notes.Add(text);
|
|
}
|
|
|
|
public static IList<CheckSuite> All()
|
|
{
|
|
return new List<CheckSuite> { new ContentSuite(), new CoreRulesSuite(), new M2RulesSuite(), new GoldenSuite(), new DeterminismSuite(), new NetSuite(), new NetRoundsSuite(), new H1HeroSuite(), new S1RulesSuite(), new S2RulesSuite(), new S3RulesSuite(), new H2HeroSuite(), new S4NetSuite() };
|
|
}
|
|
}
|
|
}
|