Files
systemic-game-design-course/course/01-handles/scenarios.md
T
2026-10-29 00:17:31 +01:00

1.7 KiB

Module 1 scenarios: Handles and order of play

Each heading is a test name. The Rust test lives in tests/rust/test_01.rs and the TypeScript test in tests/ts/test_01.test.ts; both state exactly what is written here. Every test starts from newGame() with no decks (new_game(GameOpts::default()) in Rust). All cards are Test Filler, a fictional test minion with no text. Player 0 is the first player, player 1 the second.

test_01_ids_stable_and_order_increases

  • Setup: an empty game.
  • Action: summon Test Filler for player 0 and call its id A. Record orderOfPlay(A). Then summon another Test Filler for player 0 and call its id B.
  • Assertions:
    • A and B are different ids.
    • orderOfPlay(A) < orderOfPlay(B).
    • orderOfPlay(A) is the same value it had before B was summoned.
    • A still names the same entity: nameOf(A) is "Test Filler" and zoneOf(A) is board.
    • board(0) is [A, B], left to right.

test_01_zones

  • Setup: an empty game.
  • Action: for player 0, add a Test Filler to the deck (id D), add a Test Filler to the hand (id H), and summon a Test Filler (id S).
  • Assertions:
    • zoneOf(D) is deck, zoneOf(H) is hand, zoneOf(S) is board.
    • hand(0) is [H].
    • board(0) is [S].

test_01_board_query_per_player

  • Setup: an empty game.
  • Action: summon Test Filler for player 0 (id A0), then for player 1 (id A1), then for player 0 again (id B0).
  • Assertions:
    • board(0) is [A0, B0].
    • board(1) is [A1].

test_01_names

  • Setup: an empty game.
  • Action: summon Test Filler for player 0 (id A) and add a Test Filler to player 1's hand (id H).
  • Assertions:
    • nameOf(A) is "Test Filler".
    • nameOf(H) is "Test Filler".