import static org.assertj.core.api.Assertions.*; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import java.util.stream.Stream; public class GameboardTest { private Gameboard gb; @BeforeEach void setup() { gb = new Gameboard(); } @Test void checkGameboardSize() { String expectedResult = "56"; String currentResult = "" + gb.board.length; assertThat(currentResult).describedAs("Dimensions").isEqualTo(expectedResult); } @Test void checkGameboardFilled() { int[] expectedGameboard = new int[56]; for(int i = 0; i < expectedGameboard.length; i++) { expectedGameboard[i] = 0; } int [] givenGameboard = gb.board; assertThat(givenGameboard).describedAs("Initial Gameboard").isEqualTo(expectedGameboard); } @ParameterizedTest @MethodSource("FieldStream") void checkGameboardFieldType(String testname, int Pos, int expectedResult) { gb.initGameboard(); int currentType = gb.board[Pos]; assertThat(currentType).describedAs("Field Type").isEqualTo(expectedResult); } static Stream FieldStream () { return Stream.of( Arguments.of("Normal Path", 1, 0), Arguments.of("Starting Field", 0, 1), Arguments.of("Starting Field", 10, 1), Arguments.of("Starting Field", 20, 1), Arguments.of("Starting Field", 30, 1), Arguments.of("Doorway Field", 9, 2), Arguments.of("Doorway Field", 19, 2), Arguments.of("Doorway Field", 29, 2), Arguments.of("Doorway Field", 39, 2), Arguments.of("House Field", 40, 3), Arguments.of("House Field", 55, 3) ); } @Test void checkPrintGameboard() { String expectedResult = "[1, 0, 0, 0, 0, 0, 0, 0, 0, 2, " + "1, 0, 0, 0, 0, 0, 0, 0, 0, 2, " + "1, 0, 0, 0, 0, 0, 0, 0, 0, 2, " + "1, 0, 0, 0, 0, 0, 0, 0, 0, 2, " + "3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3]"; gb.initGameboard(); String calculatedResult = gb.toString(); assertThat(calculatedResult).describedAs("Print Gameboard").isEqualTo(expectedResult); } }