def test_init(self): ttt = TicTacToe() self.assertEqual(len(ttt.board), 3) self.assertEqual(len(ttt.board[0]), 3) self.assertEqual(ttt.board[0][0], None) self.assertEqual(ttt.board[2][2], None) ttt = TicTacToe(markers=('*', '#')) ttt.make_move(0, 2) ttt.make_move(1, 6) self.assertEqual(ttt.render_row(0), ' 1 | * | 3 \n') self.assertEqual(ttt.render_row(1), ' 4 | 5 | # \n')
def test_is_stalemate(self): ttt = TicTacToe() ttt.make_move(0, 2) ttt.make_move(1, 6) ttt.make_move(0, 8) ttt.make_move(1, 5) ttt.make_move(0, 4) self.assertFalse(ttt.is_stalemate()) ttt.make_move(1, 7) ttt.make_move(0, 3) ttt.make_move(1, 1) ttt.make_move(0, 9) self.assertTrue(ttt.is_stalemate()) # is_stalemate() should return True as long as no valid moves are possible, even if there is a winner ttt = TicTacToe() ttt.make_move(0, 1) ttt.make_move(1, 6) ttt.make_move(0, 2) ttt.make_move(1, 7) ttt.make_move(0, 3) ttt.make_move(1, 8) ttt.make_move(0, 4) ttt.make_move(1, 9) ttt.make_move(0, 5) self.assertTrue(ttt.is_stalemate())
def test_is_valid_move(self): ttt = TicTacToe() self.assertTrue(ttt.is_valid_move(1)) self.assertTrue(ttt.is_valid_move(2)) self.assertTrue(ttt.is_valid_move(3)) self.assertTrue(ttt.is_valid_move(4)) self.assertTrue(ttt.is_valid_move(9)) ttt = TicTacToe() ttt.make_move(0, 2) ttt.make_move(1, 6) ttt.make_move(0, 8) ttt.make_move(1, 5) ttt.make_move(0, 4) self.assertTrue(ttt.is_valid_move(1)) self.assertFalse(ttt.is_valid_move(2)) self.assertTrue(ttt.is_valid_move(3)) self.assertFalse(ttt.is_valid_move(4)) self.assertTrue(ttt.is_valid_move(9)) ttt.make_move(1, 7) ttt.make_move(0, 3) ttt.make_move(1, 1) ttt.make_move(0, 9) self.assertFalse(ttt.is_valid_move(1)) self.assertFalse(ttt.is_valid_move(2)) self.assertFalse(ttt.is_valid_move(3)) self.assertFalse(ttt.is_valid_move(4)) self.assertFalse(ttt.is_valid_move(9)) ttt = TicTacToe(n=1) self.assertTrue(ttt.is_valid_move(1)) ttt.make_move(0, 1) self.assertFalse(ttt.is_valid_move(1))
def test_make_move(self): ttt = TicTacToe() ttt.make_move(0, 2) ttt.make_move(1, 6) self.assertEqual(ttt.render_row(0), ' 1 | X | 3 \n') self.assertEqual(ttt.render_row(1), ' 4 | 5 | O \n')
def test_get_winner(self): # Test no winner ttt = TicTacToe() ttt.make_move(0, 2) ttt.make_move(1, 6) ttt.make_move(0, 8) ttt.make_move(1, 5) ttt.make_move(0, 4) ttt.make_move(1, 7) ttt.make_move(0, 3) ttt.make_move(1, 1) ttt.make_move(0, 9) self.assertEqual(ttt.get_winner(), None) # Test winning column ttt = TicTacToe() ttt.make_move(0, 3) ttt.make_move(1, 5) ttt.make_move(0, 6) ttt.make_move(1, 1) ttt.make_move(0, 9) self.assertEqual(ttt.get_winner(), 0) # Test winning row ttt = TicTacToe() ttt.make_move(0, 2) ttt.make_move(1, 6) ttt.make_move(0, 8) ttt.make_move(1, 5) ttt.make_move(0, 7) ttt.make_move(1, 4) self.assertEqual(ttt.get_winner(), 1) # Test winning diagonal ttt = TicTacToe() ttt.make_move(0, 3) ttt.make_move(1, 8) ttt.make_move(0, 5) ttt.make_move(1, 9) ttt.make_move(0, 7) self.assertEqual(ttt.get_winner(), 0) ttt = TicTacToe(n=1) self.assertEqual(ttt.get_winner(), None) ttt.make_move(0, 1) self.assertEqual(ttt.get_winner(), 0)