Files
systemic-game-design-course/course/01-handles/tests/rust/test_01.rs
T
2026-10-29 00:17:31 +01:00

53 lines
1.5 KiB
Rust

// Module 1: Handles and order of play. Each test matches a heading in scenarios.md.
use engine::harness::*;
#[test]
fn test_01_ids_stable_and_order_increases() {
let mut g = new_game(GameOpts::default());
let a = g.summon("Test Filler", 0);
let order_a = g.order_of_play(a);
let b = g.summon("Test Filler", 0);
assert_ne!(a, b);
assert!(g.order_of_play(a) < g.order_of_play(b));
assert_eq!(g.order_of_play(a), order_a);
assert_eq!(g.name_of(a), "Test Filler");
assert_eq!(g.zone_of(a), Zone::Board);
assert_eq!(g.board(0), vec![a, b]);
}
#[test]
fn test_01_zones() {
let mut g = new_game(GameOpts::default());
let d = g.add_to_deck("Test Filler", 0);
let h = g.add_to_hand("Test Filler", 0);
let s = g.summon("Test Filler", 0);
assert_eq!(g.zone_of(d), Zone::Deck);
assert_eq!(g.zone_of(h), Zone::Hand);
assert_eq!(g.zone_of(s), Zone::Board);
assert_eq!(g.hand(0), vec![h]);
assert_eq!(g.board(0), vec![s]);
}
#[test]
fn test_01_board_query_per_player() {
let mut g = new_game(GameOpts::default());
let a0 = g.summon("Test Filler", 0);
let a1 = g.summon("Test Filler", 1);
let b0 = g.summon("Test Filler", 0);
assert_eq!(g.board(0), vec![a0, b0]);
assert_eq!(g.board(1), vec![a1]);
}
#[test]
fn test_01_names() {
let mut g = new_game(GameOpts::default());
let a = g.summon("Test Filler", 0);
let h = g.add_to_hand("Test Filler", 1);
assert_eq!(g.name_of(a), "Test Filler");
assert_eq!(g.name_of(h), "Test Filler");
}