Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added Texas Hold'em Deck Tests #20

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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++];
Expand All @@ -110,7 +110,7 @@ public List<Card> 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<Card> dealtCards = new ArrayList<Card>();
Expand All @@ -134,7 +134,7 @@ public List<Card> 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;
Expand Down
130 changes: 130 additions & 0 deletions demos/basics/texasholdem/src/test/java/ex6/DeckDealTest.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
32 changes: 32 additions & 0 deletions demos/basics/texasholdem/src/test/java/ex6/DeckShuffleTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
46 changes: 46 additions & 0 deletions demos/basics/texasholdem/src/test/java/ex6/DeckSmokeTest.java
Original file line number Diff line number Diff line change
@@ -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());
}
}
11 changes: 11 additions & 0 deletions demos/basics/texasholdem/src/test/java/ex6/DeckSuiteTest.java
Original file line number Diff line number Diff line change
@@ -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 {
}
31 changes: 31 additions & 0 deletions demos/basics/texasholdem/src/test/java/ex6/DeckToStringTest.java
Original file line number Diff line number Diff line change
@@ -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);
}
}