kva/test/cards/maumau/model/MauMau3Test.java
2024-05-12 14:25:54 +02:00

173 lines
9.1 KiB
Java
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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());
}
}