initial commit

This commit is contained in:
2025-06-14 16:09:20 +02:00
commit 2f702b016c
32 changed files with 4779 additions and 0 deletions

25
test/cards/CardTest.java Normal file
View File

@@ -0,0 +1,25 @@
package cards;
import org.junit.Test;
import static cards.Rank.THREE;
import static cards.Rank.TWO;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class CardTest {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void compareToTest() {
assertEquals(0, c(TWO, HEARTS).compareTo(c(TWO, HEARTS)));
assertTrue(c(TWO, HEARTS).compareTo(c(TWO, SPADES)) < 0);
assertTrue(c(TWO, SPADES).compareTo(c(TWO, HEARTS)) > 0);
assertTrue(c(TWO, SPADES).compareTo(c(THREE, HEARTS)) < 0);
assertTrue(c(THREE, HEARTS).compareTo(c(TWO, SPADES)) > 0);
}
}

37
test/cards/RankTest.java Normal file
View File

@@ -0,0 +1,37 @@
package cards;
import org.junit.Test;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.FIVE;
import static cards.Rank.FOUR;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.SIX;
import static cards.Rank.TEN;
import static cards.Rank.THREE;
import static cards.Rank.TWO;
import static org.junit.Assert.assertEquals;
public class RankTest {
@Test
public void toStringTest() {
assertEquals("2", TWO.toString());
assertEquals("3", THREE.toString());
assertEquals("4", FOUR.toString());
assertEquals("5", FIVE.toString());
assertEquals("6", SIX.toString());
assertEquals("7", SEVEN.toString());
assertEquals("8", EIGHT.toString());
assertEquals("9", NINE.toString());
assertEquals("10", TEN.toString());
assertEquals("J", JACK.toString());
assertEquals("Q", QUEEN.toString());
assertEquals("K", KING.toString());
assertEquals("A", ACE.toString());
}
}

19
test/cards/SuitTest.java Normal file
View File

@@ -0,0 +1,19 @@
package cards;
import org.junit.Test;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static org.junit.Assert.assertEquals;
public class SuitTest {
@Test
public void toStringTest() {
assertEquals("♥︎", HEARTS.toString());
assertEquals("♦︎", DIAMONDS.toString());
assertEquals("♣︎", CLUBS.toString());
assertEquals("♠︎", SPADES.toString());
}
}

View File

@@ -0,0 +1,34 @@
package cards.maumau;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.SIX;
import static cards.Rank.TEN;
import static cards.Rank.TWO;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
public class MauMauDeckTest {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void dealCardsTest() {
final List<Card> deck = MauMauDeck.makeDeck(5);
assertEquals(160, deck.size());
assertFalse(deck.contains(c(TWO, DIAMONDS)));
assertFalse(deck.contains(c(SIX, SPADES)));
assertEquals(5, deck.stream().filter(c -> c.equals(c(TEN, HEARTS))).count());
assertEquals(5, deck.stream().filter(c -> c.equals(c(ACE, SPADES))).count());
}
}

View File

@@ -0,0 +1,43 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class CardHandlerTest {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void dealCardsTest() {
final List<Card> deck = List.of(c(JACK, DIAMONDS), c(SEVEN, CLUBS), c(QUEEN, DIAMONDS), c(NINE, CLUBS), c(ACE, SPADES), c(NINE, SPADES), c(ACE, DIAMONDS), c(EIGHT, CLUBS), c(EIGHT, DIAMONDS), c(KING, HEARTS), c(ACE, HEARTS), c(SEVEN, SPADES), c(KING, CLUBS), c(KING, SPADES), c(QUEEN, SPADES), c(SEVEN, DIAMONDS), c(TEN, DIAMONDS), c(EIGHT, HEARTS), c(KING, DIAMONDS), c(QUEEN, CLUBS), c(JACK, HEARTS), c(EIGHT, SPADES), c(TEN, CLUBS), c(ACE, CLUBS), c(JACK, CLUBS), c(QUEEN, HEARTS), c(SEVEN, HEARTS), c(JACK, SPADES), c(NINE, DIAMONDS), c(NINE, HEARTS), c(TEN, HEARTS), c(TEN, SPADES));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertTrue(jacqueline.getCards().isEmpty());
assertTrue(chantal.getCards().isEmpty());
game.getCardHandler().dealCards();
assertEquals("[J♦, Q♦, A♠, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 9♠, 8♣, K♥]", chantal.getCards().toString());
assertEquals(c(ACE, HEARTS), game.getCardHandler().top());
}
}

View File

