def test_valid_colours(): state = SpireState() expected_colours = (state.BLACK, state.RED) colours = state.get_valid_colours() assert colours == expected_colours
def test_get_coordinates(): state = SpireState() height, row, column = state.get_coordinates(31) assert height == 0 assert row == 0 assert column == 1
def test_display_move(): state1 = SpireState() move1_display = state1.display_move(2) move2_display = state1.display_move(32) state2 = state1.make_move(1) move3_display = state2.display_move(2) assert move1_display == 'B1E' assert move2_display == 'R1E' assert move3_display == 'W1E'
def test_upper_rows(start: int, end: int, expected_valid: bool, reason: str): board = SpireState("""\ A C E G 7 W W R W 7 5 B B R B 5 3 . . . . 3 1 . . . . 1 A C E G >B,R """) valid_moves = board.get_valid_moves() for move in range(start, end): assert valid_moves[move] == expected_valid, move
def test_lower_rows(start: int, end: int, expected_valid: bool, reason: str): board = SpireState("""\ A C E G 7 . . . . 7 5 . . . . 5 3 B B R B 3 1 W W R W 1 A C E G >B,R """) valid_moves = board.get_valid_moves() for move in range(start, end): assert valid_moves[move] == expected_valid, move
def test_get_index(): state = SpireState() black_move = state.get_index(height=0, row=0, column=0, move_type=state.BLACK) red_move = state.get_index(height=0, row=0, column=0, move_type=state.RED) white_move = state.get_index(height=0, row=0, column=0, move_type=state.WHITE) assert black_move == 0 assert red_move == 30 assert white_move == 0
def test_valid_colours_no_red(): state = SpireState("""\ A C E G 7 . . . . 7 5 . . . . 5 3 . . . . 3 1 R . . . 1 A C E G >B """) expected_colours = (state.BLACK, ) colours = state.get_valid_colours() assert colours == expected_colours
def test_move_red(): expected_display2 = """\ A C E G 7 . . . . 7 5 . . . . 5 3 . . . . 3 1 R . . . 1 A C E G >B """ state1 = SpireState() state2 = state1.make_move(30) display2 = state2.display() assert display2 == expected_display2
def test_move_black(): expected_display2 = """\ A C E G 7 . . . . 7 5 . . . . 5 3 . . . . 3 1 B . . . 1 A C E G >W,R """ state1 = SpireState() state2 = state1.make_move(0) display2 = state2.display() assert display2 == expected_display2
def test_start(): expected_display = """\ A C E G 7 . . . . 7 5 . . . . 5 3 . . . . 3 1 . . . . 1 A C E G >B,R """ state = SpireState() display = state.display() active_player = state.get_active_player() assert display == expected_display assert active_player == state.BLACK
def test_winner(): text = """\ A C E G 7 B W B W 7 5 W B W B 5 3 B W B W 3 1 W B W B 1 A C E G B D F 6 . . . 6 4 . R . 4 2 . . . 2 B D F >B """ state = SpireState(text) assert state.is_ended() assert state.get_winner() == state.WHITE assert state.is_win(state.WHITE) assert not state.is_win(state.BLACK)
def test_higher_level(start: int, end: int, expected_valid: bool, reason: str): board = SpireState("""\ A C E G 7 B W B R 7 5 W R R W 5 3 B W B R 3 1 W R R W 1 A C E G B D F 6 . . . 6 4 . . . 4 2 B B R 2 B D F >B,R """) valid_moves = board.get_valid_moves() for move in range(start, end): assert valid_moves[move] == expected_valid, move
def __init__(self): start_state = SpireState() super().__init__(start_state) self.visible_move_types = (start_state.BLACK, start_state.RED, start_state.WHITE)