diff --git a/schach/pom.xml b/schach/pom.xml index 77507e0..3674f62 100644 --- a/schach/pom.xml +++ b/schach/pom.xml @@ -33,13 +33,12 @@ chesslib 1.3.4 - - - junit - junit - 3.8.1 - test - + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + org.mockito diff --git a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/AppTest.java b/schach/src/test/java/de/hs_mannheim/informatik/chess/test/AppTest.java deleted file mode 100644 index e1d673d..0000000 --- a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/AppTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package de.hs_mannheim.informatik.chess.test; - -import junit.framework.*; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static TestSuite suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ControllerTest.java b/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ControllerTest.java deleted file mode 100644 index 17833ac..0000000 --- a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ControllerTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package de.hs_mannheim.informatik.chess.test; - -import static org.junit.jupiter.api.Assertions.*; - -import de.hs_mannheim.informatik.chess.controller.GameController; -import de.hs_mannheim.informatik.chess.controller.GameEndCallback; -import de.hs_mannheim.informatik.chess.model.*; -import de.hs_mannheim.informatik.chess.view.GameGui; - - - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import static org.mockito.Mockito.*; - -import java.util.List; - -import javax.swing.JLabel; - -public class ControllerTest { - - - private GameController controller; - private ChessEngine engineMock; - private GameGui guiMock; - private GameEndCallback callback; - - - - @BeforeEach - public void setUp() { - engineMock = mock(ChessEngine.class); - guiMock = mock(GameGui.class); - - // Simuliere 8x8 JLabel-Felder - JLabel[][] fakeFields = new JLabel[8][8]; - for (int row = 0; row < 8; row++) { - for (int col = 0; col < 8; col++) { - fakeFields[row][col] = new JLabel(); - when(guiMock.getField(row, col)).thenReturn(fakeFields[row][col]); - } - } - // Simuliere Flip-Button (falls verwendet) - when(guiMock.getFlipBoardButton()).thenReturn(new javax.swing.JButton()); - - // Jetzt ist der Controller sicher - controller = new GameController(guiMock, engineMock, callback); - } - - @Test //Testet dass keine Fehlermeldung bei legalen Move kommt - public void reagiertRichtigAufMove_WennMoveErlaubt() { - MoveDTO move = new MoveDTO(1, 1, 2, 2); - when(engineMock.move(move)).thenReturn(true); - when(engineMock.getMoveListStringsGrouped()).thenReturn(List.of("1. e4 e5")); - - controller.handleMove(move); - - verify(guiMock).updateMoveList(List.of("1. e4 e5")); - verify(guiMock, never()).displayMessage("Ungültiger Zug!"); - } - - - @Test //Testet dass keine Fehlermeldung bei legalen Move kommt - public void reagiertRichtigAufMove_WennMoveNichtErlaubt() { - MoveDTO move = new MoveDTO(1, 1, 2, 2); - when(engineMock.move(move)).thenReturn(false); - - controller.handleMove(move); - verify(guiMock).displayMessage("Ungültiger Zug!"); - verify(guiMock, never()).updateMoveList(any()); - } - - - - -} diff --git a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ModelTest.java b/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ModelTest.java index 6c7d620..c8fae4b 100644 --- a/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ModelTest.java +++ b/schach/src/test/java/de/hs_mannheim/informatik/chess/test/ModelTest.java @@ -142,5 +142,81 @@ class ModelTest { assertTrue(engine.isDraw()); } + @Test + public void MethodeGibtRichtigeFigurZurück() { + String type = "KING"; + String color= "WHITE"; + PieceDTO test = engine.getPieceAt("E1"); + assertEquals(type, test.getType()); + assertEquals(color, test.getColor()); + } + + @Test + public void MethodeGibtRichtigenPlayerZurück() { + assertEquals("WHITE", engine.getCurrentPlayer()); + engine.move(new MoveDTO(6, 4, 4, 4)); + assertEquals("BLACK", engine.getCurrentPlayer()); + } + + @Test + public void MethodeSetztBoardRichtigzurück() { + engine.move(new MoveDTO(6,4,4,4)); // e2-e4 + engine.move(new MoveDTO(1,4,3,4)); // e7-e5 + engine.setPositionToMoveIndex(1); + PieceDTO pawn = engine.getPieceAt("E4"); + assertNotNull(pawn); + assertEquals("PAWN", pawn.getType()); + assertNull(engine.getPieceAt("E5")); + assertEquals(1, engine.getCurrentMoveIndex()); + } + + @Test + public void FigurZurQueenBefördernklappt() { + engine.setPositionFromFEN("8/P7/8/8/8/8/8/k6K w - - 0 1"); // Weißer Bauer auf a7, Weiß am Zug + boolean moved = engine.moveWithPromotion(new MoveDTO(1, 0, 0, 0), "QUEEN"); // a7-a8=Dame + assertTrue(moved); + PieceDTO piece = engine.getPieceAt("A8"); + assertEquals("QUEEN", piece.getType()); + assertEquals("WHITE", piece.getColor()); + } + + @Test + public void fenAufbauFunktioniert() { + // Beispiel-FEN: Weißer König auf e1, schwarze Dame auf d8, schwarzer Bauer auf a7, Rest leer + String fen = "3q4/p7/8/8/8/8/8/4K3 w - - 0 1"; + engine.setPositionFromFEN(fen); + + // Kontrolliere schwarze Dame auf d8 (0,3) + PieceDTO d8 = engine.getPieceAt("D8"); + assertEquals("QUEEN", d8.getType()); + assertEquals("BLACK", d8.getColor()); + + // Kontrolliere schwarzen Bauern auf a7 (1,0) + PieceDTO a7 = engine.getPieceAt("A7"); + assertEquals("PAWN", a7.getType()); + assertEquals("BLACK", a7.getColor()); + + // Kontrolliere weißen König auf e1 (7,4) + PieceDTO e1 = engine.getPieceAt("E1"); + assertEquals("KING", e1.getType()); + assertEquals("WHITE", e1.getColor()); + + // Leeres Feld testen: e2 (6,4) + PieceDTO e2 = engine.getPieceAt("E2"); + assertNull(e2); + + // Leeres Feld testen: h5 (3,7) + PieceDTO h5 = engine.getPieceAt("H5"); + assertNull(h5); + } + + + @Test + public void timerWirdRichtigErstellt() { + engine.initTimers(5, 30); + assertEquals(330, engine.getWhiteTimer().getSecondsLeft()); + assertEquals(330, engine.getBlackTimer().getSecondsLeft()); + } + } \ No newline at end of file diff --git a/schach/target/classes/META-INF/maven/de.hs-mannheim.informatik.schach/schach/pom.xml b/schach/target/classes/META-INF/maven/de.hs-mannheim.informatik.schach/schach/pom.xml index 77507e0..3674f62 100644 --- a/schach/target/classes/META-INF/maven/de.hs-mannheim.informatik.schach/schach/pom.xml +++ b/schach/target/classes/META-INF/maven/de.hs-mannheim.informatik.schach/schach/pom.xml @@ -33,13 +33,12 @@ chesslib 1.3.4 - - - junit - junit - 3.8.1 - test - + + org.junit.jupiter + junit-jupiter + 5.10.2 + test + org.mockito