Example #1
0
class TestTicTacToeBoard(unittest.TestCase):
    def setUp(self):
        self.my_tictactoe_board = TicTacToeBoard(5, '', '')

    def test_constructor_is_working(self):
        self.assertEqual(self.my_tictactoe_board.num_squares, 5)
        boolean = False
        if all('-' in x for x in self.my_tictactoe_board.board):
            boolean = True
        self.assertEqual(boolean, True)
        self.assertEqual(self.my_tictactoe_board.whose_turn, 1)
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)

    def test_adding_x_and_o(self):

        # Add first x to empty square
        self.my_tictactoe_board.add_x(0, 0)
        self.assertEqual(
            sum(x.count("x") for x in self.my_tictactoe_board.board), 1)
        self.assertEqual(
            sum(x.count("-") for x in self.my_tictactoe_board.board),
            (self.my_tictactoe_board.num_squares**2) - 1)

        # Test to add x into occupied square
        self.my_tictactoe_board.add_x(0, 0)
        self.assertEqual(
            sum(x.count("x") for x in self.my_tictactoe_board.board), 1)
        self.assertEqual(
            sum(x.count("-") for x in self.my_tictactoe_board.board),
            (self.my_tictactoe_board.num_squares**2) - 1)

        # Add o to an empty square
        self.my_tictactoe_board.add_o(0, 1)
        self.assertEqual(
            sum(x.count("o") for x in self.my_tictactoe_board.board), 1)
        self.assertEqual(
            sum(x.count("-") for x in self.my_tictactoe_board.board),
            (self.my_tictactoe_board.num_squares**2) - 2)

        # Add o to same square than x
        self.my_tictactoe_board.add_o(0, 0)
        self.assertEqual(
            sum(x.count("o") for x in self.my_tictactoe_board.board), 1)
        self.assertEqual(
            sum(x.count("-") for x in self.my_tictactoe_board.board),
            (self.my_tictactoe_board.num_squares**2) - 2)

    def test_if_taken(self):
        self.my_tictactoe_board.add_x(0, 0)
        self.assertTrue(self.my_tictactoe_board.is_taken(0, 0))

    def test_set_winner_right(self):
        self.my_tictactoe_board.set_winner('x')
        self.assertEqual(self.my_tictactoe_board.result, Result.FIRST_WIN)
        self.my_tictactoe_board.set_winner('o')
        self.assertEqual(self.my_tictactoe_board.result, Result.SECOND_WIN)

    def test_check_draw(self):
        self.my_tictactoe_board.add_x(0, 0)
        self.my_tictactoe_board.add_o(0, 1)
        self.my_tictactoe_board.add_o(0, 2)
        self.my_tictactoe_board.add_o(0, 3)
        self.my_tictactoe_board.add_x(0, 4)
        self.my_tictactoe_board.add_x(1, 0)
        self.my_tictactoe_board.add_o(1, 1)
        self.my_tictactoe_board.add_x(1, 2)
        self.my_tictactoe_board.add_x(1, 3)
        self.my_tictactoe_board.add_o(1, 4)
        self.my_tictactoe_board.add_o(2, 0)
        self.my_tictactoe_board.add_x(2, 1)
        self.my_tictactoe_board.add_o(2, 2)
        self.my_tictactoe_board.add_x(2, 3)
        self.my_tictactoe_board.add_o(2, 4)
        self.my_tictactoe_board.add_x(3, 0)
        self.my_tictactoe_board.add_x(3, 1)
        self.my_tictactoe_board.add_o(3, 2)
        self.my_tictactoe_board.add_o(3, 3)
        self.my_tictactoe_board.add_x(3, 4)
        self.my_tictactoe_board.add_x(4, 0)
        self.my_tictactoe_board.add_o(4, 1)
        self.my_tictactoe_board.add_o(4, 2)
        self.my_tictactoe_board.add_x(4, 3)
        self.my_tictactoe_board.add_x(4, 4)
        self.my_tictactoe_board.check_draw()
        self.assertEqual(self.my_tictactoe_board.result, Result.DRAW)

    def test_check_situation_row(self):
        self.my_tictactoe_board.add_x(0, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(0, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(0, 2)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 2)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(0, 3)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.FIRST_WIN)

    def test_check_situation_col(self):
        self.my_tictactoe_board.add_x(0, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(0, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(1, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(2, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(2, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(3, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.FIRST_WIN)

    def test_check_situation_diagonal(self):
        self.my_tictactoe_board.add_x(0, 0)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(0, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(1, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(2, 2)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(2, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(3, 3)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.FIRST_WIN)

    def test_check_situation_diagonal_other_way(self):
        self.my_tictactoe_board.add_x(0, 4)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(0, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(1, 3)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(1, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(2, 2)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_o(2, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.ONGOING)
        self.my_tictactoe_board.add_x(3, 1)
        self.my_tictactoe_board.check_situation()
        self.assertEqual(self.my_tictactoe_board.result, Result.FIRST_WIN)