BlackJack_3011175/src/test/java/BlackJackSpielTest.java

88 lines
3.3 KiB
Java

import de.deversmann.BlackJackSpiel;
import de.deversmann.Karte;
import de.deversmann.Kartenstapel;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.when;
class BlackJackSpielTest {
@Mock
private Kartenstapel mockStapel;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
void testGetHandGibtKorrekteHandZurueck() {
// Konfigurieren des Mocks, um spezifische Karten zurückzugeben
when(mockStapel.zieheKarte())
.thenReturn(new Karte("Herz", "10"))
.thenReturn(new Karte("Karo", "Ass"));
// Initialisieren des Spiels mit dem gemockten Kartenstapel
BlackJackSpiel spiel = new BlackJackSpiel(mockStapel);
// Überprüfen, ob die Hand des Spielers die erwarteten Karten enthält
assertEquals(2, spiel.getHand().size());
assertEquals("Herz", spiel.getHand().get(0).farbe());
assertEquals("10", spiel.getHand().get(0).wert());
assertEquals("Karo", spiel.getHand().get(1).farbe());
assertEquals("Ass", spiel.getHand().get(1).wert());
}
@Test
void testGetHandGibtKorrekteHandMit3KartenZurueck() {
// Konfigurieren des Mocks, um spezifische Karten zurückzugeben
when(mockStapel.zieheKarte())
.thenReturn(new Karte("Herz", "9"))
.thenReturn(new Karte("Karo", "Ass"))
.thenReturn(new Karte("Pik", "Ass"));
// Initialisieren des Spiels mit dem gemockten Kartenstapel
BlackJackSpiel spiel = new BlackJackSpiel(mockStapel);
spiel.zieheWeitereKarte();
// Überprüfen, ob die Hand des Spielers die erwarteten Karten enthält
assertEquals(3, spiel.getHand().size());
assertEquals("Herz", spiel.getHand().get(0).farbe());
assertEquals("9", spiel.getHand().get(0).wert());
assertEquals("Karo", spiel.getHand().get(1).farbe());
assertEquals("Ass", spiel.getHand().get(1).wert());
assertEquals("Pik", spiel.getHand().get(2).farbe());
assertEquals("Ass", spiel.getHand().get(2).wert());
assertEquals(21, spiel.getPunkte());
}
@Test
void testBlackjackMitZweiKarten() {
when(mockStapel.zieheKarte()).thenReturn(new Karte("Herz", "Ass"), new Karte("Pik", "König"));
BlackJackSpiel spiel = new BlackJackSpiel(mockStapel);
assertEquals(21, spiel.getPunkte());
}
@Test
void testUeber21MitMehrerenKarten() {
when(mockStapel.zieheKarte())
.thenReturn(new Karte("Herz", "10"), new Karte("Pik", "8"), new Karte("Karo", "4"));
BlackJackSpiel spiel = new BlackJackSpiel(mockStapel);
spiel.zieheWeitereKarte(); // Zieht die dritte Karte
assertTrue(spiel.getPunkte() > 21);
}
@Test
void testAssWertAnpassung() {
when(mockStapel.zieheKarte())
.thenReturn(new Karte("Herz", "Ass"), new Karte("Pik", "9"), new Karte("Karo", "Ass"));
BlackJackSpiel spiel = new BlackJackSpiel(mockStapel);
spiel.zieheWeitereKarte(); // Zieht die dritte Karte
assertEquals(21, spiel.getPunkte());
}
}