ModelTests wurden hinzugefügt
parent
993fa89371
commit
7ebfecc6c4
|
@ -0,0 +1,146 @@
|
|||
package de.hs_mannheim.informatik.chess.test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
import de.hs_mannheim.informatik.chess.model.*;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class ModelTest {
|
||||
|
||||
private ChessEngine engine;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
engine = new ChessEngine(); // Echte Instanz!
|
||||
}
|
||||
|
||||
@Test
|
||||
public void ErkenntObZugLegalOderIllegal()
|
||||
{
|
||||
assertTrue(engine.move(new MoveDTO(6, 4, 4, 4)));
|
||||
|
||||
assertFalse(engine.move(new MoveDTO(7, 0, 5, 1)));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void GibtLegaleMovesAn() {
|
||||
List<MoveDTO> mvs = new ArrayList<>();
|
||||
mvs.add(new MoveDTO(6,4,5,4));
|
||||
mvs.add(new MoveDTO(6,4,4,4));
|
||||
List<MoveDTO> moves = engine.getLegalDestinations("E2");
|
||||
|
||||
assertEquals(2, moves.size());
|
||||
assertTrue(moves.stream().anyMatch(m -> m.getToRow() == 5 && m.getToCol() == 4));
|
||||
assertTrue(moves.stream().anyMatch(m -> m.getToRow() == 4 && m.getToCol() == 4));
|
||||
}
|
||||
|
||||
@Test //Stichprobenartige Kontrolle ob richtige Figur an richtiger Stelle
|
||||
public void BoardWirdRichtigAufgebaut() {
|
||||
BoardDTO board = engine.getBoardAsDTO();
|
||||
PieceDTO a1 = board.getBoard()[7][0];
|
||||
assertEquals("ROOK", a1.getType());
|
||||
assertEquals("WHITE", a1.getColor());
|
||||
|
||||
PieceDTO e1 = board.getBoard()[7][4];
|
||||
assertEquals("KING", e1.getType());
|
||||
assertEquals("WHITE", e1.getColor());
|
||||
|
||||
PieceDTO a8 = board.getBoard()[0][0];
|
||||
assertEquals("ROOK", a8.getType());
|
||||
assertEquals("BLACK", a8.getColor());
|
||||
|
||||
PieceDTO e8 = board.getBoard()[0][4];
|
||||
assertEquals("KING", e8.getType());
|
||||
assertEquals("BLACK", e8.getColor());
|
||||
|
||||
PieceDTO e2 = board.getBoard()[6][4];
|
||||
assertEquals("PAWN", e2.getType());
|
||||
assertEquals("WHITE", e2.getColor());
|
||||
|
||||
PieceDTO d7 = board.getBoard()[1][3];
|
||||
assertEquals("PAWN", d7.getType());
|
||||
assertEquals("BLACK", d7.getColor());
|
||||
|
||||
PieceDTO e4 = board.getBoard()[4][4];
|
||||
assertNull(e4);
|
||||
|
||||
PieceDTO d5 = board.getBoard()[3][3];
|
||||
assertNull(d5);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void speichertMovesRichtigGruppiert() {
|
||||
engine.move(new MoveDTO(6, 6, 4, 6));
|
||||
engine.move(new MoveDTO(1, 4, 3, 4));
|
||||
engine.move(new MoveDTO(7, 6, 5, 5)); //Züge um das speichern zu testen
|
||||
engine.move(new MoveDTO(0, 1, 2, 2));
|
||||
engine.move(new MoveDTO(7, 1, 5, 2));
|
||||
|
||||
|
||||
List<String> gruppiertGespeichert = engine.getMoveListStringsGrouped(); //Moves in Liste gespeichert um zu testen
|
||||
assertTrue(gruppiertGespeichert.size() >= 3, "Zu wenige gespeicherte Gruppen");
|
||||
assertTrue(gruppiertGespeichert.get(0).startsWith("1."));
|
||||
assertTrue(gruppiertGespeichert.get(1).startsWith("2."));
|
||||
assertTrue(gruppiertGespeichert.get(2).startsWith("3."));
|
||||
|
||||
for (int i = 0; i < gruppiertGespeichert.size(); i++) {
|
||||
String[] parts = gruppiertGespeichert.get(i).split(" ");
|
||||
if (i == gruppiertGespeichert.size() - 1) {
|
||||
assertTrue(parts.length == 2 || parts.length == 3);
|
||||
} else {
|
||||
assertEquals(3, parts.length);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void erkenntMattKorrekt() {
|
||||
|
||||
assertFalse(engine.isMated()); //<--Test, dass nicht immer alles einfach Matt ist
|
||||
engine.setPositionFromFEN("7k/6Q1/5K2/8/8/8/8/8 b - - 0 1"); //<--Matt position vorbereiten
|
||||
|
||||
System.out.println("Aktueller Spieler: " + engine.getCurrentPlayer());
|
||||
System.out.println("isMated(): " + engine.isMated());
|
||||
|
||||
assertEquals("BLACK", engine.getCurrentPlayer());
|
||||
assertTrue(engine.isMated()); //<Test ob nun spieler Matt ist
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void erkenntPattKorrekt() {
|
||||
|
||||
assertFalse(engine.isStalemate());
|
||||
engine.setPositionFromFEN("7k/5Q2/6K1/8/8/8/8/8 b - - 0 1");
|
||||
|
||||
System.out.println("Aktueller Spieler: " + engine.getCurrentPlayer());
|
||||
System.out.println("isStalemate(): " + engine.isStalemate());
|
||||
|
||||
assertEquals("BLACK", engine.getCurrentPlayer());
|
||||
assertTrue(engine.isStalemate());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void erkenntUnentschieden() {
|
||||
assertFalse(engine.isDraw());
|
||||
engine.setPositionFromFEN("8/8/8/8/8/8/8/4K2k w - - 0 1"); // nur zwei Könige
|
||||
assertTrue(engine.isDraw());
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue