Ejemplo n.º 1
0
class TicTacToeUnitTesting(unittest.TestCase):
    def setUp(self):
        self.Board = Board()

    def test_valid(self):
        board = Board()
        board.mark_square(0, 1, 's')
        self.assertIsNot(board.board[0][1], 'x')

    def test_mark_square(self):
        board = Board()
        board.mark_square(0, 0, 'X')
        self.assertEqual(board.board[0][0], 'X')

    def test_legal_move(self):
        self.assertEqual(self.Board.check_valid(1, 1), True)

    def test_illegal_move_row(self):
        self.assertEqual(self.Board.check_valid(4, 0), False)

    def test_illegal_move_column(self):
        self.assertEqual(self.Board.check_valid(0, 4), False)

    def test_illegal_move_neg_row(self):
        self.assertEqual(self.Board.check_valid(-1, 0), False)

    def test_illegal_move_neg_column(self):
        self.assertEqual(self.Board.check_valid(0, -1), False)

    def test_illegal_move_both(self):
        self.assertEqual(self.Board.check_valid(4, 4), False)

    def test_illegal_move_neg_both(self):
        self.assertEqual(self.Board.check_valid(-1, -1), False)

    def test_vertical_winner(self):
        self.Board.mark_square(1, 0, "X")
        self.Board.mark_square(0, 2, "O")
        self.Board.mark_square(1, 1, "X")
        self.Board.mark_square(0, 1, "O")
        self.Board.mark_square(1, 2, "X")
        print("Vertical Test:")
        self.Board.print_board()
        print("\n")
        self.assertEqual(self.Board.has_winner(), True,
                         "Unit pass for vertical")

    def test_horizontal_winner(self):
        self.Board.mark_square(0, 1, "X")
        self.Board.mark_square(0, 2, "O")
        self.Board.mark_square(1, 1, "X")
        self.Board.mark_square(1, 2, "O")
        self.Board.mark_square(2, 1, "X")
        print("Horizontal Test:")
        self.Board.print_board()
        print("\n")
        self.assertEqual(self.Board.has_winner(), True,
                         "Unit pass for horizontal")

    def test_diagonal_winner(self):
        self.Board.mark_square(0, 0, "X")
        self.Board.mark_square(1, 0, "0")
        self.Board.mark_square(1, 1, "X")
        self.Board.mark_square(0, 2, "0")
        self.Board.mark_square(2, 2, "X")
        print("Diagonal Test:")
        self.Board.print_board()
        print("\n")
        self.assertEqual(self.Board.has_winner(), True,
                         "Unit pass for diagonal")

    def player_switch_X(self):
        self.Board.mark_square(0, 0, "X")
        self.Board.mark_square(0, 1, "X")
        self.assertIsNot(self.Board.mark_square(0, 1, "X"),
                         self.Board.mark_square(0, 1, "O"))

    def player_switch_0(self):
        self.Board.mark_square(1, 0, "O")
        self.Board.mark_square(1, 1, "O")
        self.assertIsNot(self.Board.mark_square(1, 1, "O"),
                         self.Board.mark_square(1, 1, "X"))