package Game.ChessObj; 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 ChessFigureTest { @BeforeEach void setUp() { } @AfterEach void tearDown() { } @Test void getSymbol() { assertEquals(" K ", new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.WHITE).getSymbol()); assertEquals(" Q ", new ChessFigure(ChessFigure.Type.QUEEN, ChessFigure.Team.WHITE).getSymbol()); assertEquals(" I ", new ChessFigure(ChessFigure.Type.BISHOP, ChessFigure.Team.WHITE).getSymbol()); assertEquals(" T ", new ChessFigure(ChessFigure.Type.CASTLE, ChessFigure.Team.WHITE).getSymbol()); assertEquals(" Z ", new ChessFigure(ChessFigure.Type.KNIGHT, ChessFigure.Team.WHITE).getSymbol()); assertEquals(" o ", new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE).getSymbol()); assertEquals("|K|", new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.BLACK).getSymbol()); assertEquals("|Q|", new ChessFigure(ChessFigure.Type.QUEEN, ChessFigure.Team.BLACK).getSymbol()); assertEquals("|I|", new ChessFigure(ChessFigure.Type.BISHOP, ChessFigure.Team.BLACK).getSymbol()); assertEquals("|T|", new ChessFigure(ChessFigure.Type.CASTLE, ChessFigure.Team.BLACK).getSymbol()); assertEquals("|Z|", new ChessFigure(ChessFigure.Type.KNIGHT, ChessFigure.Team.BLACK).getSymbol()); assertEquals("|o|", new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.BLACK).getSymbol()); } @Test void testEquals() { ChessFigure kw1 = new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.WHITE); ChessFigure kw2 = new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.WHITE); ChessFigure kb1 = new ChessFigure(ChessFigure.Type.KING, ChessFigure.Team.BLACK); ChessFigure pw1 = new ChessFigure(ChessFigure.Type.PAWN, ChessFigure.Team.WHITE); assertEquals(kw1, kw2); assertNotEquals(kw2, kb1); assertNotEquals(pw1, kb1); } @Test void isRelativeMoveValid() { ArrayList array = new ArrayList<>(); for (ChessFigure.Type type : ChessFigure.Type.values()) for (ChessFigure.Team team : ChessFigure.Team.values()) array.add(new ChessFigure(type, team)); for (ChessFigure figure : array) { for (int x = -4; x <= 4; x++) { for (int y = -4; y <= 4; y++) { if (x == 0 && y == 0) { assertFalse(figure.isRelativeMoveValid(x, y)); continue; } switch (figure.getType()) { case KING: if (x * x == 1 && y * y == 1) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; case QUEEN: if ((x == y) || (x == 0 ^ y == 0)) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; case CASTLE: if (x == 0 ^ y == 0) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; case BISHOP: if (x == y) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; case KNIGHT: if ((y == 2 && (x == -1 || x == 1)) || (y == -2 && (x == -1 || x == 1)) || (x == 2 && (y == -1 || y == 1)) || (x == -2 && (y == -1 || y == 1))) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; case PAWN: if (figure.getTeam() == ChessFigure.Team.WHITE && (y == 1) && x == 0) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } if (figure.getTeam() == ChessFigure.Team.BLACK && (y == -1) && x == 0) { assertTrue(figure.isRelativeMoveValid(x, y)); continue; } break; default: } assertFalse(figure.isRelativeMoveValid(x, y), "Type: " + figure.getType() + " X: " + x + " Y: " + y + " should be false"); } } } } }