class Tests(object): def __init__(self, width, height, checkersToWin): self.width = width self.height = height self.checkersToWin = 3 self.board = Board(width, height) self.boardView = BoardView(6) def runTests(self): print("Running tests...") self._checkVerticals() self._checkHorizontals() self._checkPositiveDiagonals() self._checkNegativeDiagonals() self._checkForCatsGame() self.board.reset() def _checkHorizontals(self): print("Checking horizontal win states") for r in range(0, self.height): self.board.reset() for c in range(0, self.width): self.board.checkers[c][r] = Checker(True) self.boardView.showBoard(self.board) self._checkWinState() def _checkVerticals(self): print("Checking vertical win states") for c in range(0, self.width): self.board.reset() for r in range(0, self.height): self.board.checkers[c][r] = Checker(True) self._checkWinState() self.boardView.showBoard(self.board) def _checkPositiveDiagonals(self): print("Checking positive diaganol win states") for c in range(0, self.width): for r in range(0, self.height): self.board.reset() if (c + self.checkersToWin -1 < self.width): if (r + self.checkersToWin - 1 < self.height): for n in range(0, self.checkersToWin): self.board.setChecker(c+n, r+n, True) self._checkWinState() self.boardView.showBoard(self.board) def _checkNegativeDiagonals(self): print("Checking negative diaganol win states") for c in range(0, self.width): for r in range(0, self.height): self.board.reset() if (c + self.checkersToWin <= self.width): if (1 + r - self.checkersToWin >= 0): for n in range(0, self.checkersToWin): self.board.setChecker(c+n, r -n, True) self._checkWinState() self.boardView.showBoard(self.board) def _checkForCatsGame(self): print("Checking if cats game is detected") pieces = [(0,0, True), (1,0, True), (2, 0, False), (0, 1, False), (1,1, False), (2, 1, True), (0,2, True), (1, 2 ,False), (2, 2, True)] for p in range(0, len(pieces)): column, row, color = pieces[p] self.board.setChecker(column, row, color) cats = self.board.isCatsGame(self.checkersToWin) if (cats) : print("* Pass") else : print("Fail") def _checkWinState(self): hasWin = self.board.hasWinner(3) if (hasWin > -1): print("* Pass") else : print("Fail")