def test_capture_p1_not_okay_opp_side(self): g = Game() g._board = [1, 0, 0, 4, 1, 3, 0, 2, 0, 0, 0, 1, 0, 0] g.move(5) self.assertEqual(g._board, [1, 0, 0, 4, 1, 0, 1, 3, 1, 0, 0, 1, 0, 0]) self.assertEqual(g.score(), (1, 0)) self.assertEqual(g.turn_player(), 2)
def test_capture_p1_okay(self): g = Game() g._board = [1, 0, 0, 4, 0, 0, 0, 2, 3, 0, 0, 1, 0, 0] g.move(0) self.assertEqual(g._board, [0, 0, 0, 4, 0, 0, 2, 2, 3, 0, 0, 0, 0, 0]) self.assertEqual(g.score(), (2, 0)) self.assertEqual(g.turn_player(), 2)
def test_p1_Win_over(self): g = Game() g._board = [1, 0, 0, 0, 15, 1, 24, 0, 0, 0, 0, 0, 3, 5] g.move(4) self.assertEqual(g._board, [2, 1, 1, 1, 1, 3, 26, 1, 1, 1, 1, 1, 4, 5]) self.assertEqual(g.score(), (26, 5)) self.assertTrue(g.over())
def test_move_p2(self): """Test move picks a max move for player 2""" game = Game() game.move(4) self.assertEqual(game.turn_player(), 2) move = AgentMax().move(game) self.assertEqual(move, 10)
def test_last_in_end_p2(self): g = Game() g.move(0) g.move(9) self.assertEqual(g._board, [0, 5, 5, 5, 5, 4, 0, 4, 4, 0, 5, 5, 5, 1]) self.assertEqual(g.score(), (0, 1)) self.assertEqual(g.turn_player(), 2)
def game(client, session): game = Game(player_1="Tester", player_2="Checker") session.add(game) session.commit() yield game session.delete(game) session.commit()
def test_move_01(self): g = Game() g.move(1) self.assertEqual(g._board, [4, 0, 5, 5, 5, 5, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(g.turn_player(), 2) self.assertEqual(g.history(), [[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]])
def test_capture_p1_not_okay_empty_opp(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 2] g.move(0) self.assertEqual(g._board, [0, 1, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 2]) self.assertEqual(g.score(), (2, 2)) self.assertEqual(g.turn_player(), 2)
def test_move_p2(self): '''Test move correctly picks 2nd player move''' game = Game() game.move(5) self.assertEqual(game.turn_player(), 2) move = AgentExact().move(game) self.assertEqual(move, 8)
def test_capture_score_not_okay(self): g = Game() g._board = [1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 5] g.move(5) self.assertEqual(g._board, [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 5]) self.assertEqual(g.score(), (1, 5)) self.assertEqual(g.turn_player(), 1)
def test_p1_Win_exact(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 24, 0, 0, 0, 0, 0, 3, 5] g.move(5) self.assertEqual(g._board, [1, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 3, 5]) self.assertEqual(g.score(), (25, 5)) self.assertTrue(g.over())
def test_capture_p1_not_okay_grand_slam(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1] g.move(0) self.assertEqual(g._board, [0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1]) self.assertEqual(g.score(), (1, 1)) self.assertEqual(g.turn_player(), 2)
def test_Illegal_p2_choose_wrong(self): g = Game() g.move(0) g.move(2) self.assertEqual(g._board, [0, 5, 5, 5, 5, 4, 0, 4, 4, 4, 4, 4, 4, 0]) self.assertEqual(g.score(), (0, 0)) self.assertEqual(g.turn_player(), 2)
def test_move_04(self): g = Game() g.move(4) self.assertEqual(g._board, [4, 4, 4, 4, 0, 5, 1, 5, 5, 4, 4, 4, 4, 0]) self.assertEqual(g.score(), (1, 0)) self.assertEqual(g.turn_player(), 2) self.assertEqual(g.history(), [[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0]])
def test_side_01_empty(self): g = Game() g._board = [0, 0, 0, 0, 0, 4, 20, 5, 0, 0, 0, 0, 10, 13] g.move(5) self.assertEqual(g._board, [0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 31]) self.assertEqual(g.score(), (21, 31)) self.assertTrue(g.over())
def test_p2_Win_exact(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 1, 24] g._player_one = False g.move(12) self.assertEqual(g._board, [1, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 0, 25]) self.assertEqual(g.score(), (5, 25)) self.assertTrue(g.over())
def test_capture_p2_not_okay_grand_slam(self): g = Game() g._board = [1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1] g._player_one = False g.move(11) self.assertEqual(g._board, [1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1]) self.assertEqual(g.score(), (1, 1)) self.assertEqual(g.turn_player(), 1)
def test_capture_p2_not_okay_empty_opp(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 1, 2] g._player_one = False g.move(7) self.assertEqual(g._board, [1, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 0, 1, 2]) self.assertEqual(g.score(), (2, 2)) self.assertEqual(g.turn_player(), 1)
def test_Illegal_empty(self): g = Game() g.move(0) g.move(7) g.move(0) self.assertEqual(g._board, [0, 5, 5, 5, 5, 4, 0, 0, 5, 5, 5, 5, 4, 0]) self.assertEqual(g.score(), (0, 0)) self.assertEqual(g.turn_player(), 1)
def test_p2_Win_over(self): g = Game() g._board = [1, 0, 0, 0, 0, 1, 5, 1, 0, 0, 0, 0, 15, 24] g._player_one = False g.move(12) self.assertEqual(g._board, [3, 1, 1, 1, 1, 2, 5, 2, 1, 1, 1, 1, 1, 26]) self.assertEqual(g.score(), (5, 26)) self.assertTrue(g.over())
def test_creates_a_new_game(): mock_mancala_board = mock.Mock() mock_player_one = mock.Mock() mock_player_two = mock.Mock() game = Game(mock_mancala_board, mock_player_one, mock_player_two) assert game.game == mock_mancala_board assert game.players == [mock_player_one, mock_player_two]
def test_capture_p2_not_okay_opp_side(self): g = Game() g._board = [1, 0, 0, 1, 0, 0, 0, 2, 3, 0, 0, 1, 0, 0] g._player_one = False g.move(11) self.assertEqual(g._board, [0, 0, 0, 1, 0, 0, 0, 2, 3, 0, 0, 0, 0, 2]) self.assertEqual(g.score(), (0, 2)) self.assertEqual(g.turn_player(), 1)
def test_capture_p1(self): """Max should spot a capture as the highest option""" game = Game([1, 0, 0, 4, 0, 0, 0, 2, 3, 0, 0, 1, 0, 0]) move = AgentMax().move(game) self.assertEqual(move, 0) game.move(move) self.assertEqual(game.board(), [0, 0, 0, 4, 0, 0, 2, 2, 3, 0, 0, 0, 0, 0]) self.assertEqual(game.score(), (2, 0))
def test_side_02_empty(self): g = Game() g._board = [1, 0, 0, 0, 0, 7, 20, 0, 0, 0, 0, 0, 3, 10] g._player_one = False g.move(12) self.assertEqual(g._board, [0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 11]) self.assertEqual(g.score(), (30, 11)) self.assertTrue(g.over())
def test_move_11(self): g = Game() g.move(0) g.move(11) self.assertEqual(g._board, [1, 6, 5, 5, 5, 4, 0, 4, 4, 4, 4, 0, 5, 1]) self.assertEqual(g.score(), (0, 1)) self.assertEqual(g.turn_player(), 1) self.assertEqual(g.history(), [[4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0], [0, 5, 5, 5, 5, 4, 0, 4, 4, 4, 4, 4, 4, 0]])
def test_random_move_02(self): """Test multiple moves""" game = Game() agent = AgentRandom(454) move = agent.move(game) self.assertEqual(move, 5) game.move(move) move = agent.move(game) self.assertEqual(move, 12)
def test_double_exact(self): """If more than one exact, choose closest to score first""" game = Game([6, 5, 4, 3, 2, 1, 0, 1, 1, 1, 1, 1, 1, 1]) move = AgentExact().move(game) self.assertEqual(move, 5) game.move(move) move = AgentExact().move(game) self.assertEqual(move, 4) game.move(move) move = AgentExact().move(game) self.assertEqual(move, 5)
def test_player_one_takes_a_turn(self): current_player = 1 mock_mancala_board = mock.Mock() mock_player_one = mock.Mock() mock_player_two = mock.Mock() mock_mancala_board.game_over.return_value = True mock_player_one.play.return_value = False game = Game(mock_mancala_board, mock_player_one, mock_player_two) game.play(current_player) assert mock_player_one.play.call_count == 1
def board_str_to_game(board, player_turn): """Turns parameters into game or error tuple""" board_arr = split_string(board, 2) if len(board_arr) != 14: return jsonify({"error": "Invalid Board"}), 400 if player_turn != 1 and player_turn != 2: return jsonify({"error": "Invalid Player"}), 400 game = Game(board_arr, player_turn) return game
def test_player_one_takes_an_extra_turn(self): current_player = 1 mock_mancala_board = mock.Mock() mock_player_one = mock.Mock() mock_player_two = mock.Mock() mock_mancala_board.game_over.side_effect = [False, True] mock_player_one.play.side_effect = [True, False] game = Game(mock_mancala_board, mock_player_one, mock_player_two) game.play(current_player) assert mock_player_one.play.call_count == 2