From 4e0e7148512313f317cea048473fda84b53ff624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sas=CC=8Ca=20Kocic=CC=81?= Date: Sat, 20 Jun 2020 07:21:42 +0200 Subject: [PATCH] Add shuffle test --- src/Card.java | 1 - src/Pile.java | 8 ++++++-- src/PileTest.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 src/PileTest.java diff --git a/src/Card.java b/src/Card.java index 503159d..58facc2 100644 --- a/src/Card.java +++ b/src/Card.java @@ -8,7 +8,6 @@ public class Card { DIAMONDS }; - public Card(int number, Suit suit) { this.number = number; this.suit = suit; diff --git a/src/Pile.java b/src/Pile.java index c5d3b36..94780bd 100644 --- a/src/Pile.java +++ b/src/Pile.java @@ -27,13 +27,17 @@ public class Pile extends ArrayList { * Fisher-Yates shuffle() * https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array */ - public void shuffle() { - Random random = new Random(); + public void shuffle(Random random) { for (int i = this.size() - 1; i > 0; i--) { Collections.swap(this, i, random.nextInt(i + 1)); } } + public void shuffle() { + Random random = new Random(); + shuffle(random); + } + public boolean uniqueMaximum(Card max, int maxIndex) { for (int i = 0; i < this.size(); i++) { if (maxIndex != i && max.number == this.get(i).number) { diff --git a/src/PileTest.java b/src/PileTest.java new file mode 100644 index 0000000..3bdb290 --- /dev/null +++ b/src/PileTest.java @@ -0,0 +1,44 @@ +import org.junit.jupiter.api.Test; + +import java.util.Random; + +import static org.junit.jupiter.api.Assertions.*; + +class PileTest { + + @Test + void shuffleEmptyPile() { + Pile pile = new Pile(); + pile.shuffle(); + assertEquals(0, pile.size()); + } + + @Test + void shuffleOneCard() { + Pile pile = new Pile(); + pile.add(new Card(1, Card.Suit.CLUBS)); + pile.shuffle(); + assertEquals(1, pile.size()); + assertEquals(1, pile.size()); + } + + @Test + void shuffleCards() { + Pile pile = new Pile(); + pile.add(new Card(1, Card.Suit.CLUBS)); + pile.add(new Card(2, Card.Suit.DIAMONDS)); + pile.add(new Card(3, Card.Suit.HEARTS)); + pile.add(new Card(4, Card.Suit.SPADES)); + Random random = new Random(1); + pile.shuffle(random); + assertEquals(4, pile.get(0).number); + assertEquals(Card.Suit.SPADES, pile.get(0).suit); + assertEquals(1, pile.get(1).number); + assertEquals(Card.Suit.CLUBS, pile.get(1).suit); + assertEquals(2, pile.get(2).number); + assertEquals(Card.Suit.DIAMONDS, pile.get(2).suit); + assertEquals(3, pile.get(3).number); + assertEquals(Card.Suit.HEARTS, pile.get(3).suit); + assertEquals(4, pile.size()); + } +} \ No newline at end of file