rabukasim / engine_rust_src /src /game_end_tests.rs
trioskosmos's picture
Upload folder using huggingface_hub
463f868 verified
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"
);
}