OneAbove.Arena.GameContract.Testing 3.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package OneAbove.Arena.GameContract.Testing --version 3.0.1
                    
NuGet\Install-Package OneAbove.Arena.GameContract.Testing -Version 3.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="OneAbove.Arena.GameContract.Testing" Version="3.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="OneAbove.Arena.GameContract.Testing" Version="3.0.1" />
                    
Directory.Packages.props
<PackageReference Include="OneAbove.Arena.GameContract.Testing" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add OneAbove.Arena.GameContract.Testing --version 3.0.1
                    
#r "nuget: OneAbove.Arena.GameContract.Testing, 3.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package OneAbove.Arena.GameContract.Testing@3.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=OneAbove.Arena.GameContract.Testing&version=3.0.1
                    
Install as a Cake Addin
#tool nuget:?package=OneAbove.Arena.GameContract.Testing&version=3.0.1
                    
Install as a Cake Tool

OneAbove.Arena.GameContract.Testing

Die Prüfung, die jedes Regelmodul der One-Above Arena bestehen muss.

Sie ist keine Empfehlung: die Plattform übernimmt keine Modulversion, deren Suite nicht grün gelaufen ist. Sie tritt an die Stelle des Code-Reviews, das es zwischen den Repos nicht gibt.

Benutzung

Erben, zwei Glieder ausfüllen, fertig:

using OneAbove.Arena.GameContract.Testing;

public sealed class MeinSpielVertragstest
    : GameEngineContract<MeinState, MeinZug, MeineSicht>
{
    protected override IGameEngine<MeinState, MeinZug, MeineSicht> Engine { get; }
        = new MeinSpiel();

    protected override MatchSetup Setup { get; } = new()
    {
        SeatCount = 2,
        RngSeed = 4711,
    };
}

Das prüft Reinheit, Determinismus, die Serialisierungsrunde, Totalität, Undichtigkeit und das Partie-Ende — und spielt dabei selbsttätig einige Züge, damit nicht nur der Startzustand geprüft wird.

⚠️ Der eine Haken, den du ausfüllen musst

Hat dein Spiel verdeckte Information — Handkarten, verdeckte Gebote, geheime Ziele — dann musst du sagen, was geheim ist. Sonst ist der Undichtigkeitstest grün und hat nichts geprüft:

protected override IEnumerable<string> GeheimnisseVon(MeinState state, Seat seat) =>
    state.Haende[seat.Index].Select(karte => karte.Id);

Die Suite prüft dann, dass keine dieser Zeichenketten in der Sicht eines anderen Sitzes oder in der Zuschauersicht vorkommt.

Bei einem Spiel mit vollständig offener Information (Schach, Vier gewinnt) bleibt die Vorgabe richtig — dort greift der Kanarienvogel: der Seed der Partie darf in keiner Sicht stehen.

Goldene Partien

Aufgezeichnete Partien, bit-identisch nachgespielt. Die einzige Verteidigung gegen eine Änderung, die niemand für eine Regeländerung gehalten hat.

GoldenGameRunner.Verify(GoldenGameFile.Load("2026-09-06-erste-partie.json"), engine);

Wenn ein goldener Test rot wird, ist die erste Frage nicht „was ist an der Aufzeichnung falsch", sondern: haben wir gerade die Regeln geändert?

  • Absichtlich ⇒ GameVersion erhöhen und eine neue Aufzeichnung anlegen. Die alte bleibt liegen und muss unter ihrer alten Version weiter grün sein — sie ist der Beweis, dass laufende Partien nachspielbar bleiben.
  • Unabsichtlich ⇒ du hast gerade einen Fehler gefunden.

Was diese Suite nicht prüft

Deine Spielregeln. Dass ein Turm nicht diagonal zieht, merkt hier niemand. Dafür sind deine eigenen Tests da.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
4.4.0 0 9/18/2026
4.4.0-rc.1 0 9/18/2026
4.3.0 31 9/17/2026
4.3.0-rc.2 26 9/17/2026
4.3.0-rc.1 32 9/17/2026
4.2.0 38 9/17/2026
4.2.0-rc.1 32 9/17/2026
4.1.1 53 9/17/2026
4.1.1-rc.1 40 9/17/2026
4.1.0 37 9/17/2026
4.1.0-rc.3 43 9/17/2026
4.1.0-rc.2 34 9/17/2026
4.1.0-rc.1 40 9/17/2026
4.0.0 55 9/16/2026
4.0.0-rc.5 75 9/16/2026
4.0.0-rc.4 57 9/15/2026
4.0.0-rc.3 39 9/15/2026
4.0.0-rc.2 40 9/15/2026
4.0.0-rc.1 39 9/15/2026
3.0.1 85 9/14/2026
Loading failed