From b33228829b5bfa1de53ac4497104f98c778a6f16 Mon Sep 17 00:00:00 2001 From: jbion Date: Thu, 22 Dec 2016 16:03:10 +0100 Subject: Handle discarded cards at end of age --- .../luxons/sevenwonders/game/cards/HandsTest.java | 63 ++++++++++++++++++++++ 1 file changed, 63 insertions(+) (limited to 'src/test/java/org') diff --git a/src/test/java/org/luxons/sevenwonders/game/cards/HandsTest.java b/src/test/java/org/luxons/sevenwonders/game/cards/HandsTest.java index 97cb4625..86763450 100644 --- a/src/test/java/org/luxons/sevenwonders/game/cards/HandsTest.java +++ b/src/test/java/org/luxons/sevenwonders/game/cards/HandsTest.java @@ -5,13 +5,30 @@ import java.util.List; import java.util.Map; import org.junit.Test; +import org.junit.experimental.theories.DataPoints; +import org.junit.experimental.theories.FromDataPoints; +import org.junit.experimental.theories.Theories; +import org.junit.experimental.theories.Theory; +import org.junit.runner.RunWith; import org.luxons.sevenwonders.game.cards.Hands.PlayerIndexOutOfBoundsException; import org.luxons.sevenwonders.game.test.TestUtils; import static org.junit.Assert.*; +import static org.junit.Assume.*; +@RunWith(Theories.class) public class HandsTest { + @DataPoints("nbCardsPerPlayer") + public static int[] nbCardsPerPlayer() { + return new int[] {0, 1, 2, 3, 4, 5, 6, 7}; + } + + @DataPoints("nbPlayers") + public static int[] nbPlayers() { + return new int[] {3, 4, 5, 6, 7}; + } + private static Hands createHands(int nbPlayers, int nbCardsPerPlayer) { Map> hands = new HashMap<>(); for (int p = 0; p < nbPlayers; p++) { @@ -39,6 +56,52 @@ public class HandsTest { assertEquals(hand1, hands.get(1)); } + @Theory + public void isEmpty_falseWhenAtLeast1_allSame(@FromDataPoints("nbPlayers") int nbPlayers, + @FromDataPoints("nbCardsPerPlayer") int nbCardsPerPlayer) { + assumeTrue(nbCardsPerPlayer >= 1); + Hands hands = createHands(nbPlayers, nbCardsPerPlayer); + assertFalse(hands.isEmpty()); + } + + @Theory + public void isEmpty_trueWhenAllEmpty(@FromDataPoints("nbPlayers") int nbPlayers) { + Hands hands = createHands(nbPlayers, 0); + assertTrue(hands.isEmpty()); + } + + @Theory + public void maxOneCardRemains_falseWhenAtLeast2_allSame(@FromDataPoints("nbPlayers") int nbPlayers, + @FromDataPoints("nbCardsPerPlayer") int nbCardsPerPlayer) { + assumeTrue(nbCardsPerPlayer >= 2); + Hands hands = createHands(nbPlayers, nbCardsPerPlayer); + assertFalse(hands.maxOneCardRemains()); + } + + @Theory + public void maxOneCardRemains_trueWhenAtMost1_allSame(@FromDataPoints("nbPlayers") int nbPlayers, + @FromDataPoints("nbCardsPerPlayer") int nbCardsPerPlayer) { + assumeTrue(nbCardsPerPlayer <= 1); + Hands hands = createHands(nbPlayers, nbCardsPerPlayer); + assertTrue(hands.maxOneCardRemains()); + } + + @Theory + public void maxOneCardRemains_trueWhenAtMost1_someZero(@FromDataPoints("nbPlayers") int nbPlayers) { + Hands hands = createHands(nbPlayers, 1); + hands.get(0).remove(0); + assertTrue(hands.maxOneCardRemains()); + } + + @Theory + public void gatherAndClear(@FromDataPoints("nbPlayers") int nbPlayers, + @FromDataPoints("nbCardsPerPlayer") int nbCardsPerPlayer) { + Hands hands = createHands(nbPlayers, nbCardsPerPlayer); + List remainingCards = hands.gatherAndClear(); + assertEquals(nbPlayers * nbCardsPerPlayer, remainingCards.size()); + assertTrue(hands.isEmpty()); + } + @Test public void rotate_doesNotMoveWhenOffsetIsZero() { Hands hands = createHands(3, 7); -- cgit