Spaces:
Sleeping
Sleeping
| mod tests { | |
| use crate::core::logic::interpreter::conditions::check_condition_opcode; | |
| use crate::core::logic::*; | |
| use crate::test_helpers::*; | |
| 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"); | |
| } | |
| } | |