Neue Tests hinzugefügt, ControlleTest entfernt(kein mustHave), weil nach
Änderungen ungültig,GitBranch
parent
b56813d6dc
commit
3aa8897ff1
|
@ -33,13 +33,12 @@
|
||||||
<artifactId>chesslib</artifactId>
|
<artifactId>chesslib</artifactId>
|
||||||
<version>1.3.4</version>
|
<version>1.3.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- JUnit 3 (wie im Template, ggf. auf JUnit 4/5 upgraden für moderne Projekte) -->
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<groupId>junit</groupId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<artifactId>junit</artifactId>
|
<version>5.10.2</version>
|
||||||
<version>3.8.1</version>
|
<scope>test</scope>
|
||||||
<scope>test</scope>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<!-- Mockito damit man Controller und Gui besser testen kann-->
|
<!-- Mockito damit man Controller und Gui besser testen kann-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
|
|
|
@ -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 );
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -142,5 +142,81 @@ class ModelTest {
|
||||||
assertTrue(engine.isDraw());
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -33,13 +33,12 @@
|
||||||
<artifactId>chesslib</artifactId>
|
<artifactId>chesslib</artifactId>
|
||||||
<version>1.3.4</version>
|
<version>1.3.4</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<!-- JUnit 3 (wie im Template, ggf. auf JUnit 4/5 upgraden für moderne Projekte) -->
|
<dependency>
|
||||||
<dependency>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<groupId>junit</groupId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<artifactId>junit</artifactId>
|
<version>5.10.2</version>
|
||||||
<version>3.8.1</version>
|
<scope>test</scope>
|
||||||
<scope>test</scope>
|
</dependency>
|
||||||
</dependency>
|
|
||||||
<!-- Mockito damit man Controller und Gui besser testen kann-->
|
<!-- Mockito damit man Controller und Gui besser testen kann-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.mockito</groupId>
|
<groupId>org.mockito</groupId>
|
||||||
|
|
Loading…
Reference in New Issue