diff --git a/src/main/java/edu/ntnu/stud/cardgame/HandOfCards.java b/src/main/java/edu/ntnu/stud/cardgame/HandOfCards.java index 55e271156a89ed225ae5fd6ae1a528d836b1e913..b3b96b9cfa51907a5efa5e47976ffa2f8dfbf7f7 100644 --- a/src/main/java/edu/ntnu/stud/cardgame/HandOfCards.java +++ b/src/main/java/edu/ntnu/stud/cardgame/HandOfCards.java @@ -23,21 +23,19 @@ public class HandOfCards { public int getSum() { return hand.stream() .mapToInt(PlayingCard::getFace) - .sum(); + .reduce(0, Integer::sum); } public String findHearts() { - StringBuilder sb = new StringBuilder(); - - hand.stream() + String hearts = hand.stream() .map(PlayingCard::getAsString) .filter(s -> s.charAt(0) == 'H') - .forEach(sb::append); + .collect(Collectors.joining(" ")); - if (sb.isEmpty()) { + if (hearts.isEmpty()) { return "No hearts"; } - return sb.toString(); + return hearts.trim(); } public boolean containsQueenOfSpades() { diff --git a/src/test/java/edu/ntnu/stud/cardgame/DeckOfCardsTest.java b/src/test/java/edu/ntnu/stud/cardgame/DeckOfCardsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..401f48dbeb2b9fcdbd3592b07609d03e162414c1 --- /dev/null +++ b/src/test/java/edu/ntnu/stud/cardgame/DeckOfCardsTest.java @@ -0,0 +1,27 @@ +package edu.ntnu.stud.cardgame; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class DeckOfCardsTest { + DeckOfCards deck; + + @BeforeEach + void setDeck() { + deck = new DeckOfCards(); + } + + @Nested + public class PositiveTests{ + @Test + void testDeckFiller(){ + assertEquals(deck.getDeck().size(), 52); + assertTrue(deck.getDeck().contains(new PlayingCard('H', 10))); + assertTrue(deck.getDeck().contains(new PlayingCard('D', 1))); + assertTrue(deck.getDeck().contains(new PlayingCard('C', 5))); + } + } +} diff --git a/src/test/java/edu/ntnu/stud/cardgame/HandOfCardsTest.java b/src/test/java/edu/ntnu/stud/cardgame/HandOfCardsTest.java new file mode 100644 index 0000000000000000000000000000000000000000..85362c013eabeed49351460506e7e3db01d0ce41 --- /dev/null +++ b/src/test/java/edu/ntnu/stud/cardgame/HandOfCardsTest.java @@ -0,0 +1,65 @@ +package edu.ntnu.stud.cardgame; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +public class HandOfCardsTest { + HandOfCards hand; + PlayingCard card1; + PlayingCard card2; + PlayingCard card3; + PlayingCard card4; + + @BeforeEach + void setHand() { + hand = new HandOfCards(); + card1 = new PlayingCard('H', 12); + card2 = new PlayingCard('D', 2); + card3 = new PlayingCard('C', 7); + card4 = new PlayingCard('S', 12); + } + + @Nested + class PositiveTests { + @Test + void testAddCard() { + hand.addCard(card1); + assertTrue(hand.getHand().contains(card1)); + } + + @Test + void testGetSum() { + hand.addCard(card1); + hand.addCard(card2); + hand.addCard(card3); + assertEquals(hand.getSum(),21); + } + + @Test + void testFindHearts() { + hand.addCard(card1); + assertEquals(hand.findHearts(), card1.getAsString()); + } + + @Test + void testContainsQueenOfSpades(){ + assertFalse(hand.containsQueenOfSpades()); + hand.addCard(card4); + assertTrue(hand.containsQueenOfSpades()); + } + + @Test + void testContains5Flush() { + assertFalse(hand.contains5Flush()); + + for (int i = 0; i<5; i++){ + hand.addCard(card2); + } + + assertTrue(hand.contains5Flush()); + } + } +} diff --git a/src/test/java/edu/ntnu/stud/cardgame/PlayingCardTest.java b/src/test/java/edu/ntnu/stud/cardgame/PlayingCardTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9a5ffc2832a98e5502470112279c437bc583f291 --- /dev/null +++ b/src/test/java/edu/ntnu/stud/cardgame/PlayingCardTest.java @@ -0,0 +1,35 @@ +package edu.ntnu.stud.cardgame; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class PlayingCardTest { + PlayingCard card1; + PlayingCard card2; + @BeforeEach + public void setUp() { + card1 = new PlayingCard('H', 3); + } + + @Nested + public class PositiveTests { + @Test + void testGetAsString() { + assertEquals("H3", card1.getAsString()); + } + } + + @Nested + public class NegativeTests { + @Test + void testConstructor() { + assertThrows(IllegalArgumentException.class, () -> card2 = new PlayingCard('E', 10)); + assertThrows(IllegalArgumentException.class, () -> card2 = new PlayingCard('D', 90)); + assertThrows(IllegalArgumentException.class, () -> card2 = new PlayingCard('H', 0)); + } + } +}