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.

108 lines
3.3 KiB

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]);
}
}