Content of file GameHistoryImplTest.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.assertThrows;
import static org.junit.jupiter.api.Assertions.fail;
import java.util.Optional;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import de.fhdw.gaming.core.domain.GameException;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.DilemmaGame;
 | No need to import a type that lives in the same package. | |
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.DilemmaGameBuilder;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.impl.DilemmaGameBuilderImpl;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.moves.impl.DilemmaBeSilentMove;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.moves.impl.DilemmaConfessMove;
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;
import de.fhdw.gaming.ipspiel21.evolution.EvolutionPlayer;
import de.fhdw.gaming.ipspiel21.evolution.MemoryObserver;
/**
* Tests Game History with DilemmaGame.
*/
class GameHistoryImplTest {
/**
* Game Builder.
*/
private DilemmaGameBuilder gameBuilder;
/**
* Silent Move.
*/
private DilemmaBeSilentMove silentMove;
/**
* Confess Move.
*/
private DilemmaConfessMove confessMove;
/**
* Creates a new builder for each test. Side effect from other project. Without no testing possible.
*/
@BeforeEach
public void initTest() {
this.gameBuilder = new DilemmaGameBuilderImpl();
this.silentMove = new DilemmaBeSilentMove();
this.confessMove = new DilemmaConfessMove();
}
/**
* Tests a Game History.
*/
@Test
public void gameHistoryMoves() {
try {
final int gameId = 1;
final String player1 = "Torben";
final String player2 = "Flo";
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.addObserver(new MemoryObserver());
game.start();
while (!game.isFinished()) {
game.makeMove();
}
final EvolutionPlayer evplayer1 = game.getPlayers().get(player1);
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getGameId(),
is(equalTo(gameId)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getMove(0),
is(equalTo(confessMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(0),
is(equalTo(silentMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOutcome(),
is(equalTo(Optional.of(0.0))));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentOutcome(),
is(equalTo(Optional.of(-10.0))));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).numberOfPlayedMoves(),
is(equalTo(1)));
final EvolutionPlayer evplayer2 = game.getPlayers().get(player2);
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getGameId(),
is(equalTo(gameId)));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(0),
is(equalTo(confessMove)));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getMove(0),
is(equalTo(silentMove)));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getOutcome(),
is(equalTo(Optional.of(-10.0))));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentOutcome(),
is(equalTo(Optional.of(0.0))));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).numberOfPlayedMoves(),
is(equalTo(1)));
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).setOutcome(false,
Optional.of(1000.0));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOutcome(),
is(equalTo(Optional.of(1000.0))));
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).setOutcome(true,
Optional.of(-555.0));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentOutcome(),
is(equalTo(Optional.of(-555.0))));
evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).setOutcome(false,
Optional.of(99.0));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getOutcome(),
is(equalTo(Optional.of(99.0))));
evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).setOutcome(true, Optional.of(22.0));
assertThat(evplayer2.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentOutcome(),
is(equalTo(Optional.of(22.0))));
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).addMove(false, silentMove);
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getMove(0),
is(equalTo(silentMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getMove(1),
is(equalTo(confessMove)));
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).addMove(true, confessMove);
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).addMove(true, silentMove);
evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).addMove(true, confessMove);
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(0),
is(equalTo(confessMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(1),
is(equalTo(silentMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(2),
is(equalTo(confessMove)));
assertThat(evplayer1.getGameHistoryCollection().getSpecificGameHistory(0).getOpponentMove(3),
is(equalTo(silentMove)));
assertThrows(IndexOutOfBoundsException.class, () -> evplayer1.getGameHistoryCollection()
.getSpecificGameHistory(0).getOpponentMove(9999));
}
} catch (GameException | InterruptedException e) {
fail(e.getMessage());
}
}
}