def test_attacked_with_excalibur( layer, theme, presence_flags, chain_status, expected_failed_low_if_not_chain, expected_low, ): prev_state = CharState.PUSHING cur_state = CharState.ATTACKING item_set = {EntityType.ITEM_EXCALIBUR} # These should vary with theme, but there's already a lot of params world = 4 level = 2 run_state = RunState() run_state.sunken_chain_status = chain_status run_state.update_attacked_with( prev_state, cur_state, layer, world, level, theme, presence_flags, item_set, item_set, ) # We only expect these to be set together assert run_state.failed_low_if_not_chain == expected_failed_low_if_not_chain is_low = Label.LOW in run_state.run_label._set assert is_low == expected_low
def test_has_chain_powerup(chain_status, item_set, expected_had_ankh, expected_low): run_state = RunState() run_state.sunken_chain_status = chain_status run_state.update_has_chain_powerup(item_set) assert run_state.had_ankh == expected_had_ankh is_low = Label.LOW in run_state.run_label._set assert is_low == expected_low
def test_has_mounted_tame(chain_status, theme, mount_type, mount_tamed, expected_low): mount = Mount(type=EntityDBEntry(id=mount_type), is_tamed=mount_tamed) poly_mount = PolyPointer(101, mount, MemContext()) run_state = RunState() run_state.sunken_chain_status = chain_status run_state.update_has_mounted_tame(theme, poly_mount) is_low = Label.LOW in run_state.run_label._set assert is_low == expected_low
def test_update_terminus( world, win_state, final_death, had_ankh, sunken_status, eggplant_status, cosmic_status, expected_terminus, ): run_state = RunState() run_state.final_death = final_death run_state.had_ankh = had_ankh run_state.sunken_chain_status = sunken_status run_state.eggplant_stepper = FakeStepper(eggplant_status) run_state.cosmic_stepper = FakeStepper(cosmic_status) game_state = State(world=world, win_state=win_state) run_state.update_terminus(game_state) assert run_state.run_label._terminus == expected_terminus
def test_attacked_with_simple(prev_state, cur_state, item_set, prev_item_set, expected_low): # These shouldn't be location sensitive layer = Layer.FRONT world = 2 level = 2 theme = Theme.JUNGLE presence_flags = 0 run_state = RunState() run_state.sunken_chain_status = ChainStatus.IN_PROGRESS run_state.update_attacked_with( prev_state, cur_state, layer, world, level, theme, presence_flags, item_set, prev_item_set, ) is_low = Label.LOW in run_state.run_label._set assert is_low == expected_low