You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.8 KiB

package Game;
import Game.ChessObj.ChessFigure;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import static org.junit.jupiter.api.Assertions.*;
class ChessTest {
Chess chess;
@BeforeEach
void setUp() {
chess = new Chess();
}
@AfterEach
void tearDown() {
}
@Test
void convertInput() {
int[] test1 = {0, 0};
int[] test2 = {7, 7};
int[] test3 = {6, 2};
assertNull(chess.convertInput("0g2"));
assertNull(chess.convertInput("25"));
assertNull(chess.convertInput("bg"));
assertNull(chess.convertInput("9b"));
assertNull(chess.convertInput("2i"));
assertArrayEquals(chess.convertInput("1a"), test1);
assertArrayEquals((chess.convertInput("a1")), test1);
assertArrayEquals((chess.convertInput("8h")), test2);
assertArrayEquals((chess.convertInput("h8")), test2);
assertArrayEquals((chess.convertInput("3G")), test3);
assertArrayEquals((chess.convertInput("G3")), test3);
}
@Test
void getSidebarFigures() {
ArrayList<ChessFigure> array1 = new ArrayList<>();
ArrayList<ChessFigure> array2 = new ArrayList<>();
ArrayList<ChessFigure> array3 = new ArrayList<>();
ArrayList<String> expectedArray2 = new ArrayList<>();
ArrayList<String> expectedArray3 = new ArrayList<>();
array2.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE));
array2.add(new ChessFigure(ChessFigure.Type.BISHOP, ChessFigure.Team.WHITE));
array2.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE));
array2.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE));
array2.add(new ChessFigure(ChessFigure.Type.CASTLE, ChessFigure.Team.WHITE));
array2.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE));
expectedArray2.add(" o , I , o , o , T ,");
expectedArray2.add(" o ");
array3.add(new ChessFigure(ChessFigure.Type.QUEEN, ChessFigure.Team.BLACK));
array3.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.BLACK));
array3.add(new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.BLACK));
array3.add(new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.BLACK));
expectedArray3.add("|Q|,|o|,|K|,|o|");
assertEquals(0, chess.getSidebarFigures(array1, 5).size());
assertEquals(expectedArray2, chess.getSidebarFigures(array2, 5));
assertEquals(expectedArray3, chess.getSidebarFigures(array3, 5));
}
@Test
void makeMove() {
int countBlackPawns = chess.getChessBoard().scanForOccurringFigure(ChessFigure.Type.PAWN, ChessFigure.Team.BLACK);
int countWhiteBishops = chess.getChessBoard().scanForOccurringFigure(ChessFigure.Type.BISHOP, ChessFigure.Team.WHITE);
chess.makeMove(chess.convertInput("a2"), chess.convertInput("a3"));
chess.makeMove(chess.convertInput("e7"), chess.convertInput("e6"));
chess.makeMove(chess.convertInput("f8"), chess.convertInput("a3"));
chess.makeMove(chess.convertInput("b2"), chess.convertInput("a3"));
assertEquals(countBlackPawns - 1, chess.getChessBoard().scanForOccurringFigure(ChessFigure.Type.PAWN, ChessFigure.Team.BLACK));
assertEquals(countWhiteBishops - 1, chess.getChessBoard().scanForOccurringFigure(ChessFigure.Type.BISHOP, ChessFigure.Team.WHITE));
}
@Test
void update() {
//starting team = White
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.WHITE);
//Emtpy cell
chess.update("d7");
chess.update("g5");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.WHITE);
chess.update("7b");
chess.update("6b");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.BLACK);
chess.update("e2");
chess.update("e3");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.WHITE);
chess.update("6b");
chess.update("5b");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.BLACK);
//Defeat enemy
chess.update("f1");
chess.update("b5");
assertEquals(7, chess.getChessBoard().scanForOccurringFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE));
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.WHITE);
chess.update("d7");
chess.update("d6");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.BLACK);
//Invalid Move
chess.update("5b");
chess.update("a5");
assertEquals(chess.getCurrentTeam(), ChessFigure.Team.BLACK);
//King defeated
chess.update("5b");
chess.update("e8");
assertTrue(chess.isFinished());
}
}