Esempio n. 1
0
class BoardTest(unittest.TestCase):
    def setUp(self):
        self.b = Board()

    def test_row_win(self):
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 0, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 2, 'x'))
        self.assertFalse(self.b.finished())
        self.assertFalse(self.b.move(0, 'as', 'x'))
        self.assertFalse(self.b.move(0, 4, 'x'))
        self.assertFalse(self.b.move(4, 0, 'o'))
        self.assertFalse(self.b.move(0, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 1, 'x'))
        self.assertEqual(self.b.finished(), 1)

    def test_col_win(self):
        self.assertTrue(self.b.move(0, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 1, 'o'))
        self.assertEqual(self.b.finished(), 1)

    def test_first_diag_win(self):
        self.assertTrue(self.b.move(0, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 2, 'o'))
        self.assertEqual(self.b.finished(), 1)

    def test_second_diag_win(self):
        self.assertTrue(self.b.move(0, 2, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 0, 'o'))
        self.assertEqual(self.b.finished(), 1)

    def test_draw(self):
        self.assertTrue(self.b.move(0, 0, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 2, 'x'))
        self.assertTrue(self.b.move(1, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 1, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 2, 'o'))
        self.assertTrue(self.b.move(2, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 1, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 2, 'o'))
        self.assertEqual(self.b.finished(), 2)

    def test_all_filled_and_win(self):
        self.assertTrue(self.b.move(0, 0, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(0, 2, 'x'))
        self.assertTrue(self.b.move(1, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 1, 'x'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(1, 2, 'o'))
        self.assertTrue(self.b.move(2, 0, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 1, 'o'))
        self.assertFalse(self.b.finished())
        self.assertTrue(self.b.move(2, 2, 'o'))
        self.assertEqual(self.b.finished(), 1)