package de.fd.fh; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.*; class GameTest { private Game g = new Game(); @BeforeEach void setupTest() { g.initNewGame(); } @Test void newGameInitializationCorrectField() { assertEquals(Figure.fieldLength * Figure.fieldLength, g.mField.length); } // prüft, ob Figuren nach Initialisierung nur an vorgesehenden Positionen stehen @Test void newGameInitializationFigurePositions() { for (int i = 0; i < Figure.fieldLength; i++) // row { for (int j = 0; j < Figure.fieldLength; j++) // col { if (i == Game.whiteRowOther || i == Game.whiteRowFarmer || i == Game.blackRowOther || i == Game.blackRowFarmer) { assertNotEquals(null, g.mField[i * Figure.fieldLength + j]); } else { assertEquals(null, g.mField[i * Figure.fieldLength + j]); } } } } @Test void newGameInitializationFigurePositionsFarmer() { // weiße Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { assertEquals(new FigureFarmer(FigureFarmer.Color.White).getClass(), g.mField[Game.whiteRowFarmer * Figure.fieldLength + j].getClass()); assertEquals(new FigureFarmer(FigureFarmer.Color.White), g.mField[Game.whiteRowFarmer * Figure.fieldLength + j]); } // schwarze Bauern for (int j = 0; j < Figure.fieldLength; j++) // col { assertEquals(new FigureFarmer(FigureFarmer.Color.Black).getClass(), g.mField[Game.blackRowFarmer * Figure.fieldLength + j].getClass()); assertEquals(new FigureFarmer(FigureFarmer.Color.Black), g.mField[Game.blackRowFarmer * Figure.fieldLength + j]); } } @ParameterizedTest // row, col @CsvSource({ "0, 0", // schwarzer Turm a8 "0, 7", // schwarzer Turm h8 "7, 0", // weißer Turm a1 "7, 7" // weißer Turm h1 }) void newGameInitializationFigurePositionsRooks(int row, int col) { // schwarzer Turm a8 assertEquals(new FigureRook().getClass(), g.mField[Figure.fieldLength * row + col].getClass()); } @Test void moveFarmerWhite() // weißer Bauer ganz links um ein Feld noch vorne bewegen { int src = Game.whiteRowFarmer * Figure.fieldLength + 0; int dst = (Game.whiteRowFarmer - 1) * Figure.fieldLength + 0; // zu bewegende Figur Figure f = g.mField[src]; // Ziel sollte leer sein assertNull(g.mField[dst]); // Figur bewegen assertTrue(g.moveFigure(src, dst)); // Figur sollte nun verschoben sein assertNull(g.mField[src]); assertSame(f, g.mField[dst]); } }