Skip to content
Snippets Groups Projects
Commit 756febac authored by giovanni.novati@studenti.unimi.it's avatar giovanni.novati@studenti.unimi.it
Browse files

Merge branch 'feature/Briscola' into develop

parents eae3abe8 1cb1e58b
Branches
Tags
No related merge requests found
......@@ -46,8 +46,16 @@ public class Briscola {
@NotNull // spostato a livello private package per facilitarne il testing
Player establishTurnWinner(@NotNull Card first, @NotNull Card second) {
// TODO identifica (e restituisce) il vincitore del turno applicando le regole alle due carte giocate
return null;
if (first.getSuit()==second.getSuit()){
if (first.getRank().compareTo(second.getRank())>0)
return firstCardPlayer;
return otherPlayer(firstCardPlayer);
}
if(isBriscola(second))
return otherPlayer(firstCardPlayer);
return firstCardPlayer;
}
public void giveEachPlayerOneCard() {
......@@ -80,9 +88,11 @@ public class Briscola {
}
@NotNull
public Player establishGameWinner() {
// TODO identifica (e restituisce) il vincitore della partita (o un NULL OBJECT adatto in caso di pareggio)
return null;
public PlayerB establishGameWinner() {
if (firstCardPlayer.compareTo(otherPlayer(firstCardPlayer)) > 0)
return firstCardPlayer;
return (firstCardPlayer.compareTo(otherPlayer(firstCardPlayer)) < 0) ? otherPlayer(firstCardPlayer) : PlayerB.NULL;
}
@NotNull
......
......@@ -7,7 +7,7 @@ import java.util.Collections;
import java.util.Iterator;
import java.util.List;
public class Player implements Iterable<Card>, Comparable<Player> {
public class Player implements Iterable<Card>, Comparable<Player>, PlayerB {
private @NotNull final String name;
private @NotNull final List<Card> cards = new ArrayList<>();
private @NotNull final List<Card> personalDeck = new ArrayList<>();
......
package it.unimi.di.sweng.briscola;
public interface PlayerB {
public static PlayerB NULL = new PlayerB() { };
}
package it.unimi.di.sweng.briscola;
import org.assertj.core.api.ComparableAssert;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class BriscolaTest {
@Test
void turnWinnerTest() {
Deck d = mock(Deck.class);
Player p1 = mock(Player.class);
Player p2 = mock(Player.class);
when(d.draw()).thenReturn(Card.get(Rank.ASSO, Suit.BASTONI));
Briscola b = new Briscola(p1, p2, d);
assertThat((Comparable<Player>) b.establishTurnWinner(Card.get(Rank.DUE, Suit.COPPE), Card.get(Rank.TRE, Suit.BASTONI))).isEqualTo(p2);
assertThat((Comparable<Player>) b.establishTurnWinner(Card.get(Rank.ASSO, Suit.BASTONI), Card.get(Rank.TRE, Suit.BASTONI))).isEqualTo(p1);
assertThat((Comparable<Player>) b.establishTurnWinner(Card.get(Rank.DUE, Suit.COPPE), Card.get(Rank.TRE, Suit.DENARI))).isEqualTo(p1);
}
@Test
void gameWinnerTest() {
Deck d = mock(Deck.class);
Player p1 = mock(Player.class);
Player p2 = mock(Player.class);
Briscola b = new Briscola(p1, p2, d);
when(p1.compareTo(p2)).thenReturn(-1);
assertThat(b.establishGameWinner()).isEqualTo(p2);
when(p1.compareTo(p2)).thenReturn(1);
assertThat(b.establishGameWinner()).isEqualTo(p1);
when(p1.compareTo(p2)).thenReturn(0);
assertThat(b.establishGameWinner()).isEqualTo(PlayerB.NULL);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment