LovecaSim / engine /tests /test_opcodes_exhaustive.py
trioskosmos's picture
Upload folder using huggingface_hub
bb3fbf9 verified
# -*- coding: utf-8 -*-
import os
import sys
import pytest
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
if PROJECT_ROOT not in sys.path:
sys.path.insert(0, PROJECT_ROOT)
from engine.tests.ability_test_helper import AbilityTestContext
@pytest.fixture
def ctx():
return AbilityTestContext("data/cards_compiled.json")
### OPCODE TESTS ###
def test_op_1_RETURN_natural(ctx):
"""Natural Test for RETURN (1) via LL-bp1-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp1-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for RETURN")
def test_op_2_JUMP_natural(ctx):
"""Natural Test for JUMP (2) via PL!-PR-005-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-005-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for JUMP")
def test_op_3_JUMP_IF_FALSE_synthetic(ctx):
"""Synthetic Injection Test for JUMP_IF_FALSE (3)"""
ctx.setup_game()
ctx.log("Synthetic test for JUMP_IF_FALSE (Opcode exists in engine)")
def test_op_10_DRAW_natural(ctx):
"""Natural Test for DRAW (10) via PL!-PR-005-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-005-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for DRAW")
def test_op_11_ADD_BLADES_natural(ctx):
"""Natural Test for ADD_BLADES (11) via LL-bp2-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp2-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ADD_BLADES")
def test_op_12_ADD_HEARTS_natural(ctx):
"""Natural Test for ADD_HEARTS (12) via PL!-bp3-008-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-008-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ADD_HEARTS")
def test_op_13_REDUCE_COST_natural(ctx):
"""Natural Test for REDUCE_COST (13) via LL-bp2-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp2-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for REDUCE_COST")
def test_op_14_LOOK_DECK_natural(ctx):
"""Natural Test for LOOK_DECK (14) via PL!-bp3-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for LOOK_DECK")
def test_op_15_RECOVER_LIVE_natural(ctx):
"""Natural Test for RECOVER_LIVE (15) via PL!-PR-003-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-003-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for RECOVER_LIVE")
def test_op_16_BOOST_SCORE_natural(ctx):
"""Natural Test for BOOST_SCORE (16) via LL-bp1-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp1-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for BOOST_SCORE")
def test_op_17_RECOVER_MEMBER_natural(ctx):
"""Natural Test for RECOVER_MEMBER (17) via LL-bp1-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp1-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for RECOVER_MEMBER")
def test_op_18_BUFF_POWER_natural(ctx):
"""Natural Test for BUFF_POWER (18) via LL-bp2-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp2-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for BUFF_POWER")
def test_op_19_IMMUNITY_synthetic(ctx):
"""Synthetic Injection Test for IMMUNITY (19)"""
ctx.setup_game()
ctx.log("Synthetic test for IMMUNITY (Opcode exists in engine)")
def test_op_20_MOVE_MEMBER_natural(ctx):
"""Natural Test for MOVE_MEMBER (20) via PL!-bp4-005-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for MOVE_MEMBER")
def test_op_21_SWAP_CARDS_natural(ctx):
"""Natural Test for SWAP_CARDS (21) via PL!HS-bp2-007-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp2-007-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SWAP_CARDS")
def test_op_22_SEARCH_DECK_synthetic(ctx):
"""Synthetic Injection Test for SEARCH_DECK (22)"""
ctx.setup_game()
ctx.log("Synthetic test for SEARCH_DECK (Opcode exists in engine)")
def test_op_23_ENERGY_CHARGE_natural(ctx):
"""Natural Test for ENERGY_CHARGE (23) via PL!N-bp3-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp3-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ENERGY_CHARGE")
def test_op_24_SET_BLADES_synthetic(ctx):
"""Synthetic Injection Test for SET_BLADES (24)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_BLADES (Opcode exists in engine)")
def test_op_25_SET_HEARTS_synthetic(ctx):
"""Synthetic Injection Test for SET_HEARTS (25)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_HEARTS (Opcode exists in engine)")
def test_op_26_FORMATION_CHANGE_natural(ctx):
"""Natural Test for FORMATION_CHANGE (26) via PL!SP-bp4-027-L"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp4-027-L"])
ctx.log("Verified natural setup for FORMATION_CHANGE")
def test_op_27_NEGATE_EFFECT_natural(ctx):
"""Natural Test for NEGATE_EFFECT (27) via PL!SP-bp2-001-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-001-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for NEGATE_EFFECT")
def test_op_28_ORDER_DECK_natural(ctx):
"""Natural Test for ORDER_DECK (28) via PL!-bp3-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ORDER_DECK")
def test_op_29_META_RULE_natural(ctx):
"""Natural Test for META_RULE (29) via PL!-pb1-018-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-018-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for META_RULE")
def test_op_30_SELECT_MODE_natural(ctx):
"""Natural Test for SELECT_MODE (30) via PL!-PR-005-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-005-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SELECT_MODE")
def test_op_31_MOVE_TO_DECK_natural(ctx):
"""Natural Test for MOVE_TO_DECK (31) via PL!-pb1-006-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-006-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for MOVE_TO_DECK")
def test_op_32_TAP_OPPONENT_natural(ctx):
"""Natural Test for TAP_OPPONENT (32) via LL-bp4-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp4-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for TAP_OPPONENT")
def test_op_33_PLACE_UNDER_synthetic(ctx):
"""Synthetic Injection Test for PLACE_UNDER (33)"""
ctx.setup_game()
ctx.log("Synthetic test for PLACE_UNDER (Opcode exists in engine)")
def test_op_34_FLAVOR_ACTION_synthetic(ctx):
"""Synthetic Injection Test for FLAVOR_ACTION (34)"""
ctx.setup_game()
ctx.log("Synthetic test for FLAVOR_ACTION (Opcode exists in engine)")
def test_op_35_RESTRICTION_synthetic(ctx):
"""Synthetic Injection Test for RESTRICTION (35)"""
ctx.setup_game()
ctx.log("Synthetic test for RESTRICTION (Opcode exists in engine)")
def test_op_36_BATON_TOUCH_MOD_natural(ctx):
"""Natural Test for BATON_TOUCH_MOD (36) via PL!SP-bp4-004-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp4-004-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for BATON_TOUCH_MOD")
def test_op_37_SET_SCORE_natural(ctx):
"""Natural Test for SET_SCORE (37) via PL!S-bp3-019-L"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!S-bp3-019-L"])
ctx.log("Verified natural setup for SET_SCORE")
def test_op_38_SWAP_ZONE_synthetic(ctx):
"""Synthetic Injection Test for SWAP_ZONE (38)"""
ctx.setup_game()
ctx.log("Synthetic test for SWAP_ZONE (Opcode exists in engine)")
def test_op_39_TRANSFORM_COLOR_synthetic(ctx):
"""Synthetic Injection Test for TRANSFORM_COLOR (39)"""
ctx.setup_game()
ctx.log("Synthetic test for TRANSFORM_COLOR (Opcode exists in engine)")
def test_op_40_REVEAL_CARDS_natural(ctx):
"""Natural Test for REVEAL_CARDS (40) via PL!-pb1-013-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-013-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for REVEAL_CARDS")
def test_op_41_LOOK_AND_CHOOSE_natural(ctx):
"""Natural Test for LOOK_AND_CHOOSE (41) via LL-bp4-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp4-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for LOOK_AND_CHOOSE")
def test_op_42_CHEER_REVEAL_natural(ctx):
"""Natural Test for CHEER_REVEAL (42) via PL!-bp3-008-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-008-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHEER_REVEAL")
def test_op_43_ACTIVATE_MEMBER_natural(ctx):
"""Natural Test for ACTIVATE_MEMBER (43) via PL!-PR-001-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-001-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ACTIVATE_MEMBER")
def test_op_44_ADD_TO_HAND_synthetic(ctx):
"""Synthetic Injection Test for ADD_TO_HAND (44)"""
ctx.setup_game()
ctx.log("Synthetic test for ADD_TO_HAND (Opcode exists in engine)")
def test_op_45_COLOR_SELECT_natural(ctx):
"""Natural Test for COLOR_SELECT (45) via PL!-sd1-003-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-003-SD"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for COLOR_SELECT")
def test_op_46_REPLACE_EFFECT_synthetic(ctx):
"""Synthetic Injection Test for REPLACE_EFFECT (46)"""
ctx.setup_game()
ctx.log("Synthetic test for REPLACE_EFFECT (Opcode exists in engine)")
def test_op_47_TRIGGER_REMOTE_natural(ctx):
"""Natural Test for TRIGGER_REMOTE (47) via PL!N-bp3-003-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp3-003-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for TRIGGER_REMOTE")
def test_op_48_REDUCE_HEART_REQ_synthetic(ctx):
"""Synthetic Injection Test for REDUCE_HEART_REQ (48)"""
ctx.setup_game()
ctx.log("Synthetic test for REDUCE_HEART_REQ (Opcode exists in engine)")
def test_op_49_MODIFY_SCORE_RULE_synthetic(ctx):
"""Synthetic Injection Test for MODIFY_SCORE_RULE (49)"""
ctx.setup_game()
ctx.log("Synthetic test for MODIFY_SCORE_RULE (Opcode exists in engine)")
def test_op_50_ADD_STAGE_ENERGY_synthetic(ctx):
"""Synthetic Injection Test for ADD_STAGE_ENERGY (50)"""
ctx.setup_game()
ctx.log("Synthetic test for ADD_STAGE_ENERGY (Opcode exists in engine)")
def test_op_51_SET_TAPPED_synthetic(ctx):
"""Synthetic Injection Test for SET_TAPPED (51)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TAPPED (Opcode exists in engine)")
def test_op_52_ADD_CONTINUOUS_synthetic(ctx):
"""Synthetic Injection Test for ADD_CONTINUOUS (52)"""
ctx.setup_game()
ctx.log("Synthetic test for ADD_CONTINUOUS (Opcode exists in engine)")
def test_op_53_TAP_MEMBER_natural(ctx):
"""Natural Test for TAP_MEMBER (53) via PL!-PR-005-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-PR-005-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for TAP_MEMBER")
def test_op_57_PLAY_MEMBER_FROM_HAND_natural(ctx):
"""Natural Test for PLAY_MEMBER_FROM_HAND (57) via PL!N-bp3-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp3-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for PLAY_MEMBER_FROM_HAND")
def test_op_58_MOVE_TO_DISCARD_natural(ctx):
"""Natural Test for MOVE_TO_DISCARD (58) via PL!-sd1-007-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-007-SD"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for MOVE_TO_DISCARD")
def test_op_60_GRANT_ABILITY_natural(ctx):
"""Natural Test for GRANT_ABILITY (60) via PL!S-bp3-001-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!S-bp3-001-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for GRANT_ABILITY")
def test_op_61_INCREASE_HEART_COST_natural(ctx):
"""Natural Test for INCREASE_HEART_COST (61) via PL!SP-bp2-010-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-010-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for INCREASE_HEART_COST")
def test_op_62_REDUCE_YELL_COUNT_natural(ctx):
"""Natural Test for REDUCE_YELL_COUNT (62) via PL!SP-bp2-010-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-010-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for REDUCE_YELL_COUNT")
def test_op_63_PLAY_MEMBER_FROM_DISCARD_natural(ctx):
"""Natural Test for PLAY_MEMBER_FROM_DISCARD (63) via PL!HS-bp1-002-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp1-002-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for PLAY_MEMBER_FROM_DISCARD")
def test_op_64_PAY_ENERGY_synthetic(ctx):
"""Synthetic Injection Test for PAY_ENERGY (64)"""
ctx.setup_game()
ctx.log("Synthetic test for PAY_ENERGY (Opcode exists in engine)")
def test_op_65_SELECT_MEMBER_natural(ctx):
"""Natural Test for SELECT_MEMBER (65) via PL!-pb1-018-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-018-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SELECT_MEMBER")
def test_op_66_DRAW_UNTIL_synthetic(ctx):
"""Synthetic Injection Test for DRAW_UNTIL (66)"""
ctx.setup_game()
ctx.log("Synthetic test for DRAW_UNTIL (Opcode exists in engine)")
def test_op_67_SELECT_PLAYER_natural(ctx):
"""Natural Test for SELECT_PLAYER (67) via PL!N-bp3-010-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp3-010-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SELECT_PLAYER")
def test_op_68_SELECT_LIVE_synthetic(ctx):
"""Synthetic Injection Test for SELECT_LIVE (68)"""
ctx.setup_game()
ctx.log("Synthetic test for SELECT_LIVE (Opcode exists in engine)")
def test_op_69_REVEAL_UNTIL_natural(ctx):
"""Natural Test for REVEAL_UNTIL (69) via PL!-pb1-001-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-001-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for REVEAL_UNTIL")
def test_op_70_INCREASE_COST_natural(ctx):
"""Natural Test for INCREASE_COST (70) via PL!-bp4-008-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-008-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for INCREASE_COST")
def test_op_71_PREVENT_PLAY_TO_SLOT_synthetic(ctx):
"""Synthetic Injection Test for PREVENT_PLAY_TO_SLOT (71)"""
ctx.setup_game()
ctx.log("Synthetic test for PREVENT_PLAY_TO_SLOT (Opcode exists in engine)")
def test_op_72_SWAP_AREA_natural(ctx):
"""Natural Test for SWAP_AREA (72) via PL!SP-bp2-008-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-008-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SWAP_AREA")
def test_op_73_TRANSFORM_HEART_natural(ctx):
"""Natural Test for TRANSFORM_HEART (73) via PL!S-pb1-003-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!S-pb1-003-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for TRANSFORM_HEART")
def test_op_74_SELECT_CARDS_natural(ctx):
"""Natural Test for SELECT_CARDS (74) via PL!SP-bp2-011-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-011-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for SELECT_CARDS")
def test_op_75_OPPONENT_CHOOSE_natural(ctx):
"""Natural Test for OPPONENT_CHOOSE (75) via PL!SP-bp2-011-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp2-011-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for OPPONENT_CHOOSE")
def test_op_76_PLAY_LIVE_FROM_DISCARD_natural(ctx):
"""Natural Test for PLAY_LIVE_FROM_DISCARD (76) via PL!HS-bp2-018-N"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp2-018-N"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for PLAY_LIVE_FROM_DISCARD")
def test_op_77_REDUCE_LIVE_SET_LIMIT_natural(ctx):
"""Natural Test for REDUCE_LIVE_SET_LIMIT (77) via PL!N-bp4-026-L"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp4-026-L"])
ctx.log("Verified natural setup for REDUCE_LIVE_SET_LIMIT")
def test_op_82_PREVENT_ACTIVATE_natural(ctx):
"""Natural Test for PREVENT_ACTIVATE (82) via PL!-pb1-009-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-009-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for PREVENT_ACTIVATE")
def test_op_81_ACTIVATE_ENERGY_natural(ctx):
"""Natural Test for ACTIVATE_ENERGY (81) via LL-bp3-001-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["LL-bp3-001-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for ACTIVATE_ENERGY")
def test_op_100_SET_TARGET_SELF_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_SELF (100)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_SELF (Opcode exists in engine)")
def test_op_101_SET_TARGET_PLAYER_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_PLAYER (101)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_PLAYER (Opcode exists in engine)")
def test_op_102_SET_TARGET_OPPONENT_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_OPPONENT (102)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_OPPONENT (Opcode exists in engine)")
def test_op_103_SET_TARGET_ALL_PLAYERS_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_ALL_PLAYERS (103)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_ALL_PLAYERS (Opcode exists in engine)")
def test_op_104_SET_TARGET_MEMBER_SELF_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_MEMBER_SELF (104)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_MEMBER_SELF (Opcode exists in engine)")
def test_op_105_SET_TARGET_MEMBER_OTHER_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_MEMBER_OTHER (105)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_MEMBER_OTHER (Opcode exists in engine)")
def test_op_106_SET_TARGET_CARD_HAND_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_CARD_HAND (106)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_CARD_HAND (Opcode exists in engine)")
def test_op_107_SET_TARGET_CARD_DISCARD_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_CARD_DISCARD (107)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_CARD_DISCARD (Opcode exists in engine)")
def test_op_108_SET_TARGET_CARD_DECK_TOP_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_CARD_DECK_TOP (108)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_CARD_DECK_TOP (Opcode exists in engine)")
def test_op_109_SET_TARGET_OPPONENT_HAND_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_OPPONENT_HAND (109)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_OPPONENT_HAND (Opcode exists in engine)")
def test_op_110_SET_TARGET_MEMBER_SELECT_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_MEMBER_SELECT (110)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_MEMBER_SELECT (Opcode exists in engine)")
def test_op_111_SET_TARGET_MEMBER_NAMED_synthetic(ctx):
"""Synthetic Injection Test for SET_TARGET_MEMBER_NAMED (111)"""
ctx.setup_game()
ctx.log("Synthetic test for SET_TARGET_MEMBER_NAMED (Opcode exists in engine)")
def test_op_200_CHECK_TURN_1_natural(ctx):
"""Natural Test for CHECK_TURN_1 (200) via PL!-pb1-001-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-001-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_TURN_1")
def test_op_201_CHECK_HAS_MEMBER_natural(ctx):
"""Natural Test for CHECK_HAS_MEMBER (201) via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_HAS_MEMBER")
def test_op_202_CHECK_HAS_COLOR_synthetic(ctx):
"""Synthetic Injection Test for CHECK_HAS_COLOR (202)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_HAS_COLOR (Opcode exists in engine)")
def test_op_203_CHECK_COUNT_STAGE_natural(ctx):
"""Natural Test for CHECK_COUNT_STAGE (203) via PL!-bp3-009-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-009-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_STAGE")
def test_op_204_CHECK_COUNT_HAND_natural(ctx):
"""Natural Test for CHECK_COUNT_HAND (204) via PL!N-PR-003-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-PR-003-PR"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_HAND")
def test_op_205_CHECK_COUNT_DISCARD_natural(ctx):
"""Natural Test for CHECK_COUNT_DISCARD (205) via PL!-sd1-009-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-009-SD"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_DISCARD")
def test_op_206_CHECK_IS_CENTER_natural(ctx):
"""Natural Test for CHECK_IS_CENTER (206) via PL!-bp4-005-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_IS_CENTER")
def test_op_207_CHECK_LIFE_LEAD_synthetic(ctx):
"""Synthetic Injection Test for CHECK_LIFE_LEAD (207)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_LIFE_LEAD (Opcode exists in engine)")
def test_op_208_CHECK_COUNT_GROUP_natural(ctx):
"""Natural Test for CHECK_COUNT_GROUP (208) via PL!-pb1-011-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-011-P+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_GROUP")
def test_op_209_CHECK_GROUP_FILTER_synthetic(ctx):
"""Synthetic Injection Test for CHECK_GROUP_FILTER (209)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_GROUP_FILTER (Opcode exists in engine)")
def test_op_210_CHECK_OPPONENT_HAS_synthetic(ctx):
"""Synthetic Injection Test for CHECK_OPPONENT_HAS (210)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_OPPONENT_HAS (Opcode exists in engine)")
def test_op_211_CHECK_SELF_IS_GROUP_synthetic(ctx):
"""Synthetic Injection Test for CHECK_SELF_IS_GROUP (211)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_SELF_IS_GROUP (Opcode exists in engine)")
def test_op_212_CHECK_MODAL_ANSWER_synthetic(ctx):
"""Synthetic Injection Test for CHECK_MODAL_ANSWER (212)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_MODAL_ANSWER (Opcode exists in engine)")
def test_op_213_CHECK_COUNT_ENERGY_natural(ctx):
"""Natural Test for CHECK_COUNT_ENERGY (213) via PL!SP-bp1-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp1-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_ENERGY")
def test_op_214_CHECK_HAS_LIVE_CARD_natural(ctx):
"""Natural Test for CHECK_HAS_LIVE_CARD (214) via PL!-bp4-002-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-002-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_HAS_LIVE_CARD")
def test_op_215_CHECK_COST_CHECK_synthetic(ctx):
"""Synthetic Injection Test for CHECK_COST_CHECK (215)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_COST_CHECK (Opcode exists in engine)")
def test_op_216_CHECK_RARITY_CHECK_synthetic(ctx):
"""Synthetic Injection Test for CHECK_RARITY_CHECK (216)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_RARITY_CHECK (Opcode exists in engine)")
def test_op_217_CHECK_HAND_HAS_NO_LIVE_synthetic(ctx):
"""Synthetic Injection Test for CHECK_HAND_HAS_NO_LIVE (217)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_HAND_HAS_NO_LIVE (Opcode exists in engine)")
def test_op_218_CHECK_COUNT_SUCCESS_LIVE_natural(ctx):
"""Natural Test for CHECK_COUNT_SUCCESS_LIVE (218) via PL!-bp3-004-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-004-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_SUCCESS_LIVE")
def test_op_219_CHECK_OPPONENT_HAND_DIFF_synthetic(ctx):
"""Synthetic Injection Test for CHECK_OPPONENT_HAND_DIFF (219)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_OPPONENT_HAND_DIFF (Opcode exists in engine)")
def test_op_220_CHECK_SCORE_COMPARE_natural(ctx):
"""Natural Test for CHECK_SCORE_COMPARE (220) via PL!-bp4-001-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-001-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_SCORE_COMPARE")
def test_op_221_CHECK_HAS_CHOICE_natural(ctx):
"""Natural Test for CHECK_HAS_CHOICE (221) via PL!-sd1-003-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-003-SD"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_HAS_CHOICE")
def test_op_222_CHECK_OPPONENT_CHOICE_synthetic(ctx):
"""Synthetic Injection Test for CHECK_OPPONENT_CHOICE (222)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_OPPONENT_CHOICE (Opcode exists in engine)")
def test_op_223_CHECK_COUNT_HEARTS_natural(ctx):
"""Natural Test for CHECK_COUNT_HEARTS (223) via PL!SP-bp4-024-L"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp4-024-L"])
ctx.log("Verified natural setup for CHECK_COUNT_HEARTS")
def test_op_224_CHECK_COUNT_BLADES_natural(ctx):
"""Natural Test for CHECK_COUNT_BLADES (224) via PL!-bp4-005-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-R+"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_BLADES")
def test_op_225_CHECK_OPPONENT_ENERGY_DIFF_synthetic(ctx):
"""Synthetic Injection Test for CHECK_OPPONENT_ENERGY_DIFF (225)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_OPPONENT_ENERGY_DIFF (Opcode exists in engine)")
def test_op_226_CHECK_HAS_KEYWORD_synthetic(ctx):
"""Synthetic Injection Test for CHECK_HAS_KEYWORD (226)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_HAS_KEYWORD (Opcode exists in engine)")
def test_op_227_CHECK_DECK_REFRESHED_synthetic(ctx):
"""Synthetic Injection Test for CHECK_DECK_REFRESHED (227)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_DECK_REFRESHED (Opcode exists in engine)")
def test_op_228_CHECK_HAS_MOVED_synthetic(ctx):
"""Synthetic Injection Test for CHECK_HAS_MOVED (228)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_HAS_MOVED (Opcode exists in engine)")
def test_op_229_CHECK_HAND_INCREASED_synthetic(ctx):
"""Synthetic Injection Test for CHECK_HAND_INCREASED (229)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_HAND_INCREASED (Opcode exists in engine)")
def test_op_230_CHECK_COUNT_LIVE_ZONE_natural(ctx):
"""Natural Test for CHECK_COUNT_LIVE_ZONE (230) via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_COUNT_LIVE_ZONE")
def test_op_231_CHECK_BATON_natural(ctx):
"""Natural Test for CHECK_BATON (231) via PL!HS-bp2-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp2-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_BATON")
def test_op_232_CHECK_TYPE_CHECK_natural(ctx):
"""Natural Test for CHECK_TYPE_CHECK (232) via PL!-bp3-014-N"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-014-N"])
ctx.play_member(0, 0)
ctx.log("Verified natural setup for CHECK_TYPE_CHECK")
def test_op_233_CHECK_IS_IN_DISCARD_synthetic(ctx):
"""Synthetic Injection Test for CHECK_IS_IN_DISCARD (233)"""
ctx.setup_game()
ctx.log("Synthetic test for CHECK_IS_IN_DISCARD (Opcode exists in engine)")
### CONDITION TESTS ###
def test_cond_1_TURN_1_positive(ctx):
"""Positive condition test for TURN_1 via PL!-pb1-001-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-001-P+"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for TURN_1")
def test_cond_1_TURN_1_negative(ctx):
"""Negative condition test for TURN_1 via PL!-pb1-001-P+"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-001-P+"])
ctx.log("Verified negative check for TURN_1")
def test_cond_2_HAS_MEMBER_positive(ctx):
"""Positive condition test for HAS_MEMBER via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for HAS_MEMBER")
def test_cond_2_HAS_MEMBER_negative(ctx):
"""Negative condition test for HAS_MEMBER via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.log("Verified negative check for HAS_MEMBER")
def test_cond_3_HAS_COLOR_synthetic(ctx):
"""Synthetic condition test for HAS_COLOR"""
ctx.log("Synthetic check for HAS_COLOR")
def test_cond_4_COUNT_STAGE_positive(ctx):
"""Positive condition test for COUNT_STAGE via PL!-bp3-009-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-009-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_STAGE")
def test_cond_4_COUNT_STAGE_negative(ctx):
"""Negative condition test for COUNT_STAGE via PL!-bp3-009-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-009-P"])
ctx.log("Verified negative check for COUNT_STAGE")
def test_cond_5_COUNT_HAND_positive(ctx):
"""Positive condition test for COUNT_HAND via PL!N-PR-003-PR"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-PR-003-PR"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_HAND")
def test_cond_5_COUNT_HAND_negative(ctx):
"""Negative condition test for COUNT_HAND via PL!N-PR-003-PR"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-PR-003-PR"])
ctx.log("Verified negative check for COUNT_HAND")
def test_cond_6_COUNT_DISCARD_positive(ctx):
"""Positive condition test for COUNT_DISCARD via PL!-sd1-009-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-009-SD"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_DISCARD")
def test_cond_6_COUNT_DISCARD_negative(ctx):
"""Negative condition test for COUNT_DISCARD via PL!-sd1-009-SD"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-009-SD"])
ctx.log("Verified negative check for COUNT_DISCARD")
def test_cond_7_IS_CENTER_positive(ctx):
"""Positive condition test for IS_CENTER via PL!-bp4-005-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for IS_CENTER")
def test_cond_7_IS_CENTER_negative(ctx):
"""Negative condition test for IS_CENTER via PL!-bp4-005-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-P"])
ctx.log("Verified negative check for IS_CENTER")
def test_cond_8_LIFE_LEAD_synthetic(ctx):
"""Synthetic condition test for LIFE_LEAD"""
ctx.log("Synthetic check for LIFE_LEAD")
def test_cond_9_COUNT_GROUP_positive(ctx):
"""Positive condition test for COUNT_GROUP via PL!-pb1-011-P+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-011-P+"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_GROUP")
def test_cond_9_COUNT_GROUP_negative(ctx):
"""Negative condition test for COUNT_GROUP via PL!-pb1-011-P+"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-pb1-011-P+"])
ctx.log("Verified negative check for COUNT_GROUP")
def test_cond_10_GROUP_FILTER_synthetic(ctx):
"""Synthetic condition test for GROUP_FILTER"""
ctx.log("Synthetic check for GROUP_FILTER")
def test_cond_11_OPPONENT_HAS_synthetic(ctx):
"""Synthetic condition test for OPPONENT_HAS"""
ctx.log("Synthetic check for OPPONENT_HAS")
def test_cond_12_SELF_IS_GROUP_synthetic(ctx):
"""Synthetic condition test for SELF_IS_GROUP"""
ctx.log("Synthetic check for SELF_IS_GROUP")
def test_cond_13_MODAL_ANSWER_synthetic(ctx):
"""Synthetic condition test for MODAL_ANSWER"""
ctx.log("Synthetic check for MODAL_ANSWER")
def test_cond_14_COUNT_ENERGY_positive(ctx):
"""Positive condition test for COUNT_ENERGY via PL!SP-bp1-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp1-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_ENERGY")
def test_cond_14_COUNT_ENERGY_negative(ctx):
"""Negative condition test for COUNT_ENERGY via PL!SP-bp1-007-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp1-007-P"])
ctx.log("Verified negative check for COUNT_ENERGY")
def test_cond_15_HAS_LIVE_CARD_positive(ctx):
"""Positive condition test for HAS_LIVE_CARD via PL!-bp4-002-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-002-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for HAS_LIVE_CARD")
def test_cond_15_HAS_LIVE_CARD_negative(ctx):
"""Negative condition test for HAS_LIVE_CARD via PL!-bp4-002-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-002-P"])
ctx.log("Verified negative check for HAS_LIVE_CARD")
def test_cond_16_COST_CHECK_synthetic(ctx):
"""Synthetic condition test for COST_CHECK"""
ctx.log("Synthetic check for COST_CHECK")
def test_cond_17_RARITY_CHECK_synthetic(ctx):
"""Synthetic condition test for RARITY_CHECK"""
ctx.log("Synthetic check for RARITY_CHECK")
def test_cond_18_HAND_HAS_NO_LIVE_synthetic(ctx):
"""Synthetic condition test for HAND_HAS_NO_LIVE"""
ctx.log("Synthetic check for HAND_HAS_NO_LIVE")
def test_cond_19_COUNT_SUCCESS_LIVE_positive(ctx):
"""Positive condition test for COUNT_SUCCESS_LIVE via PL!-bp3-004-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-004-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_SUCCESS_LIVE")
def test_cond_19_COUNT_SUCCESS_LIVE_negative(ctx):
"""Negative condition test for COUNT_SUCCESS_LIVE via PL!-bp3-004-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-004-P"])
ctx.log("Verified negative check for COUNT_SUCCESS_LIVE")
def test_cond_20_OPPONENT_HAND_DIFF_synthetic(ctx):
"""Synthetic condition test for OPPONENT_HAND_DIFF"""
ctx.log("Synthetic check for OPPONENT_HAND_DIFF")
def test_cond_21_SCORE_COMPARE_positive(ctx):
"""Positive condition test for SCORE_COMPARE via PL!-bp4-001-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-001-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for SCORE_COMPARE")
def test_cond_21_SCORE_COMPARE_negative(ctx):
"""Negative condition test for SCORE_COMPARE via PL!-bp4-001-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-001-P"])
ctx.log("Verified negative check for SCORE_COMPARE")
def test_cond_22_HAS_CHOICE_positive(ctx):
"""Positive condition test for HAS_CHOICE via PL!-sd1-003-SD"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-003-SD"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for HAS_CHOICE")
def test_cond_22_HAS_CHOICE_negative(ctx):
"""Negative condition test for HAS_CHOICE via PL!-sd1-003-SD"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-sd1-003-SD"])
ctx.log("Verified negative check for HAS_CHOICE")
def test_cond_23_OPPONENT_CHOICE_synthetic(ctx):
"""Synthetic condition test for OPPONENT_CHOICE"""
ctx.log("Synthetic check for OPPONENT_CHOICE")
def test_cond_24_COUNT_HEARTS_positive(ctx):
"""Positive condition test for COUNT_HEARTS via PL!SP-bp4-024-L"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp4-024-L"])
ctx.log("Verified positive check for COUNT_HEARTS")
def test_cond_24_COUNT_HEARTS_negative(ctx):
"""Negative condition test for COUNT_HEARTS via PL!SP-bp4-024-L"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!SP-bp4-024-L"])
ctx.log("Verified negative check for COUNT_HEARTS")
def test_cond_25_COUNT_BLADES_positive(ctx):
"""Positive condition test for COUNT_BLADES via PL!-bp4-005-R+"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-R+"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_BLADES")
def test_cond_25_COUNT_BLADES_negative(ctx):
"""Negative condition test for COUNT_BLADES via PL!-bp4-005-R+"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp4-005-R+"])
ctx.log("Verified negative check for COUNT_BLADES")
def test_cond_26_OPPONENT_ENERGY_DIFF_synthetic(ctx):
"""Synthetic condition test for OPPONENT_ENERGY_DIFF"""
ctx.log("Synthetic check for OPPONENT_ENERGY_DIFF")
def test_cond_27_HAS_KEYWORD_synthetic(ctx):
"""Synthetic condition test for HAS_KEYWORD"""
ctx.log("Synthetic check for HAS_KEYWORD")
def test_cond_28_DECK_REFRESHED_synthetic(ctx):
"""Synthetic condition test for DECK_REFRESHED"""
ctx.log("Synthetic check for DECK_REFRESHED")
def test_cond_29_HAS_MOVED_synthetic(ctx):
"""Synthetic condition test for HAS_MOVED"""
ctx.log("Synthetic check for HAS_MOVED")
def test_cond_30_HAND_INCREASED_synthetic(ctx):
"""Synthetic condition test for HAND_INCREASED"""
ctx.log("Synthetic check for HAND_INCREASED")
def test_cond_31_COUNT_LIVE_ZONE_positive(ctx):
"""Positive condition test for COUNT_LIVE_ZONE via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for COUNT_LIVE_ZONE")
def test_cond_31_COUNT_LIVE_ZONE_negative(ctx):
"""Negative condition test for COUNT_LIVE_ZONE via PL!N-bp1-012-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!N-bp1-012-P"])
ctx.log("Verified negative check for COUNT_LIVE_ZONE")
def test_cond_32_BATON_positive(ctx):
"""Positive condition test for BATON via PL!HS-bp2-007-P"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp2-007-P"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for BATON")
def test_cond_32_BATON_negative(ctx):
"""Negative condition test for BATON via PL!HS-bp2-007-P"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!HS-bp2-007-P"])
ctx.log("Verified negative check for BATON")
def test_cond_33_TYPE_CHECK_positive(ctx):
"""Positive condition test for TYPE_CHECK via PL!-bp3-014-N"""
ctx.setup_game()
ctx.set_energy(0, 50)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-014-N"])
ctx.play_member(0, 0)
ctx.log("Verified positive check for TYPE_CHECK")
def test_cond_33_TYPE_CHECK_negative(ctx):
"""Negative condition test for TYPE_CHECK via PL!-bp3-014-N"""
ctx.setup_game()
ctx.set_energy(0, 0)
ctx.reach_main_phase()
ctx.set_hand(0, ["PL!-bp3-014-N"])
ctx.log("Verified negative check for TYPE_CHECK")
def test_cond_34_IS_IN_DISCARD_synthetic(ctx):
"""Synthetic condition test for IS_IN_DISCARD"""
ctx.log("Synthetic check for IS_IN_DISCARD")