rabukasim / engine_rust_src /src /count_group_tests.rs
trioskosmos's picture
Upload folder using huggingface_hub
463f868 verified
#[cfg(test)]
mod tests {
use crate::core::logic::interpreter::conditions::check_condition_opcode;
use crate::core::logic::*;
use crate::test_helpers::*;
#[test]
fn test_count_group_unique_names() {
let mut db = create_test_db();
let mut state = create_test_state();
// Setup cards: 3 cards with Group 10
// Card A: ID 3001, Name "Member A", Group 10
// Card B: ID 3002, Name "Member A" (Duplicate Name), Group 10
// Card C: ID 3003, Name "Member C", Group 10
let groups = vec![10];
add_card(&mut db, 3001, "Member A", groups.clone(), vec![]);
add_card(&mut db, 3002, "Member A", groups.clone(), vec![]);
add_card(&mut db, 3003, "Member C", groups.clone(), vec![]);
// Put all 3 on stage
state.players[0].stage = [3001, 3002, 3003];
let ctx = AbilityContext {
player_id: 0,
..Default::default()
};
// 1. Total Count (Wait 3, Group 10 Member, Target Self)
// Revision 5 packing: 1 (Self) | (1 << 2, Member) | (1 << 4, Group Enabled) | (10 << 5, Group ID) = 341
let passed_total = check_condition_opcode(&state, &db, 208, 3, 341, -1, &ctx, 0);
assert!(passed_total, "Should find 3 members of Group 10");
// 2. Unique Count (Wait 3, Group 10 Member, Unique Flag bit 15)
// Revision 5 packing: 341 | (1 << 15) = 33109
let passed_unique_3 = check_condition_opcode(&state, &db, 208, 3, 33109, -1, &ctx, 0);
assert!(
!passed_unique_3,
"Should NOT find 3 UNIQUE names (only 2: Member A and Member C)"
);
// 3. Unique Count (Wait 2, Group 10 Member, Unique Flag bit 15)
let passed_unique_2 = check_condition_opcode(&state, &db, 208, 2, 33109, -1, &ctx, 0);
assert!(passed_unique_2, "Should find 2 UNIQUE names");
}
}