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()))
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())
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())
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())
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()))
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())
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())
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())
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())
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())
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())
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)
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)
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)
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)