@@ -0,0 +1,181 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau1Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(JACK, DIAMONDS), c(SEVEN, CLUBS), c(QUEEN, DIAMONDS), c(NINE, CLUBS), c(ACE, SPADES), c(NINE, SPADES), c(ACE, DIAMONDS), c(EIGHT, CLUBS), c(EIGHT, DIAMONDS), c(KING, HEARTS), c(ACE, HEARTS), c(SEVEN, SPADES), c(KING, CLUBS), c(KING, SPADES), c(QUEEN, SPADES), c(SEVEN, DIAMONDS), c(TEN, DIAMONDS), c(EIGHT, HEARTS), c(KING, DIAMONDS), c(QUEEN, CLUBS), c(JACK, HEARTS), c(EIGHT, SPADES), c(TEN, CLUBS), c(ACE, CLUBS), c(JACK, CLUBS), c(QUEEN, HEARTS), c(SEVEN, HEARTS), c(JACK, SPADES), c(NINE, DIAMONDS), c(NINE, HEARTS), c(TEN, HEARTS), c(TEN, SPADES));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[J♦, 7♣, Q♦, 9♣, A♠, 9♠, A♦, 8♣, 8♦, K♥, A♥, 7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, Q♦, A♠, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 9♠, 8♣, K♥]", chantal.getCards().toString());
assertEquals("[7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, 9♣, 9♠, 8♣, K♥]", chantal.getCards().toString());
assertEquals("[J♦, Q♦, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, Q♦, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 8♣, K♥]", chantal.getCards().toString());
assertEquals("[7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 8♣, K♥]", chantal.getCards().toString());
assertEquals("[7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, 9♣, 8♣, K♥]", chantal.getCards().toString());
assertEquals("[Q♦, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♠, K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, A♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠]", chantal.getCards().toString());
assertEquals("[K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, A♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠]", chantal.getCards().toString());
assertEquals("[K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠]", chantal.getCards().toString());
assertEquals("[A♦]", jacqueline.getCards().toString());
assertEquals("[K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠]", chantal.getCards().toString());
assertEquals("[A♦]", jacqueline.getCards().toString());
assertEquals("[K♣, K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦]", jacqueline.getCards().toString());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠, K♣]", chantal.getCards().toString());
assertEquals("[K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, 9♣, 8♣, K♥, 7♠, K♣]", chantal.getCards().toString());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[A♦, Q♦, 8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(jacqueline, chantal), game.getRanking());
assertEquals("[K♠, Q♠, 7♦, 10♦, 8♥, K♦, Q♣, J♥, 8♠, 10♣, A♣, J♣, Q♥, 7♥, J♠, 9♦, 9♥, 10♥, 10♠]", game.getDrawPile().toString());
assertEquals("[A♦, Q♦, 8♦, J♦, 9♠, A♠, A♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,246 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau2Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(KING, SPADES), c(QUEEN, DIAMONDS), c(EIGHT, DIAMONDS), c(ACE, SPADES), c(TEN, SPADES), c(EIGHT, HEARTS), c(QUEEN, SPADES), c(ACE, DIAMONDS), c(KING, DIAMONDS), c(SEVEN, SPADES), c(TEN, CLUBS), c(ACE, HEARTS), c(QUEEN, CLUBS), c(NINE, HEARTS), c(KING, CLUBS), c(SEVEN, CLUBS), c(JACK, DIAMONDS), c(NINE, DIAMONDS), c(ACE, CLUBS), c(EIGHT, SPADES), c(TEN, DIAMONDS), c(JACK, SPADES), c(JACK, HEARTS), c(JACK, CLUBS), c(TEN, HEARTS), c(KING, HEARTS), c(QUEEN, HEARTS), c(SEVEN, HEARTS), c(SEVEN, DIAMONDS), c(EIGHT, CLUBS), c(NINE, CLUBS), c(NINE, SPADES));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[K♠, Q♦, 8♦, A♠, 10♠, 8♥, Q♠, A♦, K♦, 7♠, 10♣, A♥, Q♣, 9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 8♦, 10♠, Q♠, K♦]", jacqueline.getCards().toString());
assertEquals("[Q♦, A♠, 8♥, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[A♥, Q♣, 9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, A♠, 8♥, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[K♠, 8♦, Q♠, K♦]", jacqueline.getCards().toString());
assertEquals("[A♥, Q♣, 9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 8♦, Q♠, K♦]", jacqueline.getCards().toString());
assertEquals("[Q♦, A♠, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[A♥, Q♣, 9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 8♦, Q♠, K♦, A♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, A♠, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 8♦, Q♠, K♦, A♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, A♠, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(KING, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, A♠, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[8♦, Q♠, K♦, A♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♠, K♦, A♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, 8♥, A♦]", chantal.getCards().toString());
assertEquals("[8♦, Q♠, K♦, Q♣]", jacqueline.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♠, K♦, Q♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♥]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, K♦, Q♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♥]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦, 8♥]", chantal.getCards().toString());
assertEquals("[Q♠, Q♣]", jacqueline.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, Q♣]", jacqueline.getCards().toString());
assertEquals("[8♥]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, Q♣]", jacqueline.getCards().toString());
assertEquals("[8♥]", chantal.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥]", chantal.getCards().toString());
assertEquals("[Q♣]", jacqueline.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♠, Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥]", chantal.getCards().toString());
assertEquals("[Q♣]", jacqueline.getCards().toString());
assertEquals("[9♥, K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♠, Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♣]", jacqueline.getCards().toString());
assertEquals("[8♥, 9♥]", chantal.getCards().toString());
assertEquals("[K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♠, Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, 9♥]", chantal.getCards().toString());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♣, Q♠, Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(jacqueline, chantal), game.getRanking());
assertEquals("[K♣, 7♣, J♦, 9♦, A♣, 8♠, 10♦, J♠, J♥, J♣, 10♥, K♥, Q♥, 7♥, 7♦, 8♣, 9♣, 9♠]", game.getDrawPile().toString());
assertEquals("[Q♣, Q♠, Q♦, K♦, 8♦, A♦, A♥, A♠, K♠, 7♠, 10♠, 10♣]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,173 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.KING;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.GAME_CANCELED;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau3Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(SEVEN, SPADES), c(SEVEN, DIAMONDS), c(SEVEN, DIAMONDS), c(SEVEN, SPADES), c(SEVEN, SPADES), c(SEVEN, HEARTS), c(SEVEN, SPADES), c(ACE, DIAMONDS), c(KING, DIAMONDS), c(SEVEN, SPADES), c(TEN, HEARTS), c(ACE, HEARTS), c(QUEEN, CLUBS));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[7♠, 7♦, 7♦, 7♠, 7♠, 7♥, 7♠, A♦, K♦, 7♠, 10♥, A♥, Q♣]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, 7♦, 7♠, 7♠, K♦]", jacqueline.getCards().toString());
assertEquals("[7♦, 7♠, 7♥, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[A♥, Q♣]", game.getDrawPile().toString());
assertEquals("[10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, 7♠, 7♥, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[7♠, 7♦, 7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, 7♦, 7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[7♦, 7♠, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, 7♠, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[7♠, 7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(2, game.get7Counter());
chantal.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, 7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[7♠, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(3, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, A♦, 7♠]", chantal.getCards().toString());
assertEquals("[7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(4, game.get7Counter());
chantal.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, 7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[A♦, 7♠]", chantal.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(5, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 7♠]", chantal.getCards().toString());
assertEquals("[7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♠, 7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(6, game.get7Counter());
chantal.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[A♦]", chantal.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♠, 7♠, 7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(7, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[A♦]", chantal.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♠, 7♠, 7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(7, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦]", chantal.getCards().toString());
assertEquals("[K♦, A♥]", jacqueline.getCards().toString());
assertEquals("[Q♣]", game.getDrawPile().toString());
assertEquals("[7♠, 7♠, 7♠, 7♠, 7♠, 7♦, 7♦, 7♥, 10♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(8, game.get7Counter());
chantal.no7();
assertEquals(GAME_CANCELED, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
}
}

View File

@@ -0,0 +1,368 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau4Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(TEN, DIAMONDS), c(KING, DIAMONDS), c(JACK, CLUBS), c(TEN, SPADES), c(EIGHT, SPADES), c(JACK, HEARTS), c(SEVEN, DIAMONDS), c(JACK, SPADES), c(SEVEN, SPADES), c(QUEEN, SPADES), c(KING, SPADES), c(NINE, CLUBS), c(QUEEN, CLUBS), c(EIGHT, CLUBS), c(NINE, SPADES), c(TEN, CLUBS), c(ACE, HEARTS), c(SEVEN, HEARTS), c(NINE, DIAMONDS), c(EIGHT, HEARTS), c(SEVEN, CLUBS), c(QUEEN, DIAMONDS), c(ACE, SPADES), c(KING, HEARTS), c(QUEEN, HEARTS), c(EIGHT, DIAMONDS), c(ACE, CLUBS), c(TEN, HEARTS), c(JACK, DIAMONDS), c(NINE, HEARTS), c(KING, CLUBS), c(ACE, DIAMONDS));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[10♦, K♦, J♣, 10♠, 8♠, J♥, 7♦, J♠, 7♠, Q♠, K♠, 9♣, Q♣, 8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, J♣, 8♠, 7♦, 7♠]", jacqueline.getCards().toString());
assertEquals("[K♦, 10♠, J♥, J♠, Q♠]", chantal.getCards().toString());
assertEquals("[9♣, Q♣, 8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, 10♠, J♥, J♠, Q♠]", chantal.getCards().toString());
assertEquals("[10♦, J♣, 8♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[9♣, Q♣, 8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, 10♠, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[10♦, J♣, 8♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, J♣, 8♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[K♦, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, J♣, 7♦]", jacqueline.getCards().toString());
assertEquals("[K♦, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, CLUBS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, 7♦]", jacqueline.getCards().toString());
assertEquals("[K♦, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[10♦, 7♦]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[10♦, 7♦]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, 7♦]", jacqueline.getCards().toString());
assertEquals("[J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, J♠, Q♠, 9♣, Q♣]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠, 10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, J♠, Q♠, 9♣, Q♣, 8♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, HEARTS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, 9♣, Q♣, 8♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(CLUBS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[J♠, Q♠, 9♣, Q♣, 8♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♣, A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, 9♣, Q♣, 8♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦, 10♣]", jacqueline.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, 9♣, Q♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦, 10♣]", jacqueline.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, 10♣]", jacqueline.getCards().toString());
assertEquals("[J♠, Q♠, Q♣, 9♠]", chantal.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, Q♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, Q♣, 9♠]", chantal.getCards().toString());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦]", jacqueline.getCards().toString());
assertEquals("[J♠, Q♠, 9♠]", chantal.getCards().toString());
assertEquals("[A♥, 7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, Q♠, 9♠]", chantal.getCards().toString());
assertEquals("[10♦, A♥]", jacqueline.getCards().toString());
assertEquals("[7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, A♥]", jacqueline.getCards().toString());
assertEquals("[J♠, 9♠]", chantal.getCards().toString());
assertEquals("[7♥, 9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♠, 9♠]", chantal.getCards().toString());
assertEquals("[10♦, A♥, 7♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, SPADES));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[10♦, A♥, 7♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(SPADES);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, A♥, 7♥]", jacqueline.getCards().toString());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, A♥, 7♥]", jacqueline.getCards().toString());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[9♦, 8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[10♦, A♥, 7♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦, A♥, 7♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[9♠, J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(chantal, jacqueline), game.getRanking());
assertEquals("[8♥, 7♣, Q♦, A♠, K♥, Q♥, 8♦, A♣, 10♥, J♦, 9♥, K♣, A♦]", game.getDrawPile().toString());
assertEquals("[9♠, J♠, Q♠, Q♣, 10♣, 9♣, 8♣, J♥, 7♦, K♦, J♣, 8♠, 10♠, 7♠, K♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,533 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau5Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(ACE, DIAMONDS), c(NINE, HEARTS), c(JACK, HEARTS), c(KING, SPADES), c(SEVEN, CLUBS), c(NINE, CLUBS), c(SEVEN, HEARTS), c(KING, DIAMONDS), c(TEN, HEARTS), c(ACE, CLUBS), c(JACK, SPADES), c(ACE, SPADES), c(SEVEN, DIAMONDS), c(ACE, HEARTS), c(QUEEN, SPADES), c(EIGHT, CLUBS), c(TEN, DIAMONDS), c(NINE, DIAMONDS), c(EIGHT, DIAMONDS), c(SEVEN, SPADES), c(QUEEN, HEARTS), c(JACK, CLUBS), c(KING, CLUBS), c(EIGHT, SPADES), c(JACK, DIAMONDS), c(EIGHT, HEARTS), c(QUEEN, CLUBS), c(NINE, SPADES), c(TEN, CLUBS), c(KING, HEARTS), c(TEN, SPADES), c(QUEEN, DIAMONDS));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[A♦, 9♥, J♥, K♠, 7♣, 9♣, 7♥, K♦, 10♥, A♣, J♠, A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, J♥, 7♣, 7♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[9♥, K♠, 9♣, K♦, A♣]", chantal.getCards().toString());
assertEquals("[A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, HEARTS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 7♣, 7♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[9♥, K♠, 9♣, K♦, A♣]", chantal.getCards().toString());
assertEquals("[A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(HEARTS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, 9♣, K♦, A♣]", chantal.getCards().toString());
assertEquals("[A♦, 7♣, 7♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♥, J♠]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 7♣, 7♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[K♠, 9♣, K♦, A♣]", chantal.getCards().toString());
assertEquals("[A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 9♣, K♦, A♣]", chantal.getCards().toString());
assertEquals("[A♦, 7♣, 10♥]", jacqueline.getCards().toString());
assertEquals("[A♠, 7♦, A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 9♣, K♦, A♣, A♠, 7♦]", chantal.getCards().toString());
assertEquals("[A♦, 7♣, 10♥]", jacqueline.getCards().toString());
assertEquals("[A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 7♣, 10♥]", jacqueline.getCards().toString());
assertEquals("[K♠, 9♣, K♦, A♣, A♠]", chantal.getCards().toString());
assertEquals("[A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 9♣, K♦, A♣, A♠]", chantal.getCards().toString());
assertEquals("[A♦, 10♥]", jacqueline.getCards().toString());
assertEquals("[A♥, Q♠, 8♣, 10♦, 9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(2, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 9♣, K♦, A♣, A♠, A♥, Q♠, 8♣, 10♦]", chantal.getCards().toString());
assertEquals("[A♦, 10♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, 9♣, K♦, A♣, A♠, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[A♦, 10♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 10♥]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, A♣, A♠, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[9♦, 8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, K♦, A♣, A♠, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[A♦, 10♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, 10♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, A♠, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, K♦, A♠, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[10♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♥, 9♦]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[8♦, 7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, K♦, A♥, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[10♥, 9♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♥, 9♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, K♦, Q♠, 10♦]", chantal.getCards().toString());
assertEquals("[9♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 8♦]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, Q♠]", chantal.getCards().toString());
assertEquals("[7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦]", jacqueline.getCards().toString());
assertEquals("[K♠, K♦, Q♠]", chantal.getCards().toString());
assertEquals("[7♠, Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(NINE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, K♦, Q♠]", chantal.getCards().toString());
assertEquals("[7♠]", jacqueline.getCards().toString());
assertEquals("[Q♥, J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, Q♥]", jacqueline.getCards().toString());
assertEquals("[K♠, Q♠]", chantal.getCards().toString());
assertEquals("[J♣, K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♠, Q♠]", chantal.getCards().toString());
assertEquals("[7♠, Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(KING, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♠]", chantal.getCards().toString());
assertEquals("[K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♠, Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♠]", chantal.getCards().toString());
assertEquals("[K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠]", chantal.getCards().toString());
assertEquals("[Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[K♣, 8♠, J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, K♣, 8♠]", chantal.getCards().toString());
assertEquals("[Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, K♣]", chantal.getCards().toString());
assertEquals("[Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[K♣]", chantal.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♥, J♣]", jacqueline.getCards().toString());
assertEquals("[K♣]", chantal.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♣]", chantal.getCards().toString());
assertEquals("[J♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♣]", chantal.getCards().toString());
assertEquals("[J♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♣]", jacqueline.getCards().toString());
assertEquals("[K♣, J♦]", chantal.getCards().toString());
assertEquals("[8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, CLUBS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[K♣, J♦]", chantal.getCards().toString());
assertEquals("[8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(CLUBS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♣, J♦]", chantal.getCards().toString());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[8♥, Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(KING, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥]", jacqueline.getCards().toString());
assertEquals("[J♦]", chantal.getCards().toString());
assertEquals("[Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥]", jacqueline.getCards().toString());
assertEquals("[J♦]", chantal.getCards().toString());
assertEquals("[Q♣, 9♠, 10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♠]", chantal.getCards().toString());
assertEquals("[8♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[8♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(SPADES);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[10♣, K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[8♥, Q♣, 10♣]", jacqueline.getCards().toString());
assertEquals("[K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertEquals(SPADES, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, Q♣, 10♣]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♠, J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(chantal, jacqueline), game.getRanking());
assertEquals("[K♥, 10♠, Q♦]", game.getDrawPile().toString());
assertEquals("[9♠, J♦, K♣, J♣, Q♥, Q♠, 8♠, 7♠, K♠, K♦, 9♦, 8♦, 10♦, 10♥, A♥, A♠, A♦, A♣, 9♣, 8♣, 7♣, 7♦, 7♥, 9♥, J♥, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,578 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau6Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(QUEEN, SPADES), c(TEN, SPADES), c(SEVEN, DIAMONDS), c(EIGHT, DIAMONDS), c(ACE, SPADES), c(QUEEN, CLUBS), c(EIGHT, SPADES), c(NINE, CLUBS), c(SEVEN, SPADES), c(ACE, CLUBS), c(EIGHT, HEARTS), c(QUEEN, HEARTS), c(JACK, DIAMONDS), c(KING, CLUBS), c(NINE, HEARTS), c(EIGHT, CLUBS), c(ACE, DIAMONDS), c(QUEEN, DIAMONDS), c(JACK, HEARTS), c(TEN, HEARTS), c(KING, HEARTS), c(KING, DIAMONDS), c(JACK, SPADES), c(KING, SPADES), c(TEN, CLUBS), c(NINE, SPADES), c(JACK, CLUBS), c(SEVEN, CLUBS), c(ACE, HEARTS), c(NINE, DIAMONDS), c(TEN, DIAMONDS), c(SEVEN, HEARTS));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[Q♠, 10♠, 7♦, 8♦, A♠, Q♣, 8♠, 9♣, 7♠, A♣, 8♥, Q♥, J♦, K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, 7♦, A♠, 8♠, 7♠]", jacqueline.getCards().toString());
assertEquals("[10♠, 8♦, Q♣, 9♣, A♣]", chantal.getCards().toString());
assertEquals("[Q♥, J♦, K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, 7♦, A♠, 7♠]", jacqueline.getCards().toString());
assertEquals("[10♠, 8♦, Q♣, 9♣, A♣]", chantal.getCards().toString());
assertEquals("[Q♥, J♦, K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♠, 8♦, Q♣, 9♣, A♣]", chantal.getCards().toString());
assertEquals("[Q♠, 7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[Q♥, J♦, K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♠, 8♦, Q♣, 9♣, A♣, Q♥, J♦]", chantal.getCards().toString());
assertEquals("[Q♠, 7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, 7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[8♦, Q♣, 9♣, A♣, Q♥, J♦]", chantal.getCards().toString());
assertEquals("[K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♣, 9♣, A♣, Q♥, J♦]", chantal.getCards().toString());
assertEquals("[7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[8♦, Q♣, 9♣, A♣, J♦]", chantal.getCards().toString());
assertEquals("[K♣, 9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♣, 9♣, A♣, J♦]", chantal.getCards().toString());
assertEquals("[7♦, A♠, K♣]", jacqueline.getCards().toString());
assertEquals("[9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, A♠, K♣]", jacqueline.getCards().toString());
assertEquals("[8♦, 9♣, A♣, J♦]", chantal.getCards().toString());
assertEquals("[9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(KING, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 9♣, A♣, J♦]", chantal.getCards().toString());
assertEquals("[7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, A♠]", jacqueline.getCards().toString());
assertEquals("[8♦, A♣, J♦]", chantal.getCards().toString());
assertEquals("[9♥, 8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, A♣, J♦]", chantal.getCards().toString());
assertEquals("[7♦, A♠, 9♥]", jacqueline.getCards().toString());
assertEquals("[8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, A♠, 9♥]", jacqueline.getCards().toString());
assertEquals("[8♦, J♦]", chantal.getCards().toString());
assertEquals("[8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, J♦]", chantal.getCards().toString());
assertEquals("[7♦, 9♥]", jacqueline.getCards().toString());
assertEquals("[8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦]", chantal.getCards().toString());
assertEquals("[7♦, 9♥]", jacqueline.getCards().toString());
assertEquals("[8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♦, 9♥]", jacqueline.getCards().toString());
assertEquals("[8♦]", chantal.getCards().toString());
assertEquals("[8♣, A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 8♣]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 8♣, A♦, Q♦]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, A♦, Q♦]", chantal.getCards().toString());
assertEquals("[9♥, J♥]", jacqueline.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, J♥]", jacqueline.getCards().toString());
assertEquals("[8♣, Q♦]", chantal.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, HEARTS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[8♣, Q♦]", chantal.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, Q♦]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, Q♦]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[10♥, K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[9♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[K♥, K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[8♣, K♥]", chantal.getCards().toString());
assertEquals("[K♦, J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, K♥]", chantal.getCards().toString());
assertEquals("[9♥, 10♥, K♦]", jacqueline.getCards().toString());
assertEquals("[J♠, K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, 10♥, K♦]", jacqueline.getCards().toString());
assertEquals("[8♣, K♥, J♠]", chantal.getCards().toString());
assertEquals("[K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, K♥, J♠]", chantal.getCards().toString());
assertEquals("[9♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(KING, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, 10♥]", jacqueline.getCards().toString());
assertEquals("[8♣, J♠]", chantal.getCards().toString());
assertEquals("[K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, J♠]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, SPADES));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[9♥]", jacqueline.getCards().toString());
assertEquals("[K♠, 10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(CLUBS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[10♣, 9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣]", chantal.getCards().toString());
assertEquals("[9♥, K♠, 10♣]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, 10♣]", jacqueline.getCards().toString());
assertEquals("[8♣, 9♠]", chantal.getCards().toString());
assertEquals("[J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♣, 9♠]", chantal.getCards().toString());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(EIGHT, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠]", chantal.getCards().toString());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♣, A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣, 7♣]", chantal.getCards().toString());
assertEquals("[A♥, 9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♠, J♣, 7♣]", chantal.getCards().toString());
assertEquals("[9♥, K♠, A♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, A♥]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣]", chantal.getCards().toString());
assertEquals("[9♦, 10♦, 7♥]", game.getDrawPile().toString());
assertEquals("[7♣, 8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, A♥, 9♦, 10♦]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣]", chantal.getCards().toString());
assertEquals("[7♥]", game.getDrawPile().toString());
assertEquals("[7♣, 8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, A♥, 9♦, 10♦]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣]", chantal.getCards().toString());
assertEquals("[7♥]", game.getDrawPile().toString());
assertEquals("[7♣, 8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(SPADES);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, A♥, 9♦, 10♦]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣]", chantal.getCards().toString());
assertEquals("[7♥]", game.getDrawPile().toString());
assertEquals("[7♣, 8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(KING, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♥, K♠, A♥, 9♦, 10♦]", jacqueline.getCards().toString());
assertEquals("[9♠, J♣]", chantal.getCards().toString());
assertEquals("[7♥]", game.getDrawPile().toString());
assertEquals("[7♣, 8♣, 10♣, J♠, 10♥, K♥, K♦, Q♦, J♥, A♦, 8♦, 7♦, J♦, A♠, A♣, 9♣, K♣, Q♣, Q♥, Q♠, 10♠, 7♠, 8♠, 8♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,302 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau7Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(EIGHT, DIAMONDS), c(JACK, DIAMONDS), c(ACE, DIAMONDS), c(NINE, CLUBS), c(TEN, HEARTS), c(TEN, DIAMONDS), c(NINE, SPADES), c(SEVEN, HEARTS), c(QUEEN, CLUBS), c(ACE, SPADES), c(JACK, SPADES), c(JACK, CLUBS), c(SEVEN, DIAMONDS), c(JACK, HEARTS), c(TEN, SPADES), c(QUEEN, DIAMONDS), c(EIGHT, SPADES), c(QUEEN, SPADES), c(NINE, DIAMONDS), c(QUEEN, HEARTS), c(KING, CLUBS), c(KING, HEARTS), c(NINE, HEARTS), c(KING, DIAMONDS), c(EIGHT, HEARTS), c(EIGHT, CLUBS), c(TEN, CLUBS), c(SEVEN, CLUBS), c(SEVEN, SPADES), c(ACE, HEARTS), c(KING, SPADES), c(ACE, CLUBS));
final MauMau game = new MauMau(5, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[8♦, J♦, A♦, 9♣, 10♥, 10♦, 9♠, 7♥, Q♣, A♠, J♠, J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, A♦, 10♥, 9♠, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 9♣, 10♦, 7♥, A♠]", chantal.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(NINE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♣, 10♦, 7♥, A♠]", chantal.getCards().toString());
assertEquals("[8♦, A♦, 10♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, A♦, 10♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 9♣, 10♦, 7♥]", chantal.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♣, 10♦, 7♥]", chantal.getCards().toString());
assertEquals("[8♦, 10♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♥, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 9♣, 7♥]", chantal.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♣, 7♥]", chantal.getCards().toString());
assertEquals("[8♦, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♣]", jacqueline.getCards().toString());
assertEquals("[J♦, 9♣]", chantal.getCards().toString());
assertEquals("[J♣, 7♦, J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♣, J♣, 7♦]", jacqueline.getCards().toString());
assertEquals("[J♦, 9♣]", chantal.getCards().toString());
assertEquals("[J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♣]", chantal.getCards().toString());
assertEquals("[8♦, Q♣, J♣]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♦, 9♣, J♥, 10♠]", chantal.getCards().toString());
assertEquals("[8♦, Q♣, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♣, J♥, 10♠]", chantal.getCards().toString());
assertEquals("[8♦, Q♣, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(CLUBS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♣, J♣]", jacqueline.getCards().toString());
assertEquals("[9♣, J♥, 10♠]", chantal.getCards().toString());
assertEquals("[Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♣, J♥, 10♠]", chantal.getCards().toString());
assertEquals("[8♦, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, J♣]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠]", chantal.getCards().toString());
assertEquals("[Q♦, 8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, 10♠]", chantal.getCards().toString());
assertEquals("[8♦, J♣, Q♦]", jacqueline.getCards().toString());
assertEquals("[8♠, Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, J♣, Q♦]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, 8♠]", chantal.getCards().toString());
assertEquals("[Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, CLUBS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♦]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, 8♠]", chantal.getCards().toString());
assertEquals("[Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, 10♠, 8♠]", chantal.getCards().toString());
assertEquals("[8♦, Q♦]", jacqueline.getCards().toString());
assertEquals("[Q♠, 9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, Q♦]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, 8♠, Q♠]", chantal.getCards().toString());
assertEquals("[9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, 8♠, Q♠]", chantal.getCards().toString());
assertEquals("[9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[8♦, J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♦]", jacqueline.getCards().toString());
assertEquals("[J♥, 10♠, 8♠, Q♠]", chantal.getCards().toString());
assertEquals("[9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[8♦, J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(QUEEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♥, 10♠, 8♠, Q♠]", chantal.getCards().toString());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(jacqueline, chantal), game.getRanking());
assertEquals("[9♦, Q♥, K♣, K♥, 9♥, K♦, 8♥, 8♣, 10♣, 7♣, 7♠, A♥, K♠, A♣]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, J♣, 9♣, Q♣, J♦, 7♦, 7♥, 10♥, 10♦, A♦, A♠, 9♠, J♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,463 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau8Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(NINE, DIAMONDS), c(QUEEN, SPADES), c(EIGHT, SPADES), c(TEN, CLUBS), c(ACE, DIAMONDS), c(JACK, CLUBS), c(NINE, SPADES), c(QUEEN, DIAMONDS), c(EIGHT, HEARTS), c(TEN, SPADES), c(TEN, DIAMONDS), c(SEVEN, HEARTS), c(KING, HEARTS), c(SEVEN, CLUBS), c(NINE, HEARTS), c(SEVEN, SPADES), c(NINE, CLUBS), c(ACE, HEARTS), c(JACK, DIAMONDS), c(KING, DIAMONDS), c(EIGHT, DIAMONDS), c(JACK, SPADES), c(QUEEN, CLUBS), c(SEVEN, DIAMONDS), c(EIGHT, CLUBS), c(ACE, CLUBS), c(QUEEN, HEARTS), c(KING, CLUBS), c(TEN, HEARTS), c(ACE, SPADES), c(KING, SPADES), c(JACK, HEARTS));
final MauMau game = new MauMau(4, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
final Player cheyenne = game.addPlayer("Cheyenne");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[]", cheyenne.getCards().toString());
assertEquals("[9♦, Q♠, 8♠, 10♣, A♦, J♣, 9♠, Q♦, 8♥, 10♠, 10♦, 7♥, K♥, 7♣, 9♥, 7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[Q♠, A♦, Q♦, 10♦]", chantal.getCards().toString());
assertEquals("[8♠, J♣, 8♥, 7♥]", cheyenne.getCards().toString());
assertEquals("[7♣, 9♥, 7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, A♦, Q♦, 10♦]", chantal.getCards().toString());
assertEquals("[8♠, J♣, 8♥, 7♥]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, 7♣]", jacqueline.getCards().toString());
assertEquals("[9♥, 7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♠, J♣, 8♥, 7♥]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, 7♣]", jacqueline.getCards().toString());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥]", chantal.getCards().toString());
assertEquals("[7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(SEVEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠, 7♣]", jacqueline.getCards().toString());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥]", chantal.getCards().toString());
assertEquals("[8♠, J♣, 8♥]", cheyenne.getCards().toString());
assertEquals("[7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥]", chantal.getCards().toString());
assertEquals("[8♠, J♣, 8♥]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♠, 9♣, A♥, J♦, K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(2, game.get7Counter());
chantal.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥, 7♠, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[8♠, J♣, 8♥]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♠, J♣, 8♥]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦, J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
cheyenne.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♠, J♣, 8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(EIGHT, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♠, A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[J♣, 8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[J♣, 8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(JACK, CLUBS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseSuit(HEARTS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[J♠, Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, 10♦, 9♥, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, J♠]", jacqueline.getCards().toString());
assertEquals("[Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♥, K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, J♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(EIGHT, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, 10♦, 9♣, A♥, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, J♠]", jacqueline.getCards().toString());
assertEquals("[Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠, J♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♣, J♦]", chantal.getCards().toString());
assertEquals("[Q♣, 7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠, J♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♣, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦, Q♣]", cheyenne.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, SPADES));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, 9♣, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦, Q♣]", cheyenne.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(CLUBS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, 10♦, 9♣, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦, Q♣]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertEquals(CLUBS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, 8♦, Q♣]", cheyenne.getCards().toString());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(QUEEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♣, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, 10♦, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, 10♦, J♦]", chantal.getCards().toString());
assertEquals("[K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦, 8♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, Q♦, J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, J♦]", chantal.getCards().toString());
assertEquals("[K♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♦, Q♦, J♦]", chantal.getCards().toString());
assertEquals("[K♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[K♦]", cheyenne.getCards().toString());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, J♦]", chantal.getCards().toString());
assertEquals("[]", cheyenne.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.maumau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[9♦, 9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[A♦, J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(NINE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[A♦, J♦]", chantal.getCards().toString());
assertEquals("[9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(ACE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[9♠, 10♠]", jacqueline.getCards().toString());
assertEquals("[J♦]", chantal.getCards().toString());
assertEquals("[7♦, 8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[J♦]", chantal.getCards().toString());
assertEquals("[9♠, 10♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(chantal, jacqueline), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[9♠, 10♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♦, A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseSuit(DIAMONDS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal), game.getPlayers());
assertEquals(List.of(cheyenne), game.getRanking());
assertEquals("[9♠, 10♠, 7♦]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♦, A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(cheyenne, chantal, jacqueline), game.getRanking());
assertEquals("[8♣, A♣, Q♥, K♣, 10♥, A♠, K♠, J♥]", game.getDrawPile().toString());
assertEquals("[J♦, A♦, 9♦, K♦, Q♦, 8♦, 10♦, 10♣, Q♣, 9♣, J♠, A♥, 8♥, 9♥, J♣, Q♠, 8♠, 7♠, 7♣, 7♥, K♥]", game.getDiscardPile().toString());
assertEquals(DIAMONDS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}

View File

@@ -0,0 +1,403 @@
package cards.maumau.model;
import cards.Card;
import cards.Rank;
import cards.Suit;
import org.junit.Test;
import java.util.List;
import static cards.Rank.ACE;
import static cards.Rank.EIGHT;
import static cards.Rank.JACK;
import static cards.Rank.KING;
import static cards.Rank.NINE;
import static cards.Rank.QUEEN;
import static cards.Rank.SEVEN;
import static cards.Rank.TEN;
import static cards.Suit.CLUBS;
import static cards.Suit.DIAMONDS;
import static cards.Suit.HEARTS;
import static cards.Suit.SPADES;
import static cards.maumau.model.GameState.CHOOSE_SUIT;
import static cards.maumau.model.GameState.GAME_INITIALIZED;
import static cards.maumau.model.GameState.GAME_OVER;
import static cards.maumau.model.GameState.PLAY;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
public class MauMau9Test {
private static Card c(Rank r, Suit s) {
return new Card(r, s);
}
@Test
public void game() {
final List<Card> deck = List.of(c(ACE, HEARTS), c(SEVEN, CLUBS), c(EIGHT, DIAMONDS), c(TEN, CLUBS), c(QUEEN, HEARTS), c(TEN, SPADES), c(SEVEN, DIAMONDS), c(SEVEN, HEARTS), c(KING, DIAMONDS), c(JACK, CLUBS), c(NINE, DIAMONDS), c(TEN, HEARTS), c(SEVEN, SPADES), c(KING, CLUBS), c(KING, HEARTS), c(QUEEN, DIAMONDS), c(NINE, CLUBS), c(ACE, SPADES), c(EIGHT, HEARTS), c(TEN, DIAMONDS), c(JACK, DIAMONDS), c(ACE, CLUBS), c(QUEEN, CLUBS), c(JACK, HEARTS), c(NINE, SPADES), c(EIGHT, SPADES), c(QUEEN, SPADES), c(JACK, SPADES), c(ACE, DIAMONDS), c(NINE, HEARTS), c(KING, SPADES), c(EIGHT, CLUBS));
final MauMau game = new MauMau(4, deck);
final Player jacqueline = game.addPlayer("Jacqueline");
final Player chantal = game.addPlayer("Chantal");
final Player cheyenne = game.addPlayer("Cheyenne");
assertEquals(GAME_INITIALIZED, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[]", cheyenne.getCards().toString());
assertEquals("[A♥, 7♣, 8♦, 10♣, Q♥, 10♠, 7♦, 7♥, K♦, J♣, 9♦, 10♥, 7♠, K♣, K♥, Q♦, 9♣, A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
game.startGame();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♥, 10♣, 7♦, J♣]", jacqueline.getCards().toString());
assertEquals("[7♣, Q♥, 7♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, 10♥]", cheyenne.getCards().toString());
assertEquals("[K♣, K♥, Q♦, 9♣, A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(SEVEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, Q♥, 7♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, 10♥]", cheyenne.getCards().toString());
assertEquals("[A♥, 10♣, J♣]", jacqueline.getCards().toString());
assertEquals("[K♣, K♥, Q♦, 9♣, A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
chantal.chooseCard(c(SEVEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, 10♥]", cheyenne.getCards().toString());
assertEquals("[A♥, 10♣, J♣]", jacqueline.getCards().toString());
assertEquals("[7♣, Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[K♣, K♥, Q♦, 9♣, A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(2, game.get7Counter());
cheyenne.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, 10♥, K♣, K♥, Q♦, 9♣]", cheyenne.getCards().toString());
assertEquals("[A♥, 10♣, J♣]", jacqueline.getCards().toString());
assertEquals("[7♣, Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(TEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♥, 10♣, J♣]", jacqueline.getCards().toString());
assertEquals("[7♣, Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♣, K♥, Q♦, 9♣]", cheyenne.getCards().toString());
assertEquals("[A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(TEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[7♣, Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♣, K♥, Q♦, 9♣]", cheyenne.getCards().toString());
assertEquals("[A♥, J♣]", jacqueline.getCards().toString());
assertEquals("[A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(SEVEN, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, K♣, K♥, Q♦, 9♣]", cheyenne.getCards().toString());
assertEquals("[A♥, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[A♠, 8♥, 10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(1, game.get7Counter());
cheyenne.no7();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, K♣, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[A♥, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(KING, CLUBS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♥, J♣]", jacqueline.getCards().toString());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, CLUBS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(HEARTS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[Q♥, 9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(QUEEN, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[9♦]", chantal.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠, 8♥]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[9♦]", chantal.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(EIGHT, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦]", chantal.getCards().toString());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦, J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[8♦, 10♠, K♦, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[9♦, 10♦]", chantal.getCards().toString());
assertEquals("[J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(EIGHT, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[9♦, 10♦]", chantal.getCards().toString());
assertEquals("[10♠, K♦, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(NINE, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♠, K♦, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦]", chantal.getCards().toString());
assertEquals("[J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♠, K♦, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦]", chantal.getCards().toString());
assertEquals("[J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(KING, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, chantal, cheyenne), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[10♦]", chantal.getCards().toString());
assertEquals("[10♠, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[J♦, A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.skip();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(chantal, cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♦]", chantal.getCards().toString());
assertEquals("[10♠, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥, J♦]", jacqueline.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.chooseCard(c(TEN, DIAMONDS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline, chantal), game.getPlayers());
assertEquals(List.of(), game.getRanking());
assertEquals("[10♠, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥, J♦]", jacqueline.getCards().toString());
assertEquals("[]", chantal.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
chantal.maumau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[10♠, K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥, J♦]", jacqueline.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(TEN, SPADES));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, cheyenne), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[A♥, J♦]", jacqueline.getCards().toString());
assertEquals("[K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(JACK, DIAMONDS));
assertEquals(CHOOSE_SUIT, game.getGameState());
assertEquals(List.of(jacqueline, cheyenne), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseSuit(HEARTS);
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.mau();
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[K♥, Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertEquals(HEARTS, game.getChosenSuit());
assertEquals(0, game.get7Counter());
cheyenne.chooseCard(c(KING, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(jacqueline, cheyenne), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[A♥]", jacqueline.getCards().toString());
assertEquals("[Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[K♥, J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.chooseCard(c(ACE, HEARTS));
assertEquals(PLAY, game.getGameState());
assertEquals(List.of(cheyenne, jacqueline), game.getPlayers());
assertEquals(List.of(chantal), game.getRanking());
assertEquals("[Q♦, 9♣, A♠]", cheyenne.getCards().toString());
assertEquals("[]", jacqueline.getCards().toString());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[A♥, K♥, J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
jacqueline.maumau();
assertEquals(GAME_OVER, game.getGameState());
assertEquals(List.of(), game.getPlayers());
assertEquals(List.of(chantal, jacqueline, cheyenne), game.getRanking());
assertEquals("[A♣, Q♣, J♥, 9♠, 8♠, Q♠, J♠, A♦, 9♥, K♠, 8♣]", game.getDrawPile().toString());
assertEquals("[A♥, K♥, J♦, 10♠, 10♦, K♦, 9♦, 8♦, 8♥, Q♥, J♣, K♣, 7♣, 10♣, 10♥, 7♥, 7♦, 7♠]", game.getDiscardPile().toString());
assertNull(game.getChosenSuit());
assertEquals(0, game.get7Counter());
}
}