Content of file DilemmaGameTest.java
package de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.fail;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import de.fhdw.gaming.core.domain.GameException;
import de.fhdw.gaming.core.domain.PlayerState;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.DilemmaGame;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.DilemmaGameBuilder;
 | No need to import a type that lives in the same package. | |
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.impl.DilemmaGameBuilderImpl;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.moves.impl.DilemmaDefaultMoveFactory;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.strategy.DilemmaAlwaysConfessStrategy;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.strategy.DilemmaStaySilentStrategyFactory;
/**
* Tests a complete Dilemma game process.
*/
public class DilemmaGameTest {
/**
* Game Builder.
*/
private DilemmaGameBuilder gameBuilder;
/**
* Creates a new builder for each test.
*/
@BeforeEach
public void initTest() {
this.gameBuilder = new DilemmaGameBuilderImpl();
}
/**
* Tests a working game.
*/
@Test
public void testOfFullGame() {
try {
final int gameId = 1;
final String player1 = "Hans";
final String player2 = "Emma";
final DilemmaStaySilentStrategyFactory silentFactory = new DilemmaStaySilentStrategyFactory();
this.gameBuilder.addPlayerBuilder(
this.gameBuilder.createPlayerBuilder().defaultPlayerBuilder().changeName(player1),
new DilemmaAlwaysConfessStrategy(new DilemmaDefaultMoveFactory()));
this.gameBuilder.addPlayerBuilder(
this.gameBuilder.createPlayerBuilder().defaultPlayerBuilder().changeName(player2),
silentFactory.create(new DilemmaDefaultMoveFactory()));
try (DilemmaGame game = this.gameBuilder.build(gameId)) {
game.start();
while (!game.isFinished()) {
game.makeMove();
}
assertThat(game.getId(), is(equalTo(gameId)));
assertThat(game.getPlayers().get(player1).getName(), is(equalTo(player1)));
assertThat(game.getPlayers().get(player1).getOutcome().get(), is(equalTo(0.0)));
assertThat(game.getPlayers().get(player1).getState(), is(equalTo(PlayerState.WON)));
assertThat(game.getPlayers().get(player2).getName(), is(equalTo(player2)));
assertThat(game.getPlayers().get(player2).getOutcome().get(), is(equalTo(-10.0)));
assertThat(game.getPlayers().get(player2).getState(), is(equalTo(PlayerState.LOST)));
assertThat(game.getPlayers().size(), is(2));
}
} catch (GameException | InterruptedException e) {
fail(e.getMessage());
}
}
}