def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de zwarte pawn op de A column 2 stappen naar voren, naar de squares A6 en A5.
        actual = []
        for square in ui.black_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA6', 'squareA5'], actual)

        # Daarna kan de zwarte pawn alleen 1x naar voren.
        ui.black_pawn_a.move(0, 200)
        ui.black_pawn_a.hasMoved = True
        actual = []
        for square in ui.black_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA5'], actual)

        # Als er iets diagonaal van de pawn staat en het is van het andere team, dan kan de pawn hem aanvallen.
        ui.white_pawn_a.move(100, 300)
        actual = []
        for square in ui.black_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA5', 'squareB5'], actual)
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de pawn 2 stappen naar voren.
        actual = []
        for square in ui.white_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA3', 'squareA4'], actual)

        # Als de pawn heeft bewogen kan hij alleen 1 stap naar voren.
        ui.white_pawn_a.hasMoved = True
        ui.white_pawn_a.move(0, 400)
        actual = []
        for square in ui.white_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA5'], actual)

        # Als er iets diagonaal van de pawn staat, dan kan hij dat aanvallen.
        ui.black_pawn_a.move(100, 300)
        actual = []
        for square in ui.white_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA5', 'squareB5'], actual)

        # Maar hij kan het niet aanvallen als het van zijn eigen team is.
        ui.black_pawn_a.move(-100, -100)
        ui.white_pawn_b.move(100, 300)
        actual = []
        for square in ui.white_pawn_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA5'], actual)
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # Als de queen in het begin op de square E4 staat, dan kan hij naar 19 verschillende squares.
        ui.white_queen.move(400, 400)
        self.assertEqual(19, len(ui.white_queen.getLegalMoves()))
Example #4
0
    def testGetPosition(self):
        # Test de getPosition functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de positie van de zwarte koning E8
        self.assertEqual("squareE8", ui.black_king.getPosition().objectName())

        # In het begin is de positie van de witte queen D1
        self.assertEqual("squareD1", ui.white_queen.getPosition().objectName())
Example #5
0
    def testContainsPiece(self):
        # Test de containsPiece functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin staat op de square A1 een witte rook.
        self.assertEqual("white_rook_a", ui.squareA1.containsPiece().objectName())

        # In het begin staat op de square A5 niks.
        self.assertEqual(None, ui.squareA5.containsPiece())
    def testCheckIsolatedPawns(self):
        # Test de checkIsolated functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is geen een pawn geisoleerd
        self.assertEqual(False, ui.black_pawn_a.checkIsolated())

        # Als de pawn op de column B weg gaat, dan hoort de pawn op de column A geisoleerd te zijn.
        ui.black_pawn_b.move(0, 200)
        self.assertEqual(True, ui.black_pawn_a.checkIsolated())
    def testCheckDoubledPawns(self):
        # Test de checkDoubledPawns functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de pawn niet doubled.
        self.assertEqual(False, ui.white_pawn_a.checkDoubledPawns())

        # Als de pawn op column B verzetten naar column A, dan is er sprake van doubled pawns.
        ui.white_pawn_b.move(0, 500)
        self.assertEqual(True, ui.white_pawn_a.checkDoubledPawns())
    def testCheckIsolatedPawns(self):
        # Test de checkIsolated functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de pawn niet geisoleerd.
        self.assertEqual(False, ui.white_pawn_a.checkIsolated())

        # Als we de pawn op de column B weghalen, dan is de pawn op column A geisoleerd.
        ui.board.currentWhitePieces.remove(ui.white_pawn_b)
        self.assertEqual(True, ui.white_pawn_a.checkIsolated())
    def testCheckDoubledPawns(self):
        # Test de checkDoubledPawns functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is geen een pawn doubled
        self.assertEqual(False, ui.black_pawn_a.checkDoubledPawns())

        # Maar als we de pawn op column B verzetten naar dezelfde column als pawn A, dan is hij doubled.
        ui.black_pawn_b.move(0, 200)
        self.assertEqual(True, ui.black_pawn_a.checkDoubledPawns())
Example #10
0
    def testBishopLongDiagonal(self):
        # Test de bishopLongDiagonal functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de bishop niet op de long diagonal, dus hoort het false te geven.
        self.assertEqual(False, ui.black_bishop_c.bishopLongdiagonal())

        # Als de bishop op F3 staat, dan staat hij op de long diagonal, dus hoort hij true te geven.
        ui.black_bishop_c.move(500, 500)
        self.assertEqual(True, ui.black_bishop_c.bishopLongdiagonal())
