def test_o_wins(self): board = TicTacToeBoard() board["C3"] = "O" board["A3"] = "X" board["B2"] = "O" board["B1"] = "X" board["A1"] = "O" self.assertEqual("O wins!", board.game_status())
def test_draw(self): board = TicTacToeBoard() board["A1"] = 'O' board["B1"] = 'X' board["A3"] = 'O' board["A2"] = 'X' board["C2"] = 'O' board["C3"] = 'X' board["B3"] = 'O' board["B2"] = 'X' board["C1"] = 'O' self.assertEqual('Draw!', board.game_status())
def test_print_empty_board(self): board = TicTacToeBoard() empty_board = """ ------------- 3 | | | | ------------- 2 | | | | ------------- 1 | | | | ------------- A B C """ self.assertEqual(empty_board.strip(), str(board).strip())
def test_print_full_board(self): board = TicTacToeBoard() board_str = """ ------------- 3 | X | X | X | ------------- 2 | O | O | X | ------------- 1 | O | X | O | ------------- A B C """ board["A3"] = "X" board["A2"] = "O" board["B3"] = "X" board["B2"] = "O" board["C3"] = "X" board["C1"] = "O" board["C2"] = "X" board["A1"] = "O" board["B1"] = "X" self.assertEqual(board_str.strip(), str(board).strip())
def test_move_when_cell_number_before_letter_raises(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidKey): board["1B"] = "X"
def test_game_in_progress_when_board_instantiated(self): board = TicTacToeBoard() self.assertEqual("Game in progress.", board.game_status())
def test_move_twice_with_same_value(self): board = TicTacToeBoard() with self.assertRaises(solution.NotYourTurn): board["A1"] = 'X' board["B1"] = 'X'
def test_move_twice_on_same_cell(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidMove): board["A1"] = 'X' board["A1"] = 'O'
def test_can_move_when_cell_valid(self): board = TicTacToeBoard() board["B1"] = "X" board["C1"] = "O" self.assertEqual(board["B1"], "X") self.assertEqual(board["C1"], "O")
def test_move_when_invalid_value(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidValue): board["B3"] = "d"
def test_move_when_cell_has_invalid_number(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidKey): board["B8"] = "X"
def test_move_when_cell_is_invalid_letter(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidKey): board["Z"] = "X"
def test_move_when_cell_is_just_a_number(self): board = TicTacToeBoard() with self.assertRaises(solution.InvalidKey): board["1"] = "X"
def test_game_in_progress(self): board = TicTacToeBoard() board["A1"] = 'X' board["A3"] = 'O' self.assertEqual('Game in progress.', board.game_status())
def setUp(self): self.board = TicTacToeBoard()
class TestTicTacToe(unittest.TestCase): def setUp(self): self.board = TicTacToeBoard() # # column tests def test_left_column_with_x_win(self): self.board["A1"] = "X" self.board["B2"] = "O" self.board["A2"] = "X" self.board["B3"] = "O" self.board["A3"] = "X" self.assertEqual("X wins!", self.board.game_status()) def test_middle_column_with_x_win(self): self.board["B1"] = "X" self.board["A1"] = "O" self.board["B2"] = "X" self.board["A2"] = "O" self.board["B3"] = "X" self.assertEqual("X wins!", self.board.game_status()) def test_right_column_with_x_win(self): self.board["C1"] = "X" self.board["A1"] = "O" self.board["C2"] = "X" self.board["B2"] = "O" self.board["C3"] = "X" self.assertEqual("X wins!", self.board.game_status()) # # row tests def test_low_row_with_x_win(self): self.board["A1"] = "X" self.board["A3"] = "O" self.board["B1"] = "X" self.board["B2"] = "O" self.board["C1"] = "X" self.assertEqual("X wins!", self.board.game_status()) def test_middle_row_with_x_win(self): self.board["A2"] = "X" self.board["A1"] = "O" self.board["B2"] = "X" self.board["B3"] = "O" self.board["C2"] = "X" self.assertEqual("X wins!", self.board.game_status()) def test_top_row_with_x_win(self): self.board["A3"] = "X" self.board["A2"] = "O" self.board["B3"] = "X" self.board["B2"] = "O" self.board["C3"] = "X" self.assertEqual("X wins!", self.board.game_status()) # # diagonal tests def test_main_diagonal_with_x_win(self): self.board["A1"] = "X" self.board["A2"] = "O" self.board["B2"] = "X" self.board["B3"] = "O" self.board["C3"] = "X" self.assertEqual("X wins!", self.board.game_status()) def test_main_diagonal_with_x_win(self): self.board["C1"] = "X" self.board["A2"] = "O" self.board["B2"] = "X" self.board["B3"] = "O" self.board["A3"] = "X" self.assertEqual("X wins!", self.board.game_status()) # # column tests def test_left_column_with_o_win(self): self.board["A1"] = "O" self.board["B1"] = "X" self.board["A2"] = "O" self.board["B2"] = "X" self.board["A3"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_middle_column_with_o_win(self): self.board["B1"] = "O" self.board["A1"] = "X" self.board["B2"] = "O" self.board["A2"] = "X" self.board["B3"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_right_column_with_o_win(self): self.board["C1"] = "O" self.board["A1"] = "X" self.board["C2"] = "O" self.board["A3"] = "X" self.board["C3"] = "O" self.assertEqual("O wins!", self.board.game_status()) # # row tests def test_low_row_with_o_win(self): self.board["A1"] = "O" self.board["B2"] = "X" self.board["B1"] = "O" self.board["C2"] = "X" self.board["C1"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_middle_row_with_o_win(self): self.board["A2"] = "O" self.board["A1"] = "X" self.board["B2"] = "O" self.board["C3"] = "X" self.board["C2"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_top_row_with_o_win(self): self.board["A3"] = "O" self.board["A1"] = "X" self.board["B3"] = "O" self.board["B2"] = "X" self.board["C3"] = "O" self.assertEqual("O wins!", self.board.game_status()) # # diagonal tests def test_main_diagonal_with_o_win(self): self.board["A1"] = "O" self.board["A2"] = "X" self.board["B2"] = "O" self.board["B3"] = "X" self.board["C3"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_main_diagonal_with_o_win(self): self.board["C1"] = "O" self.board["A2"] = "X" self.board["B2"] = "O" self.board["B3"] = "X" self.board["A3"] = "O" self.assertEqual("O wins!", self.board.game_status()) def test_draw(self): self.board["B1"] = "O" self.board["A1"] = "X" self.board["A2"] = "O" self.board["B2"] = "X" self.board["C3"] = "O" self.board["C2"] = "X" self.board["A3"] = "O" self.board["B3"] = "X" self.board["C1"] = "O" self.assertEqual("Draw!", self.board.game_status()) def test_game_in_progress(self): self.board["A1"] = "X" self.board["A2"] = "O" self.assertEqual("Game in progress.", self.board.game_status()) # test __str__() method def test_print_empty_board(self): board_string = "\n -------------\n\ 3 | | | |\n\ -------------\n\ 2 | | | |\n\ -------------\n\ 1 | | | |\n\ -------------\n\ A B C \n" self.assertEqual(board_string, self.board.__str__()) def test_print_full_board(self): self.board["B1"] = "O" self.board["A1"] = "X" self.board["A2"] = "O" self.board["B2"] = "X" self.board["C3"] = "O" self.board["C2"] = "X" self.board["A3"] = "O" self.board["B3"] = "X" self.board["C1"] = "O" board_string = "\n -------------\n\ 3 | O | X | O |\n\ -------------\n\ 2 | O | X | X |\n\ -------------\n\ 1 | X | O | O |\n\ -------------\n\ A B C \n" self.assertEqual(board_string, self.board.__str__())