def test_attack_miss_player_when_charged_not_adjacent(): envs, shared_state = setup(positions=[(1, 0), (1, 1)], walls=[(1, 3)], additional_keys=[(1, 2)]) env = envs[0] env2 = envs[1] # Fully recharge for i in range(20): env.step(FourKeysActions.NOTHING) env2.step(FourKeysActions.NOTHING) env2.step(FourKeysActions.RIGHT) # Pickup key env2.step(FourKeysActions.LEFT) env2.step(FourKeysActions.RIGHT) assert env2.keys == 1 assert count_keys(shared_state.board) == 4 assert env.attack_recharge == ATTACK_FULL_CHARGE env.step(FourKeysActions.ATTACK) assert env.attack_recharge == ATTACK_FULL_CHARGE assert env2.keys == 1 assert count_keys(shared_state.board) == 4
def test_drop_key_add_to_board(): envs, shared_state = setup(positions=[(1, 1)], walls=[(1, 3)], additional_keys=[(1, 2)]) env = envs[0] env.step(FourKeysActions.RIGHT) # Pickup key assert count_keys(shared_state.board) == 4 env.step(FourKeysActions.DROP_KEY) assert count_keys(shared_state.board) == 5
def test_key_remove_from_game(): envs, shared_state = setup(positions=[(1, 1)], walls=[(1, 3)], additional_keys=[(1, 2)]) env = envs[0] assert len(shared_state.keys) == 5 assert count_keys(shared_state.board) == 5 env.step(FourKeysActions.RIGHT) assert len(shared_state.keys) == 4 assert count_keys(shared_state.board) == 4
def test_oversaturation_7x7_board_builds(): # The wall structure prevents more than two keys from being added # This behavior will likely change in the future to try lower saturation automatically board = build_board(side_length=7, num_seed_walls=10) assert get_side_length(board) == 7 assert ensure_walls_exist(board) assert count_keys(board) == 2
def test_blank_15x15_board_has_correct_key_count(): board = build_board(side_length=15, num_seed_walls=0) assert get_side_length(board) == 15 assert count_keys(board) == 4
def test_saturated_7x7_board_all_keys_reachable(): board = build_board(side_length=7, num_seed_walls=3) assert get_side_length(board) == 7 assert count_keys(board) == 4 assert len(get_reachable_key_locations(board)) == 4
def test_saturated_7x7_board_has_clear_edges(): # Edges should always be clear in the game design to allow movement on perimeter of board board = build_board(side_length=7, num_seed_walls=3) assert get_side_length(board) == 7 assert count_keys(board) == 4 assert edges_clear(board)
def test_saturated_7x7_board_has_correct_key_count(): board = build_board(side_length=7, num_seed_walls=3) assert get_side_length(board) == 7 assert count_keys(board) == 4
def test_saturated_30x30_board_has_clear_edges(): board = build_board(side_length=30, num_seed_walls=5) assert get_side_length(board) == 30 assert count_keys(board) == 4 assert edges_clear(board)
def test_saturated_30x30_board_has_correct_key_count(): board = build_board(side_length=30, num_seed_walls=5) assert get_side_length(board) == 30 assert count_keys(board) == 4