def test_get_possible_moves_overwrite_on_other_player(self): board = Board("""\ 2 1 0 0 3 3 2 0 0 0 2 0 0 0 1 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE, use_overwrite=True) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_ONE, EMPTY, EMPTY], [EMPTY, PLAYER_ONE, EMPTY], [EMPTY, EMPTY, PLAYER_ONE]]) self.assertEqual(0, next_game_states[0].player_overwrites[PLAYER_ONE]) def test_get_possible_moves_can_not_move_on_other_player(self): board = Board("""\ 2 0 0 0 3 3 2 0 0 0 2 0 0 0 1 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE, use_overwrite=True) self.assertEqual(0, len(next_game_states))
def test_get_possible_moves_three_player_choice(self): board = Board("""\ 3 0 0 0 3 3 2 1 3 0 2 0 0 c 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(3, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_TWO, PLAYER_ONE, PLAYER_THREE], [EMPTY, PLAYER_ONE, EMPTY], [EMPTY, PLAYER_ONE, EMPTY]]) self.assert_board(next_game_states[1].board, [[PLAYER_ONE, PLAYER_TWO, PLAYER_THREE], [EMPTY, PLAYER_TWO, EMPTY], [EMPTY, PLAYER_TWO, EMPTY]]) self.assert_board(next_game_states[2].board, [[PLAYER_TWO, PLAYER_THREE, PLAYER_ONE], [EMPTY, PLAYER_THREE, EMPTY], [EMPTY, PLAYER_THREE, EMPTY]])
def test_get_possible_moves_boese01(self): board = Board("""\ 2 0 0 0 8 11 - - - - - - 0 - - - - - - - - - - 2 - - - - - 2 2 2 2 2 2 2 1 0 0 - - - - - - 2 - - - - - - - - - - 2 - - - - - - - - - - 2 - - - - - - - - - - 2 - - - - - - - - - - 2 - - - - 1 2 6 <-> 6 7 4 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, PLAYER_ONE, EMPTY, EMPTY], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE], [HOLE, HOLE, HOLE, HOLE, HOLE, HOLE, PLAYER_ONE, HOLE, HOLE, HOLE, HOLE]])
def test_get_possible_moves_must_capture_minimum_one_enemy(self): board = Board("""\ 2 1 0 0 3 3 1 0 0 0 0 0 0 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(0, len(next_game_states))
def test_get_possible_moves_expansion_only_with_overwrite(self): board = Board("""\ 2 0 0 0 3 3 0 0 0 0 x 0 0 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(Field.PLAYER_ONE, use_overwrite=True) self.assertEqual(0, len(next_game_states))
def test_get_possible_moves_can_not_move_on_other_player(self): board = Board("""\ 2 0 0 0 3 3 2 0 0 0 2 0 0 0 1 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE, use_overwrite=True) self.assertEqual(0, len(next_game_states))
def test_get_possible_moves_eight_player_choice(self): board = Board("""\ 8 0 0 0 3 3 2 1 3 4 2 5 6 c 7 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(8, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_TWO, PLAYER_ONE, PLAYER_THREE], [PLAYER_FOUR, PLAYER_ONE, PLAYER_FIVE], [PLAYER_SIX, PLAYER_ONE, PLAYER_SEVEN]]) self.assert_board(next_game_states[1].board, [[PLAYER_ONE, PLAYER_TWO, PLAYER_THREE], [PLAYER_FOUR, PLAYER_TWO, PLAYER_FIVE], [PLAYER_SIX, PLAYER_TWO, PLAYER_SEVEN]]) self.assert_board(next_game_states[2].board, [[PLAYER_TWO, PLAYER_THREE, PLAYER_ONE], [PLAYER_FOUR, PLAYER_THREE, PLAYER_FIVE], [PLAYER_SIX, PLAYER_THREE, PLAYER_SEVEN]]) self.assert_board(next_game_states[3].board, [[PLAYER_TWO, PLAYER_FOUR, PLAYER_THREE], [PLAYER_ONE, PLAYER_FOUR, PLAYER_FIVE], [PLAYER_SIX, PLAYER_FOUR, PLAYER_SEVEN]]) self.assert_board(next_game_states[4].board, [[PLAYER_TWO, PLAYER_FIVE, PLAYER_THREE], [PLAYER_FOUR, PLAYER_FIVE, PLAYER_ONE], [PLAYER_SIX, PLAYER_FIVE, PLAYER_SEVEN]]) self.assert_board(next_game_states[5].board, [[PLAYER_TWO, PLAYER_SIX, PLAYER_THREE], [PLAYER_FOUR, PLAYER_SIX, PLAYER_FIVE], [PLAYER_ONE, PLAYER_SIX, PLAYER_SEVEN]]) self.assert_board(next_game_states[6].board, [[PLAYER_TWO, PLAYER_SEVEN, PLAYER_THREE], [PLAYER_FOUR, PLAYER_SEVEN, PLAYER_FIVE], [PLAYER_SIX, PLAYER_SEVEN, PLAYER_ONE]]) self.assert_board(next_game_states[7].board, [[PLAYER_TWO, PLAYER_EIGHT, PLAYER_THREE], [PLAYER_FOUR, PLAYER_EIGHT, PLAYER_FIVE], [PLAYER_SIX, PLAYER_EIGHT, PLAYER_SEVEN]])
def test_get_possible_moves_walk_multipath(self): board = Board("""\ 2 0 0 0 3 3 1 0 0 0 2 2 0 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_ONE, EMPTY, EMPTY], [EMPTY, PLAYER_ONE, PLAYER_TWO], [EMPTY, EMPTY, PLAYER_ONE]])
def test_get_possible_moves_holes_stop_move(self): board = Board("""\ 2 0 0 0 3 3 1 0 0 0 2 - 0 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_ONE, EMPTY, EMPTY], [EMPTY, PLAYER_ONE, HOLE], [EMPTY, EMPTY, PLAYER_ONE]])
def test_get_possible_moves_walk_bottom_left(self): board = Board("""\ 2 0 0 0 3 3 0 0 1 0 2 0 0 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[EMPTY, EMPTY, PLAYER_ONE], [EMPTY, PLAYER_ONE, EMPTY], [PLAYER_ONE, EMPTY, EMPTY]])
def test_get_possible_moves_basic_inversion(self): board = Board("""\ 2 0 0 0 3 3 0 0 1 0 2 0 i 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[EMPTY, EMPTY, PLAYER_TWO], [EMPTY, PLAYER_TWO, EMPTY], [PLAYER_TWO, EMPTY, EMPTY]])
def test_get_possible_moves_walk_through_transition(self): board = Board("""\ 2 0 0 0 3 3 0 2 0 0 1 0 0 0 0 1 2 4 <-> 1 0 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[EMPTY, PLAYER_ONE, EMPTY], [EMPTY, PLAYER_ONE, EMPTY], [EMPTY, PLAYER_ONE, EMPTY]])
def test_get_possible_moves_inversion_with_transition(self): board = Board("""\ 2 0 0 0 3 3 2 - 1 2 2 1 i - - 0 0 0 <-> 0 1 6 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_TWO, HOLE, PLAYER_TWO], [PLAYER_TWO, PLAYER_TWO, PLAYER_TWO], [PLAYER_TWO, HOLE, HOLE]])
def test_get_possible_moves_capture_expansion_rows(self): board = Board("""\ 2 0 0 0 3 3 0 0 0 0 x 0 0 0 1 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE, use_overwrite=True) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_ONE, EMPTY, EMPTY], [EMPTY, PLAYER_ONE, EMPTY], [EMPTY, EMPTY, PLAYER_ONE]]) self.assertEqual(0, next_game_states[0].player_overwrites[PLAYER_ONE])
def test_get_possible_moves_walk_through_loop_transition(self): board = Board("""\ 2 0 0 0 1 9 1 - 2 - 0 - 2 - 1 0 0 6 <-> 8 0 2 2 0 6 <-> 0 0 2 4 0 6 <-> 2 0 2 6 0 6 <-> 4 0 2 8 0 6 <-> 6 0 2 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(1, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_ONE, HOLE, PLAYER_ONE, HOLE, PLAYER_ONE, HOLE, PLAYER_ONE, HOLE, PLAYER_ONE]])
def test_get_possible_moves_basic_choice(self): board = Board("""\ 2 0 0 0 3 3 2 1 0 - 2 - 0 c 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(2, len(next_game_states)) self.assert_board(next_game_states[0].board, [[PLAYER_TWO, PLAYER_ONE, EMPTY], [HOLE, PLAYER_ONE, HOLE], [EMPTY, PLAYER_ONE, EMPTY]]) self.assert_board(next_game_states[1].board, [[PLAYER_ONE, PLAYER_TWO, EMPTY], [HOLE, PLAYER_TWO, HOLE], [EMPTY, PLAYER_TWO, EMPTY]])
def test_get_possible_moves_bonus(self): board = Board("""\ 2 1 0 0 3 3 2 1 0 - 2 - 0 b 0 """) game = GameState(board) next_game_states = game.get_possible_moves_for_player(PLAYER_ONE) self.assertEqual(2, len(next_game_states)) self.assertEqual(next_game_states[0].player_bombs[PLAYER_ONE], 1) self.assertEqual(next_game_states[0].player_bombs[PLAYER_TWO], 0) self.assertEqual(next_game_states[0].player_overwrites[PLAYER_ONE], 1) self.assertEqual(next_game_states[0].player_overwrites[PLAYER_TWO], 1) self.assertEqual(next_game_states[1].player_bombs[PLAYER_ONE], 0) self.assertEqual(next_game_states[1].player_bombs[PLAYER_TWO], 0) self.assertEqual(next_game_states[1].player_overwrites[PLAYER_ONE], 2) self.assertEqual(next_game_states[1].player_overwrites[PLAYER_TWO], 1)