Example #11
0
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de bishop niet bewegen en dus hoort de lijst leeg te zijn.
        self.assertEqual([], ui.black_bishop_c.getLegalMoves())

        # Als de bishop op F4 staat, dan kan hij naar 8 squares toe.
        ui.black_bishop_c.move(500, 400)
        self.assertEqual(8, len(ui.black_bishop_c.getLegalMoves()))
Example #12
0
    def testOpenFile(self):
        # Test de openFile functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de rook niet op een open file.
        self.assertEqual(False, ui.white_rook_a.openFile())

        # Als de twee pawns op de column A weg zijn, dan is hij op een openfile.
        ui.white_pawn_a.move(-100, -100)
        ui.black_pawn_a.move(-100, -100)
        self.assertEqual(True, ui.white_rook_a.openFile())
Example #13
0
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is hij 50 punten waard
        self.assertEqual(50, ui.white_rook_a.getValue())

        # Als een witte rook op de 7de rij staat, krijgt hij 4 extra punten
        ui.black_pawn_a.move(-100, -100)
        ui.white_rook_a.move(0, 100)
        self.assertEqual(54, ui.white_rook_a.getValue())
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de queen 92 punten waard, want er bestaat een queen en een knight.
        self.assertEqual(92, ui.white_queen.getValue())

        # Als er geen knights zijn, dan krijgt de queen geen extra punten en dus is ze 90 punten waard
        ui.board.currentWhitePieces.remove(ui.white_knight_b)
        ui.board.currentWhitePieces.remove(ui.white_knight_g)
        self.assertEqual(90, ui.white_queen.getValue())
Example #15
0
    def testProtectingPastPawn(self):
        # Test de protectingPastPawn functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In de volgende scenario is de witte pawn op rij 7 en zit een rook hem te beschermen.
        ui.black_pawn_a.move(-100, -100)
        ui.white_pawn_a.move(0, 100)
        self.assertEqual(True, ui.white_rook_a.protectingPastPawn())

        # In de volgende scenario is de zwarte pawn op rij 2 en zit een rook hem te beschermen.
        ui.black_pawn_a.move(0, 600)
        ui.white_pawn_a.move(-100, -100)
        self.assertEqual(True, ui.black_rook_a.protectingPastPawn())
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de knight aan de zijkant en dus verliest hij 1 punt van zijn 30 punten.
        self.assertEqual(29, ui.white_knight_b.getValue())

        # Maar als we hem in het midden zetten, krijgt hij 2 extra punten.
        ui.white_knight_b.move(400, 400)
        self.assertEqual(32, ui.white_knight_b.getValue())

        # Als hij net buiten het midden zit, krijgt hij 1 extra punt.
        ui.white_knight_b.move(500, 500)
        self.assertEqual(31, ui.white_knight_b.getValue())
Example #17
0
    def testGetValue(self):
        # Test de getValue functie van Bishop.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin staat de bishop aan de buitenkant, dus hoort hij 29 punten te geven.
        self.assertEqual(29, ui.black_bishop_c.getValue())

        # Als de bishop op F4 staat, dan hoort hij 31 punten te geven.
        ui.black_bishop_c.move(500, 400)
        self.assertEqual(31, ui.black_bishop_c.getValue())

        # Als de bishop on de long diagonal zit, dan hoort hij 32 punten te geven
        ui.black_bishop_c.move(100, 600)
        self.assertEqual(32, ui.black_bishop_c.getValue())
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin hoort de value 10 te zijn.
        self.assertEqual(10, ui.black_pawn_d.getValue())

        # Als de pawn in het midden is, dan krijgt hij extra punten
        ui.black_pawn_d.move(300, 400)
        self.assertEqual(12, ui.black_pawn_d.getValue())

        # Als de pawn op de pawn bijna promoveert, krijgt hij extra punten
        ui.black_pawn_d.move(300, 600)
        self.assertEqual(15, ui.black_pawn_d.getValue())
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin krijgt de pawn geen extra punten.
        self.assertEqual(10, ui.white_pawn_a.getValue())

        # Als we de pawn in het midden krijgen, dan krijgt hij 2 extra punten.
        ui.white_pawn_d.move(300, 400)
        self.assertEqual(12, ui.white_pawn_d.getValue())

        # Als de pawn bijna promoveert, krijgt hij 5 extra punten.
        ui.white_pawn_d.move(300, 100)
        self.assertEqual(15, ui.white_pawn_d.getValue())
Example #20
0
    def testCastleShort(self):
        # Test de castleShort functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de koning niet castlen
        self.assertEqual(None, ui.white_king.castleShort())

        # Als de plekken vrij zijn, dan kan de koning wel castlen
        ui.white_bishop_f.move(-100, -100)
        ui.white_knight_g.move(-100, -100)
        self.assertEqual("squareG1", ui.white_king.castleShort().objectName())

        # Maar als de koning geen castleRights heeft dan kan hij niet castlen
        ui.white_king.castleRights = False
        self.assertEqual(None, ui.white_king.castleShort())
