//! Module 0 tests for the naive engine. See course/00-rewrite-trap/lesson.md. use naive_engine::Game; #[test] fn test_00_naive_runs() { let mut game = Game::new(); let hoarder = game.summon("Loot Hoarder"); game.deal_damage(&hoarder, 1); assert!(game.board_names().is_empty(), "Loot Hoarder should be gone"); assert_eq!(game.cards_drawn, 1, "its Deathrattle draws one card"); } // EXPECTED TO FAIL. This test states the order the real game uses (all damage // first, then damage triggers in order of play, then deaths and Deathrattles). // The naive engine cannot produce it. Read course/00-rewrite-trap/lesson.md, // "Predict", before changing anything here. #[test] #[should_panic(expected = "left == right")] fn test_00_real_rules_whirlwind_order() { let mut game = Game::new(); game.summon("Acolyte of Pain"); // played first game.summon("Loot Hoarder"); game.cast("Whirlwind"); assert_eq!( game.log, vec![ "damaged Acolyte of Pain 1", "damaged Loot Hoarder 1", "triggered Acolyte of Pain", "drew a card", "died Loot Hoarder", "deathrattle Loot Hoarder", "drew a card", ] ); }