def test_board(self): blank_board = {0: {0: " ", 1: " ", 2: " "}, 1: {0: " ", 1: " ", 2: " "}, 2: {0: " ", 1: " ", 2: " "} } test_board = {0: {0: "X", 1: " ", 2: "O"}, 1: {0: " ", 1: "X", 2: "O"}, 2: {0: "O", 1: " ", 2: "X"} } board = Board() self.assertEqual(board.board(), blank_board) board = Board(setup=test_board) self.assertEqual(board.board(), test_board) for x in range(0, 3): for y in range(0, 3): self.assertEqual(board.square((x, y)), board.board()[x][y]) test_board2 = Board(setup=copy(blank_board)) for i in range(0, 3): test_board2.square((i, i), set_to="X") for coords in ((0, 2), (1, 2), (2, 0)): test_board2.square(coords, set_to="O") self.assertEqual(test_board2.board(), test_board) self.assertEqual(board.check_requirements( [[0, 0], [1, 1], [2, 2]], {"X": 3}), True) self.assertEqual(board.check_requirements( [[0, 2], [1, 2], [2, 2]], {"O": 3}), False) self.assertEqual(board.traverse(requires={"O": 3}), []) self.assertEqual(board.traverse(requires={"O": 2}), [ [(0, 2), (1, 2), (2, 2)], [(0, 2), (1, 1), (2, 0)]])
def test_traverse(self): board = Board() paths = board.traverse() # horizontals for y in range(0, 3): self.assertIn([(0, y), (1, y), (2, y)], paths) # verticals for x in range(0, 3): self.assertIn([(x, 0), (x, 1), (x, 2)], paths) # \ diagonal self.assertIn([(0, 0), (1, 1), (2, 2)], paths) # / diagonal self.assertIn([(0, 2), (1, 1), (2, 0)], paths)