You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.3 KiB
73 lines
2.3 KiB
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
class PlayersTest {
|
|
Players players = new Players();
|
|
|
|
@BeforeEach
|
|
void setUp() {
|
|
Out.getOutput().clear();
|
|
}
|
|
|
|
@Test
|
|
void playForZeroPlayers() {
|
|
players.play();
|
|
assertEquals("", Out.get());
|
|
}
|
|
|
|
@Test
|
|
void playForOnePlayerMakesHimAWinner() {
|
|
Player player = new Player("0", Pile.createDeck(1));
|
|
players.add(player);
|
|
players.play();
|
|
assertEquals("Player 0 wins the game!\n", Out.get());
|
|
}
|
|
|
|
@Test
|
|
void playWithSameCardsHasNoWinner() {
|
|
Player player = new Player("0", Pile.createDeck(1));
|
|
players.add(player);
|
|
player = new Player("1", Pile.createDeck(1));
|
|
players.add(player);
|
|
players.play();
|
|
assertTrue(Out.get().contains("No winner in this round"));
|
|
assertTrue(Out.get().contains("No winner in the game!"));
|
|
}
|
|
|
|
@Test
|
|
void playWithTwoPlayers() {
|
|
Pile deck = new Pile();
|
|
deck.add(new Card(1, Card.Suit.CLUBS));
|
|
deck.add(new Card(2, Card.Suit.DIAMONDS));
|
|
deck.add(new Card(3, Card.Suit.HEARTS));
|
|
deck.add(new Card(4, Card.Suit.SPADES));
|
|
Player player = new Player("0", deck.take(2));
|
|
players.add(player);
|
|
player = new Player("1", deck.take(2));
|
|
players.add(player);
|
|
players.play();
|
|
assertTrue(Out.get().contains("Player 1 wins this round"));
|
|
assertTrue(Out.get().contains("Player 1 wins the game!"));
|
|
}
|
|
|
|
@Test
|
|
void playerOneWinningFourCards() {
|
|
Pile deck = new Pile();
|
|
deck.add(new Card(1, Card.Suit.CLUBS));
|
|
deck.add(new Card(2, Card.Suit.DIAMONDS));
|
|
deck.add(new Card(1, Card.Suit.HEARTS));
|
|
deck.add(new Card(4, Card.Suit.SPADES));
|
|
Player player = new Player("0", deck.take(2));
|
|
players.add(player);
|
|
player = new Player("1", deck.take(2));
|
|
players.add(player);
|
|
players.play();
|
|
assertTrue(Out.get().contains("No winner in this round"));
|
|
assertTrue(Out.get().contains("Player 1 wins this round"));
|
|
assertTrue(Out.get().contains("Player 1 wins the game!"));
|
|
assertEquals("1", players.get(0).name);
|
|
assertEquals(4, players.get(0).cardsCount());
|
|
}
|
|
} |