Exemplo n.º 1
0
 def setUp(self):
     self.computer = Computer(Marks.cross)
Exemplo n.º 2
0
    def test_set_mark_when_nought(self):
        self.computer = Computer(Marks.nought)

        self.assertEqual(self.computer.mark, Marks.nought)
Exemplo n.º 3
0
class ComputerTest(unittest.TestCase):
    def setUp(self):
        self.computer = Computer(Marks.cross)

    def test_set_mark_when_cross(self):
        self.computer = Computer(Marks.cross)

        self.assertEqual(self.computer.mark, Marks.cross)

    def test_set_mark_when_nought(self):
        self.computer = Computer(Marks.nought)

        self.assertEqual(self.computer.mark, Marks.nought)

    def test_switch_when_mark_was_cross(self):
        noughtMark = self.computer.switch(Marks.cross)

        self.assertEqual(noughtMark, Marks.nought)

    def test_switch_when_mark_was_nought(self):
        crossMark = self.computer.switch(Marks.nought)

        self.assertEqual(crossMark, Marks.cross)

    def test_alphabeta_when_maximizing_player_win_score_positive(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.cross)
        self.game_board.set_mark(1, Marks.cross)
        self.game_board.set_mark(2, Marks.cross)

        positive_score = self.computer.alphabeta(maximizing_player,
                                               self.game_board, -100, 100)
        self.assertEqual(positive_score, 1)

    def test_alphabeta_when_minimizing_player_win_score_negative(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.nought)
        self.game_board.set_mark(1, Marks.nought)
        self.game_board.set_mark(2, Marks.nought)

        negative_score = self.computer.alphabeta(maximizing_player,
                                               self.game_board, -100, 100)
        self.assertEqual(negative_score, -1)

    def test_alphabeta_when_its_a_tie_score_neutral(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.nought)
        self.game_board.set_mark(1, Marks.cross)
        self.game_board.set_mark(2, Marks.nought)
        self.game_board.set_mark(3, Marks.nought)
        self.game_board.set_mark(4, Marks.cross)
        self.game_board.set_mark(5, Marks.cross)
        self.game_board.set_mark(6, Marks.cross)
        self.game_board.set_mark(7, Marks.nought)
        self.game_board.set_mark(8, Marks.cross)

        neutral_score = self.computer.alphabeta(maximizing_player,
                                              self.game_board, -100, 100)
        self.assertEqual(neutral_score, 0)

    def test_alphabeta_when_maximizing_player_win_in_both_different_move(self):
        maximizing_player = Marks.nought
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.empty)
        self.game_board.set_mark(1, Marks.cross)
        self.game_board.set_mark(2, Marks.nought)
        self.game_board.set_mark(3, Marks.empty)
        self.game_board.set_mark(4, Marks.cross)
        self.game_board.set_mark(5, Marks.cross)
        self.game_board.set_mark(6, Marks.nought)
        self.game_board.set_mark(7, Marks.nought)
        self.game_board.set_mark(8, Marks.cross)

        positive_score = self.computer.alphabeta(maximizing_player,
                                                 self.game_board, -100, 100)
        self.assertEqual(positive_score, 1)

    def test_alphabeta_when_opposant_win_in_both_different_move(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.empty)
        self.game_board.set_mark(1, Marks.nought)
        self.game_board.set_mark(2, Marks.cross)
        self.game_board.set_mark(3, Marks.empty)
        self.game_board.set_mark(4, Marks.nought)
        self.game_board.set_mark(5, Marks.nought)
        self.game_board.set_mark(6, Marks.cross)
        self.game_board.set_mark(7, Marks.cross)
        self.game_board.set_mark(8, Marks.nought)

        negative_score = self.computer.alphabeta(maximizing_player,
                                                        self.game_board, -100, 100)
        self.assertEqual(negative_score, -1)

    def test_get_move_when_maximizing_can_win(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.cross)
        self.game_board.set_mark(1, Marks.cross)

        win_move = self.computer.get_move(self.game_board)

        self.assertEqual(win_move, 2)

    def test_get_move_when_maximizing_should_block_opposant(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.nought)
        self.game_board.set_mark(1, Marks.nought)

        blocking_move = self.computer.get_move(self.game_board)

        self.assertEqual(blocking_move, 2)

    def test_get_move_when_maximizing_playe_create_opportunity_to_win(self):
        maximizing_player = Marks.cross
        self.game_board = GameBoard(3)
        self.game_board.set_mark(0, Marks.cross)
        self.game_board.set_mark(1, Marks.nought)
        self.game_board.set_mark(2, Marks.empty)
        self.game_board.set_mark(3, Marks.cross)
        self.game_board.set_mark(4, Marks.empty)
        self.game_board.set_mark(5, Marks.empty)
        self.game_board.set_mark(6, Marks.nought)
        self.game_board.set_mark(7, Marks.empty)
        self.game_board.set_mark(8, Marks.empty)

        best_move_possible = self.computer.get_move(self.game_board)

        self.assertEqual(best_move_possible, 4)
Exemplo n.º 4
0
    def test_set_mark_when_cross(self):
        self.computer = Computer(Marks.cross)

        self.assertEqual(self.computer.mark, Marks.cross)