summaryrefslogtreecommitdiff
path: root/domain/src/test/java
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2021-06-22 21:12:52 +0200
committerMike Vink <mike1994vink@gmail.com>2021-06-22 21:12:52 +0200
commit3906fcf3d702f13da79c797c91a2dd32d874af49 (patch)
treed57d25f46a28da8319812ffabd7adf483686bc7e /domain/src/test/java
parent2e1a7cbcd36296c5abb1bb6d12fc155e3e3913fb (diff)
update(MancalaImpl) <- playPit returns stateArray
Diffstat (limited to 'domain/src/test/java')
-rw-r--r--domain/src/test/java/mancala/domain/BowlTest.java18
-rw-r--r--domain/src/test/java/mancala/domain/MancalaImplTest.java64
2 files changed, 77 insertions, 5 deletions
diff --git a/domain/src/test/java/mancala/domain/BowlTest.java b/domain/src/test/java/mancala/domain/BowlTest.java
index 0f2ea4a..0614201 100644
--- a/domain/src/test/java/mancala/domain/BowlTest.java
+++ b/domain/src/test/java/mancala/domain/BowlTest.java
@@ -143,6 +143,24 @@ class BowlTest {
}
}
+ @Test
+ void given_a_stones_list_with_less_than_four_elements_when_instantiating_small_bowl_then_throw_DomainSmallBowlException() {
+ int[] stonesArray = new int[] {1,2};
+ List<Integer> stonesList = Arrays.stream(stonesArray).boxed().collect(Collectors.toList());
+ try {
+ referenceSmallBowl = new SmallBowl(stonesList);
+ fail("No exception when stones list is too small");
+ } catch (DomainSmallBowlException e) {
+ }
+ stonesArray = new int[] {1,2,3,4};
+ stonesList = Arrays.stream(stonesArray).boxed().collect(Collectors.toList());
+ try {
+ referenceSmallBowl = new SmallBowl(stonesList);
+ } catch (DomainSmallBowlException e) {
+ fail("Should work fine");
+ }
+ }
+
void setupGameSituationAndFailIfInvalid(int[] stonesArray) {
try {
referenceSmallBowl = new SmallBowl(
diff --git a/domain/src/test/java/mancala/domain/MancalaImplTest.java b/domain/src/test/java/mancala/domain/MancalaImplTest.java
index 6f0ce2a..61409ac 100644
--- a/domain/src/test/java/mancala/domain/MancalaImplTest.java
+++ b/domain/src/test/java/mancala/domain/MancalaImplTest.java
@@ -2,6 +2,7 @@ package mancala.domain;
import org.junit.jupiter.api.*;
+import java.util.Arrays;
import java.util.HashSet;
import static org.junit.jupiter.api.Assertions.*;
@@ -128,8 +129,33 @@ class MancalaImplTest {
playPitAndFailIfNoException(7, "Didn't throw exception when Pit was empty when played!");
}
+ @Test
+ void given_that_pit_has_stones_and_player_has_turn_when_playPit_is_called_then_return_array_representing_state() {
+ mancala = new MancalaImpl(new int[] {1,0,0,0,0,0,0,1,0,0,0,0,0,0});
+ assumeTurn(Mancala.PLAYER_ONE);
+ int[] stateArray = playPitAndFailIfNotValid(0);
+ assertEquals(15, stateArray.length,
+ "length of the state array should be 15.");
+ assertTrue(Arrays.equals(new int[] {0,1,0,0,0,0,0,1,0,0,0,0,0,0,2}, stateArray));
+
+ stateArray = playPitAndFailIfNotValid(7);
+ assertEquals(15, stateArray.length,
+ "length of the state array should be 15.");
+ assertTrue(Arrays.equals(new int[] {0,1,0,0,0,0,0,0,1,0,0,0,0,0,1}, stateArray));
+ }
+
}
+ /**
+ * Method for returning the amount of stones in de specified pit. Index is as specified below:
+ *
+ * 12 11 10 9 8 7
+ * 13 6
+ * 0 1 2 3 4 5
+ *
+ * @param index Index of the pit.
+ * @return Amount of stone.
+ */
@Nested
class getStonesForPit {
@Test
@@ -171,21 +197,33 @@ class MancalaImplTest {
}
+ /**
+ * Method for retrieving whether the game has ended or not.
+ *
+ * @return True is the game has ended otherwise False.
+ */
@Nested
class isEndOfGame {
@Test
- void given_the_game_is_not_ended_when_isEndOfGame_is_called_then_return_false() {
+ void given_the_game_has_not_ended_when_isEndOfGame_is_called_then_return_false() {
assertFalse(mancala.isEndOfGame());
}
@Test
- void given_the_game_is_ended_when_isEndOfGame_is_called_then_return_true() {
+ void given_the_game_has_ended_when_isEndOfGame_is_called_then_return_true() {
+ mancala = new MancalaImpl(new int[] {0,0,0,0,0,1,0,0,0,0,0,0,0,0});
+ playPitAndFailIfNotValid(5);
assertTrue(mancala.isEndOfGame());
}
}
+ /**
+ * Method for retrieving the player that has won the game.
+ *
+ * @return Integer value representing which player(s) (if any) won the game.
+ */
@Nested
class getWinner {
@Test
@@ -195,12 +233,27 @@ class MancalaImplTest {
@Test
void given_PLAYER_ONE_has_won_in_the_domain_model_when_getWinner_is_called_then_return_Mancala_PLAYER_ONE() {
+ mancala = new MancalaImpl(new int[] {0,0,0,0,0,1,0,0,0,0,0,0,0,0});
+ playPitAndFailIfNotValid(5);
assertEquals(Mancala.PLAYER_ONE, mancala.getWinner());
}
@Test
void given_PLAYER_TWO_has_won_in_the_domain_model_when_getWinner_is_called_then_return_Mancala_PLAYER_TWO() {
- assertEquals(Mancala.PLAYER_TWO, mancala.getWinner());
+ mancala = new MancalaImpl(new int[] {0,1,0,0,0,0,0,0,0,0,0,2,0,0});
+ playPitAndFailIfNotValid(1);
+ playPitAndFailIfNotValid(7 + 4);
+ playPitAndFailIfNotValid(7 + 5);
+ assertEquals(Mancala.PLAYER_TWO, mancala.getWinner(),
+ "PLAYER TWO should win here.");
+ }
+
+ @Test
+ void given_BOTH_PLAYER_have_won_in_the_domain_model_when_getWinner_is_called_then_return_Mancala_BOTH_PLAYERS() {
+ mancala = new MancalaImpl(new int[] {0,0,0,0,0,1,0,0,0,0,0,0,1,0});
+ playPitAndFailIfNotValid(5);
+ assertEquals(Mancala.BOTH_PLAYERS, mancala.getWinner(),
+ "PLAYER TWO should win here.");
}
}
@@ -215,11 +268,12 @@ class MancalaImplTest {
"It's PLAYER " + (player == 1 ? "ONE's" : "TWO's") + " turn!");
}
- void playPitAndFailIfNotValid(int index) {
+ int[] playPitAndFailIfNotValid(int index) {
try {
- mancala.playPit(index);
+ return mancala.playPit(index);
} catch (MancalaException e) {
fail("Invalid play.");
+ return new int[0];
}
}