diff --git a/demos/basics/texasholdem/src/main/java/org/ozsoft/texasholdem/Deck.java b/demos/basics/texasholdem/src/main/java/org/ozsoft/texasholdem/Deck.java index 3098f88..771f157 100644 --- a/demos/basics/texasholdem/src/main/java/org/ozsoft/texasholdem/Deck.java +++ b/demos/basics/texasholdem/src/main/java/org/ozsoft/texasholdem/Deck.java @@ -87,7 +87,7 @@ public void reset() { * @return the card dealt */ public Card deal() { - if (nextCardIndex + 1 >= NO_OF_CARDS) { + if (nextCardIndex + 1 > NO_OF_CARDS) { throw new IllegalStateException("No cards left in deck"); } return cards[nextCardIndex++]; @@ -110,7 +110,7 @@ public List deal(int noOfCards) { if (noOfCards < 1) { throw new IllegalArgumentException("noOfCards < 1"); } - if (nextCardIndex + noOfCards >= NO_OF_CARDS) { + if (nextCardIndex + noOfCards > NO_OF_CARDS) { throw new IllegalStateException("No cards left in deck"); } List dealtCards = new ArrayList(); @@ -134,7 +134,7 @@ public List deal(int noOfCards) { * If there are no cards left in the deck. */ public Card deal(int rank, int suit) { - if (nextCardIndex + 1 >= NO_OF_CARDS) { + if (nextCardIndex + 1 > NO_OF_CARDS) { throw new IllegalStateException("No cards left in deck"); } Card card = null; diff --git a/demos/basics/texasholdem/src/test/java/ex6/DeckDealTest.java b/demos/basics/texasholdem/src/test/java/ex6/DeckDealTest.java new file mode 100644 index 0000000..0a6af9a --- /dev/null +++ b/demos/basics/texasholdem/src/test/java/ex6/DeckDealTest.java @@ -0,0 +1,130 @@ +package ex6; + +import org.junit.Assert; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; +import org.ozsoft.texasholdem.Card; +import org.ozsoft.texasholdem.Deck; + +/*** + * Test for the deal() methods from Deck.java. Test Lines: [90-93], [110-120], + * [137-156]. + * + * @author Victor Chen (~vsyc) + * + */ +public class DeckDealTest { + private Deck deck; + + @Before + public void setUp() { + deck = new Deck(); + } + + /** + * Covered line: 93 + */ + @Test + public void testDeal01() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + String cards = deck.toString(); + StringBuilder sb = new StringBuilder(); + + for (int i = 0; i < Card.NO_OF_RANKS * Card.NO_OF_SUITS; i++) { + sb.append(deck.deal().toString()); + sb.append(" "); + } + + Assert.assertEquals(cards, sb.toString().trim()); + } + + /** + * Covered lines: 90-92 + */ + @Test(expected = IllegalStateException.class) + public void testDeal02() { + for (int i = 0; i <= Card.NO_OF_RANKS * Card.NO_OF_SUITS; i++) { + deck.deal(); + } + } + + /** + * Covered lines: 110-112 + */ + @Test(expected = IllegalArgumentException.class) + public void testDeal03() { + deck.deal(0); + } + + /** + * Covered lines: 113-115 + */ + @Test(expected = IllegalStateException.class) + public void testDeal04() { + deck.deal(60); + } + + /** + * Covered lines: 116-120 + */ + @Test + public void testDeal05() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + int quantidade = 52; + deck.deal(quantidade); + Assert.assertEquals(quantidade, deck.getNextCardIndex()); + } + + /** + * Covered lines: 137-139 + */ + @Test(expected = IllegalStateException.class) + public void testDeal06() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + for (int i = 0; i < Card.NO_OF_RANKS * Card.NO_OF_SUITS; i++) { + deck.deal(); + } + deck.deal(1, 1); + } + + /** + * deal(4,1) enter + * "if ((cards[i].getRank() == rank) && (cards[i].getSuit() == suit))", + * "if (index != -1)" and "if (index != nextCardIndex)". + * + * Covered lines: 140-156 + */ + @Test + public void testDeal07() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + // In Card.java: RANK_SYMBOLS[4] = "6", SUIT_SYMBOLS[1] = "c" + Assert.assertEquals("6c", deck.deal(4, 1).toString()); + } + + /** + * Second deal(4,1) enter do not enter in any if's. + * + * Covered lines: 140-143, 148, 156 + */ + @Test + public void testDeal08() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + // In Card.java: RANK_SYMBOLS[4] = "6", SUIT_SYMBOLS[1] = "c" + Assert.assertEquals("6c", deck.deal(4, 1).toString()); + Assert.assertEquals(null, deck.deal(4, 1)); + } + + /** + * deal(11,3) enter + * "if ((cards[i].getRank() == rank) && (cards[i].getSuit() == suit))" and + * "if (index != -1)". + * + * Covered lines: 140-149, 154-156 + */ + @Test + public void testDeal09() { + Assume.assumeTrue(deck.getNextCardIndex() == 0); + Assert.assertEquals("Ks", deck.deal(11, 3).toString()); + } +} \ No newline at end of file diff --git a/demos/basics/texasholdem/src/test/java/ex6/DeckShuffleTest.java b/demos/basics/texasholdem/src/test/java/ex6/DeckShuffleTest.java new file mode 100644 index 0000000..b2381c2 --- /dev/null +++ b/demos/basics/texasholdem/src/test/java/ex6/DeckShuffleTest.java @@ -0,0 +1,32 @@ +package ex6; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.ozsoft.texasholdem.Deck; + +/*** + * Test for the shuffle() method from Deck.java. Test Lines: [66-72]. + * + * @author Victor Chen (~vsyc) + * + */ +public class DeckShuffleTest { + private Deck deck; + + @Before + public void setUp() { + deck = new Deck(); + } + + /** + * Covered lines: 66-72 + */ + @Test + public void testShuffle() { + String d1 = deck.toString(); + deck.shuffle(); + String d2 = deck.toString(); + Assert.assertNotEquals(d1, d2); + } +} \ No newline at end of file diff --git a/demos/basics/texasholdem/src/test/java/ex6/DeckSmokeTest.java b/demos/basics/texasholdem/src/test/java/ex6/DeckSmokeTest.java new file mode 100644 index 0000000..3a57d98 --- /dev/null +++ b/demos/basics/texasholdem/src/test/java/ex6/DeckSmokeTest.java @@ -0,0 +1,46 @@ +package ex6; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.ozsoft.texasholdem.Card; +import org.ozsoft.texasholdem.Deck; + +/*** + * Test for the getNextCardIndex() and reset() methods from Deck.java. Test + * Lines: [81], [171]. + * + * @author Victor Chen (~vsyc) + * + */ +public class DeckSmokeTest { + private Deck deck; + + @Before + public void setUp() { + deck = new Deck(); + } + + /** + * Covered line: 171 + */ + @Test + public void testGetNextCardIndex() { + Assert.assertEquals(0, deck.getNextCardIndex()); + int number_cards = Card.NO_OF_RANKS * Card.NO_OF_SUITS; + for (int i = 0; i < number_cards; i++) { + deck.deal(); + Assert.assertEquals(i + 1, deck.getNextCardIndex()); + } + } + + /** + * Covered line: 81 + */ + @Test + public void testReset() { + deck.deal(); + deck.reset(); + Assert.assertEquals(0, deck.getNextCardIndex()); + } +} \ No newline at end of file diff --git a/demos/basics/texasholdem/src/test/java/ex6/DeckSuiteTest.java b/demos/basics/texasholdem/src/test/java/ex6/DeckSuiteTest.java new file mode 100644 index 0000000..4dba7a6 --- /dev/null +++ b/demos/basics/texasholdem/src/test/java/ex6/DeckSuiteTest.java @@ -0,0 +1,11 @@ +package ex6; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@SuiteClasses({ DeckSmokeTest.class, DeckToStringTest.class, DeckShuffleTest.class, DeckDealTest.class }) + +@RunWith(Suite.class) +public class DeckSuiteTest { +} \ No newline at end of file diff --git a/demos/basics/texasholdem/src/test/java/ex6/DeckToStringTest.java b/demos/basics/texasholdem/src/test/java/ex6/DeckToStringTest.java new file mode 100644 index 0000000..bb20cb4 --- /dev/null +++ b/demos/basics/texasholdem/src/test/java/ex6/DeckToStringTest.java @@ -0,0 +1,31 @@ +package ex6; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.ozsoft.texasholdem.Deck; + +/*** + * Test for the toString() method from Deck.java. Test Lines: [162-167]. + * + * @author Victor Chen (~vsyc) + * + */ +public class DeckToStringTest { + private Deck deck; + + @Before + public void setUp() { + deck = new Deck(); + } + + /** + * Covered lines: 162-167 + */ + @Test + public void testToString() { + String s = deck.toString(); + String[] d = s.split(" "); + Assert.assertEquals(52, d.length); + } +} \ No newline at end of file