diff --git a/src/test/java/uulm/teamname/marvelous/gamelibrary/IntVector2Test.java b/src/test/java/uulm/teamname/marvelous/gamelibrary/IntVector2Test.java new file mode 100644 index 0000000..93d17c6 --- /dev/null +++ b/src/test/java/uulm/teamname/marvelous/gamelibrary/IntVector2Test.java @@ -0,0 +1,67 @@ +package uulm.teamname.marvelous.gamelibrary; + +import net.jqwik.api.*; +import net.jqwik.api.Tuple; +import net.jqwik.api.lifecycle.BeforeProperty; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.mockito.Mockito.*; +import static org.assertj.core.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.*; + +class IntVector2Test { + + @BeforeEach + @BeforeProperty + void beforeAll() { + + } + + @Property + @Disabled("This test fails! Therefore,a bug exists here") + void settingLengthToOneResultsInCardinalDirections( + @ForAll int x, + @ForAll int y + ) { + var vec = new IntVector2(x, y).setLength(1); + // System.out.printf("Input was (%d, %d). Output is %s\n", x, y, vec); + if (!vec.equals(new IntVector2(0, 0))) { + assertThat(IntVector2.CardinalDirections) + .contains(vec); + } + } + + @Property + void settingSmallVectorLengthResultsInCardinalDirections( + @ForAll("SmallIntegers") Integer x, + @ForAll("SmallIntegers") Integer y + ) { + var vec = new IntVector2(x, y).setLength(1); +// System.out.printf("Input was (%d, %d). Output is %s\n", x, y, vec); + if (!vec.equals(new IntVector2(0, 0))) { + assertThat(IntVector2.CardinalDirections) + .contains(vec); + } + + } + + @Test + void setLengthCardinalTest() { + assertThat(new IntVector2(1, 1).setLength(1)) + .isEqualTo(new IntVector2(1, 1)); + assertThat(new IntVector2(0, 1).setLength(1)) + .isEqualTo(new IntVector2(0, 1)); + assertThat(new IntVector2(1, -1).setLength(1)) + .isEqualTo(new IntVector2(1, -1)); + } + + @Provide("SmallIntegers") + Arbitrary smallIntegers() { + return Arbitraries.integers() + .between(-1000, 1000); + } + + +}