added a dedicated card and turn handler, more tests and fixed some bugs

This commit is contained in:
2022-09-19 20:50:01 +02:00
parent 99705d3924
commit a459f5b703
16 changed files with 436 additions and 111 deletions

View File

@@ -1,4 +1,41 @@
package mau.mau;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertFalse;
public class DeckTest {
private Deck sut;
@BeforeEach
void setUp(){
sut = new Deck();
}
@Test
public void doIReceiveCardAfterDrawingTest(){
// Act
Card card = sut.drawCard();
boolean result = card.getClass().equals(Card.class);
// Assert
assertTrue(result);
}
@Test
public void isDeckEmptyWhenDrawingTheFirstCardTest() {
// Assign
int cardsToDraw = 1;
// Act
boolean result = sut.deckIsEmpty(cardsToDraw);
// Assert
assertFalse(result);
}
}

View File

@@ -0,0 +1,4 @@
package mau.mau;
public class GameTest {
}

View File

@@ -59,6 +59,43 @@ public class RefereeTest {
assertTrue(results);
}
@Test
public void isTwoOfHeartsAMauCardTest(){
//Assign
Card testCard = new Card(TYPENUM.HEARTS, VALUENUM.TWO);
//Act
boolean result = Referee.isMauCard(testCard);
//Assert
assertTrue(result);
}
@Test
public void isJokerAMauCardTest(){
//Assign
Card testCard = new Card(TYPENUM.JOKER, VALUENUM.THREE);
//Act
boolean result = Referee.isMauCard(testCard);
//Assert
assertTrue(result);
}
@Test
public void isThreeOfSpadesAMauCardTest(){
//Assign
Card testCard = new Card(TYPENUM.HEARTS, VALUENUM.THREE);
//Act
boolean result = Referee.isMauCard(testCard);
//Assert
assertFalse(result);
}
@Test
public void isAceOfSpadesValidEndcardTest(){
//Assign

View File

@@ -0,0 +1,57 @@
package mau.mau;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class UtilsTest {
@Test
public void isNumericStringNumericTest() {
//Assign
String numericString = "123";
//Act
boolean isNumeric = Utils.isNumeric(numericString);
//Assert
assertTrue(isNumeric);
}
@Test
public void isAlphabeticStringNumericTest() {
//Assign
String numericString = "Koet";
//Act
boolean isNumeric = Utils.isNumeric(numericString);
//Assert
assertFalse(isNumeric);
}
@Test
public void isEmptyStringNumericTest() {
//Assign
String numericString = "";
//Act
boolean isNumeric = Utils.isNumeric(numericString);
//Assert
assertFalse(isNumeric);
}
@Test
public void isCarriageReturnStringNumericTest() {
//Assign
String numericString = "\n";
//Act
boolean isNumeric = Utils.isNumeric(numericString);
//Assert
assertFalse(isNumeric);
}
}

View File

@@ -0,0 +1,114 @@
package mau.mau.players;
import mau.mau.*;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
public class BotTest {
private Bot sut;
private Dealer dealer;
private Deck deck;
private List<Card> hand;
@BeforeEach
public void setUp() {
deck = new Deck();
dealer = new Dealer(deck);
sut = new Bot("Koet", dealer);
hand = new ArrayList<>();
}
@Test
public void canBotEndTheGameWithFourOfHeartsOnThreeOfHeartsTest() {
//Assign
Card currentCard = new Card(TYPENUM.HEARTS, VALUENUM.THREE);
hand.add(new Card(TYPENUM.HEARTS, VALUENUM.FOUR));
sut.setHand(hand);
//Assert
assertEquals(1, sut.getHandSize());
//Act
sut.getPlay(currentCard);
//Assert
assertTrue(sut.handIsEmpty());
}
@Test
public void canBotDrawACardTest() {
//Assign
Card currentCard = new Card(TYPENUM.SPADES, VALUENUM.THREE);
hand.add(new Card(TYPENUM.HEARTS, VALUENUM.FOUR));
sut.setHand(hand);
//Assert
assertEquals(1, sut.getHandSize());
//Act
sut.getPlay(currentCard);
//Assert
assertEquals(2, sut.getHandSize());
}
@Test
public void canBotPlayACardWithSameTypeTest() {
//Assign
Card currentCard = new Card(TYPENUM.HEARTS, VALUENUM.THREE);
Card spadesFive = new Card(TYPENUM.SPADES, VALUENUM.FIVE);
Card clubsEight = new Card(TYPENUM.CLUBS, VALUENUM.EIGHT);
Card heartsNine = new Card(TYPENUM.HEARTS, VALUENUM.NINE);
hand.add(spadesFive);
hand.add(clubsEight);
hand.add(heartsNine);
sut.setHand(hand);
//Assert
assertEquals(3, sut.getHandSize());
//Act
sut.getPlay(currentCard);
//Assert
assertFalse(hand.contains(heartsNine));
}
@Test
public void canBotPlayACardWithSameValueTest() {
//Assign
Card currentCard = new Card(TYPENUM.DIAMONDS, VALUENUM.FIVE);
Card spadesFive = new Card(TYPENUM.SPADES, VALUENUM.FIVE);
Card clubsEight = new Card(TYPENUM.CLUBS, VALUENUM.EIGHT);
Card heartsNine = new Card(TYPENUM.HEARTS, VALUENUM.NINE);
hand.add(spadesFive);
hand.add(clubsEight);
hand.add(heartsNine);
sut.setHand(hand);
//Assert
assertEquals(3, sut.getHandSize());
//Act
sut.getPlay(currentCard);
//Assert
assertFalse(hand.contains(spadesFive));
}
@Test
public void canBotChooseTheTypeItHasTheMostOfTest() {
//TODO: implement test
}
@Test
public void canBotChooseTheTypeItHasTheMostOfWhenThereIsATieTest() {
//TODO: implement test
}
}

View File

@@ -0,0 +1,4 @@
package mau.mau.players;
public class HumanTest {
}

View File

@@ -0,0 +1,4 @@
package mau.mau.players;
public class PlayerTest {
}

View File

@@ -1,17 +1,11 @@
Bot
Human
Player
~~Card~~
Dealer
Deck
Game
~~Referee~~
Utils
1. Bot
2. Human
3. Player
4. Card
5. CardHandler
6. Dealer
7. ~~Deck~~
8. ~~Game~~
9. ~~Referee~~
10. TurnTable
11. ~~Utils~~