Skip to content

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