Content of file DilemmaGameImplTest.java
package de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.impl;
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 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;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.DilemmaGameBuilder;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.impl.DilemmaGameBuilderImpl;
import de.fhdw.gaming.ipspiel21.dilemmaOriginal.domain.impl.DilemmaGameImpl;
  | No need to import a type that lives in the same package.  |  | 
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;
/**
 * Tests DilemmaGameImpl class.
 */
class DilemmaGameImplTest {
    /**
     * Game Builder.
     */
    private DilemmaGameBuilder gameBuilder;
    /**
     * Creates a new builder for each test.
     */
    @BeforeEach
    public void initTest() {
        this.gameBuilder = new DilemmaGameBuilderImpl();
    }
    /**
     * Tests {@link DilemmaGameImpl#chooseRandomMove(Object)}.
     */
    @Test
    void testChooseRandomMove() {
        try {
            final int gameId = 12;
            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)) {
                assertThat(
                        game.chooseRandomMove(game.getState().getFirstPlayer(), game.getState()),
                        is(equalTo(Optional.of(new DilemmaConfessMove()))));
            }
        } catch (GameException | InterruptedException e) {
            fail(e.getMessage());
        }
    }
}