Spaces:
Sleeping
Sleeping
File size: 1,904 Bytes
463f868 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | use crate::core::logic::*;
use crate::test_helpers::{create_test_state, load_real_db};
#[test]
fn test_win_by_lives() {
let _db = load_real_db();
let mut state = create_test_state();
// Player 0 has 3 success lives (START:DASH!! ID 137)
state.players[0].success_lives = vec![137, 137, 137].into();
state.players[1].success_lives = vec![].into();
state.check_win_condition();
assert_eq!(state.phase, Phase::Terminal);
assert_eq!(state.get_winner(), 0);
}
#[test]
fn test_draw_simultaneous_lives() {
let _db = load_real_db();
let mut state = create_test_state();
// Simultaneous reach 3 lives
state.players[0].success_lives = vec![137, 137, 137].into();
state.players[1].success_lives = vec![137, 137, 137].into();
state.check_win_condition();
assert_eq!(state.phase, Phase::Terminal);
assert_eq!(
state.get_winner(),
2,
"Rule 1.2.1.2: Simultaneous 3+ lives is a Draw (2)"
);
}
#[test]
fn test_true_draw_lives_and_score_equal() {
let _db = load_real_db();
let mut state = create_test_state();
state.players[0].success_lives = vec![137, 137, 137].into();
state.players[1].success_lives = vec![137, 137, 137].into();
state.players[0].score = 25;
state.players[1].score = 25;
state.check_win_condition();
assert_eq!(state.get_winner(), 2, "Should be a true draw (2)");
}
#[test]
fn test_deck_out_not_yet_implemented() {
// Verifying current behavior: Deck out doesn't cause immediate loss yet
let _db = load_real_db();
let mut state = create_test_state();
state.players[0].deck = vec![].into();
state.players[0].discard = vec![].into();
state.draw_cards(0, 1);
assert_ne!(
state.phase,
Phase::Terminal,
"Deck out logic NOT in game.rs yet"
);
}
|