Skip to content

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