runTwinFixtureCase function

List<String> runTwinFixtureCase(
  1. GameRules rules,
  2. TwinFixtureCase fixtureCase
)

Runs one validated fixture case against the Dart rules twin, returning failure descriptions (empty ⇒ the case passes).

A parse throw (config/observation/action fromJson) is reported as a failure, not rethrown — a codec that cannot read the recorded payload is itself twin drift.

Implementation

List<String> runTwinFixtureCase(
  GameRules<dynamic, dynamic, dynamic> rules,
  TwinFixtureCase fixtureCase,
) => switch (fixtureCase) {
  ActionCase() => _runActionCase(rules, fixtureCase),
  RatingPoolCase() => _runRatingPoolCase(rules, fixtureCase),
  BotSeatableCase() => _runBotSeatableCase(rules, fixtureCase),
};