示例#1
0
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")