From a38f8ca2e8540cb7155b3ce1de3a3a4c4fa2a98e Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sat, 30 Sep 2017 13:32:21 -0700 Subject: [PATCH] Some unit tests --- test.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 test.py diff --git a/test.py b/test.py new file mode 100644 index 0000000..5517cec --- /dev/null +++ b/test.py @@ -0,0 +1,47 @@ +# test.py +# Eryn Wells +''' +Unit tests for tictactoe. +''' + +import unittest +from tictactoe import Board + +class BoardTests(unittest.TestCase): + def test_default_is_empty(self): + b = Board() + self.assertTrue(b.empty) + self.assertFalse(b.full) + self.assertEqual(b.next_player, Board.X) + + def test_winner(self): + wins = [ + # Rows. + 'xxx o o o', + 'oo xxxo ', + 'o o o xxx', + # Columns. + 'xooxo x ', + 'oxo xo x ', + 'o xo x ox', + # Diagonals. + 'xo ox ox', + 'o xox x o', + ] + for b in wins: + with self.subTest(board=b): + board = Board(b) + self.assertEqual(board.winner, Board.X, 'expected X to win\n{}'.format(board)) + + table = str.maketrans('xo', 'ox') + wins = [b.translate(table) for b in wins] + for b in wins: + with self.subTest(board=b): + board = Board(b) + self.assertEqual(board.winner, Board.O, 'expected O to win\n{}'.format(board)) + +def main(): + unittest.main() + +if __name__ == '__main__': + main()