diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2021-06-22 21:12:52 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2021-06-22 21:12:52 +0200 |
| commit | 3906fcf3d702f13da79c797c91a2dd32d874af49 (patch) | |
| tree | d57d25f46a28da8319812ffabd7adf483686bc7e /domain/src/test/java | |
| parent | 2e1a7cbcd36296c5abb1bb6d12fc155e3e3913fb (diff) | |
update(MancalaImpl) <- playPit returns stateArray
Diffstat (limited to 'domain/src/test/java')
| -rw-r--r-- | domain/src/test/java/mancala/domain/BowlTest.java | 18 | ||||
| -rw-r--r-- | domain/src/test/java/mancala/domain/MancalaImplTest.java | 64 |
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]; } } |