Example #21
0
    def testGetValue(self):
        # Test de getValue functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin is de koning 903 punten waard, meer dan alle andere schaakstukken bij elkaar.
        self.assertEqual(903, ui.white_king.getValue())

        # Als de koning heeft gecastled, dan krijgt de koning 3 punten
        ui.white_king.hasCastled = True
        self.assertEqual(906, ui.white_king.getValue())

        # Als de koning niet meer kan castlen en nog niet heeft gecastled, dan verliest hij 4 punten.
        ui.white_king.hasCastled = False
        ui.white_king.castleRights = False
        self.assertEqual(899, ui.white_king.getValue())
Example #22
0
    def testCheckForCheckmate(self):
        # Test de checkForCheckmate functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In de volgende scenario is de zwarte koning schaakmat dus hoort de functie true te geven
        ui.black_pawn_f.move(-100, -100)
        ui.board.currentBlackPieces.remove(ui.black_pawn_f)
        ui.white_queen.move(500, 100)
        ui.white_bishop_c.move(200, 400)
        self.assertEqual(True, ui.black_king.checkForCheckmate())

        # Maar als we een plek vrij maken voor de koning, waar de koning naar toe kan gaan, dan is het geen schaakmat
        ui.black_queen.move(-100, -100)
        ui.board.currentBlackPieces.remove(ui.black_queen)
        self.assertEqual(False, ui.black_king.checkForCheckmate())
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de knight op B2 alleen naar A3 en C3.
        actual = []
        for square in ui.white_knight_b.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA3', 'squareC3'], actual)

        # Als we hem op D4 zetten, dan kan de knight naar 6 plekken toe.
        ui.white_knight_b.move(300, 400)
        actual = []
        for square in ui.white_knight_b.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual([
            'squareB3', 'squareB5', 'squareC6', 'squareE6', 'squareF3',
            'squareF5'
        ], actual)
Example #24
0
    def testUnderAttack(self):
        # Test de testUnderAttack functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # Als de koning wordt aangevallen, dan geeft hij correct aan wie hem aanvalt.
        ui.black_queen.move(400, 400)
        ui.white_pawn_e.move(-100, -100)
        actual = []
        for piece in ui.white_king.underAttack():
            actual.append(piece.objectName())
        self.assertEqual(['black_queen'], actual)

        # Dit kunnen meerdere schaakstukken zijn.
        ui.white_pawn_d.move(-100, -100)
        ui.black_bishop_c.move(100, 400)
        actual = []
        for piece in ui.white_king.underAttack():
            actual.append(piece.objectName())
        self.assertEqual(['black_bishop_c', 'black_queen'], actual)
Example #25
0
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de koning nergens naartoe
        self.assertEqual([], ui.black_king.getLegalMoves())

        # Als de plek voor koning vrij is, dan kan de koning er naartoe
        ui.black_pawn_e.move(-100, -100)
        actual = []
        for square in ui.black_king.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(["squareE7"], actual)

        # Als die zelfde plek bezet is door een vijand, dan kan de koning hem aanvallen.
        ui.white_bishop_c.move(400, 100)
        actual = []
        for square in ui.black_king.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(["squareE7"], actual)
Example #26
0
    def testGetLegalMoves(self):
        # Test de getLegalMoves functie.
        app = QtWidgets.QApplication(sys.argv)
        MainWindow = QtWidgets.QMainWindow()
        ui = Ui_MainWindow()
        ui.setupUi(MainWindow)

        # In het begin kan de rook nergens naartoe
        self.assertEqual([], ui.white_rook_a.getLegalMoves())

        # Als de pawn weg zou zijn, dan kan de rook naar alles boven hem, totdat hij een andere chesspiece ontmoet.
        ui.white_pawn_a.move(-100, -100)
        actual = []
        for square in ui.white_rook_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareA2', 'squareA3', 'squareA4', 'squareA5', 'squareA6', 'squareA7'], actual)

        # Als hij op E4 staat in het begin, dan kan hij naar 11 squares toe.
        ui.white_rook_a.move(400, 400)
        actual = []
        for square in ui.white_rook_a.getLegalMoves():
            actual.append(square.objectName())
        self.assertEqual(['squareE3', 'squareE5', 'squareE6', 'squareE7', 'squareD4', 'squareC4',
                          'squareB4', 'squareA4', 'squareF4', 'squareG4', 'squareH4'], actual)