Esempio n. 1
0
    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')
Esempio n. 2
0
    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())
Esempio n. 3
0
    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))
Esempio n. 4
0
 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')
Esempio n. 5
0
    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)