diff --git a/src/main/java/de/tims/fleetstorm/matchfield/Matchfield.java b/src/main/java/de/tims/fleetstorm/matchfield/Matchfield.java new file mode 100644 index 0000000..45912eb --- /dev/null +++ b/src/main/java/de/tims/fleetstorm/matchfield/Matchfield.java @@ -0,0 +1,39 @@ +package de.tims.fleetstorm.matchfield; + +public class Matchfield { + + private int[][] matchfield; + private int size; + + public static final int EMPTY = 0; + public static final int SHIP = 1; + public static final int SHOT = 2; + + public Matchfield(int size) { + this.size = size; + this.matchfield = new int[this.size][this.size]; + } + + public int[][] createMatchfield() { + for (int i = 0; i < size; i++) { + for (int j = 0; j < size; j++) { + this.matchfield[i][j] = Matchfield.EMPTY; + } + } + + return this.matchfield; + } + + public int getSize() { + return this.matchfield.length * this.matchfield[0].length; + } + + public int getState(int x, int y) { + return this.matchfield[x][y]; + } + + public void setState(int x, int y, int state) { + this.matchfield[x][y] = state; + } + +} diff --git a/src/test/java/de/tims/fleetstorm/matchfield/MatchfieldCreationTest.java b/src/test/java/de/tims/fleetstorm/matchfield/MatchfieldCreationTest.java new file mode 100644 index 0000000..168dade --- /dev/null +++ b/src/test/java/de/tims/fleetstorm/matchfield/MatchfieldCreationTest.java @@ -0,0 +1,66 @@ +package de.tims.fleetstorm.matchfield; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.Assert.assertNotNull; + +import java.util.stream.Stream; + +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; + +class MatchfieldCreationTest { + + @Test + void testMatchfieldCreateNotEmpty() { + Matchfield matchfield = new Matchfield(0); + int[][] calcResult = matchfield.createMatchfield(); + assertNotNull(calcResult); + } + + @ParameterizedTest(name = "matchfield creation has correct size") + @MethodSource("testMatchfieldSize") + void testMatchfieldCreationHasCorrectSize(String testName, int size, int expectedResult) { + Matchfield matchfield = new Matchfield(size); + matchfield.createMatchfield(); + + int calcResult = matchfield.getSize(); + assertThat(calcResult).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream testMatchfieldSize() { + return Stream.of(Arguments.of("field size 10x10", 10, 100), Arguments.of("field size 15x15", 15, 225)); + } + + @ParameterizedTest(name = "matchfield get field is correct") + @MethodSource("testMatchfieldGetFieldState") + void testMatchfieldGetCorrectState(String testName, int x, int y, int expectedResult) { + Matchfield matchfield = new Matchfield(10); + matchfield.createMatchfield(); + + int calcResult = matchfield.getState(x, y); + assertThat(calcResult).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream testMatchfieldGetFieldState() { + return Stream.of(Arguments.of("field x:0 y:0 has empty state", 0, 0, Matchfield.EMPTY)); + } + + @ParameterizedTest(name = "matchfield change field is correct") + @MethodSource("testMatchfieldSetStateIsCorrect") + void testMatchfieldGetCorrectState(String testName, int x, int y, int state, int expectedResult) { + Matchfield matchfield = new Matchfield(10); + matchfield.createMatchfield(); + + matchfield.setState(x, y, state); + + int calcResult = matchfield.getState(x, y); + assertThat(calcResult).describedAs(testName).isEqualTo(expectedResult); + } + + static Stream testMatchfieldSetStateIsCorrect() { + return Stream.of( + Arguments.of("field x:0 y:0 has state SHIP after setState()", 0, 0, Matchfield.SHIP, Matchfield.SHIP)); + } +}