public void ValueOfMultipleAcesTest() { // One ace is either 1 or 11. BlackjackRules.ValueOf(new Card[] { new Card(CardFace.Ace, CardSuit.Clubs) }, out var value, out var soft); Assert.Equal(1, value); Assert.Equal(11, soft); // Two aces is 2 or 12. BlackjackRules.ValueOf(new Card[] { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs) }, out value, out soft); Assert.Equal(2, value); Assert.Equal(12, soft); // Three aces is 3 or 13. BlackjackRules.ValueOf(new Card[] { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs) }, out value, out soft); Assert.Equal(3, value); Assert.Equal(13, soft); }
public void ValueOfSingleCardTest() { for (var actualValue = 0; actualValue < (byte)CardFace.King; actualValue++) { var face = (CardFace)actualValue; BlackjackRules.ValueOf(new Card(face, CardSuit.Clubs), out var value, out var soft); if (face == CardFace.Ace) { // Ace can be 1 or 11. Assert.Equal(11, soft); Assert.Equal(1, value); } else if (actualValue >= 10) { // 10, jack, queen and king are always 10. Assert.Equal(10, value); Assert.Equal(10, soft); } else { // Other cards are valued based on their face. Assert.Equal(actualValue, value); Assert.Equal(actualValue, soft); } } }
public void ShouldStayTest() { Assert.True(BlackjackRules.ShouldStay(new Card[] { new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Seven, CardSuit.Clubs) })); Assert.False(BlackjackRules.ShouldStay(new Card[] { new Card(CardFace.King, CardSuit.Clubs), new Card(CardFace.Six, CardSuit.Clubs) })); }
public void CanSplitTest() { Assert.True(BlackjackRules.CanSplit(new Card[] { new Card(CardFace.Six, CardSuit.Clubs), new Card(CardFace.Six, CardSuit.Hearts) })); Assert.False(BlackjackRules.CanSplit(new Card[] { new Card(CardFace.Six, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs) })); }
private void GetAllTotalScoresRecursivelyImpl(int index, int totalScore) { if (index > m_CardsInHand.Count - 1) { m_TotalScores.Add(totalScore); return; } int score = BlackjackRules.GetScore(m_CardsInHand[index].cardType); int nextIndex = index + 1; if (score == 11) { GetAllTotalScoresRecursivelyImpl(nextIndex, totalScore + 11); GetAllTotalScoresRecursivelyImpl(nextIndex, totalScore + 1); } else { GetAllTotalScoresRecursivelyImpl(nextIndex, totalScore + score); } }
public void IsBlackjackTest() { // 21 should be blackjack. Assert.True(BlackjackRules.IsBlackjack(new[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs), })); // Below 21 or above it should not be a blackjack. Assert.False(BlackjackRules.IsBlackjack(new[] { new Card(CardFace.Nine, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs), })); Assert.False(BlackjackRules.IsBlackjack(new[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs), })); }
public void ValueOfHandTest() { // Arrange. var deckOf18 = new Card[] { new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Seven, CardSuit.Clubs) }; var deckOf30 = new Card[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Nine, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs), new Card(CardFace.Jack, CardSuit.Clubs) }; var deckOf21 = new Card[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs) }; // Act. BlackjackRules.ValueOf(deckOf18, out var valueOf18, out var softOf18); BlackjackRules.ValueOf(deckOf30, out var valueOf30, out var softOf30); BlackjackRules.ValueOf(deckOf21, out var valueOf21, out var softOf21); // Assert. Assert.Equal(8, valueOf18); Assert.Equal(18, softOf18); Assert.Equal(30, valueOf30); Assert.Equal(30, softOf30); Assert.Equal(11, valueOf21); Assert.Equal(21, softOf21); }
public void IsBustedTest() { // Values above 21 should be seen as bust. Assert.True(BlackjackRules.IsBusted(new[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ten, CardSuit.Clubs) })); // Values equal or below 21 should not be seen as bust. Assert.False(BlackjackRules.IsBusted(new[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Ace, CardSuit.Clubs), })); Assert.False(BlackjackRules.IsBusted(new[] { new Card(CardFace.Ten, CardSuit.Clubs), new Card(CardFace.Five, CardSuit.Clubs), })); }