public void return_score_of_3_card_hand_with_no_aces() { foreach (Rank rank1 in Enum.GetValues(typeof(Rank))) { mockCard1.Setup(c => c.rank).Returns(rank1); foreach (Rank rank2 in Enum.GetValues(typeof(Rank))) { mockCard2.Setup(c => c.rank).Returns(rank2); foreach (Rank rank3 in Enum.GetValues(typeof(Rank))) { mockCard3.Setup(c => c.rank).Returns(rank3); IHand hand = new Hand(); ICard card1 = mockCard1.Object; ICard card2 = mockCard2.Object; ICard card3 = mockCard3.Object; hand.AddCard(card1); hand.AddCard(card2); hand.AddCard(card3); int scoreCard1 = BlackjackGame.GetCardValue(card1); int scoreCard2 = BlackjackGame.GetCardValue(card2); int scoreCard3 = BlackjackGame.GetCardValue(card3); int score = hand.Score(true); int expectedScore = scoreCard1 + scoreCard2 + scoreCard3; if (hand.AceCount() == 0) { Assert.IsTrue(expectedScore == score); } } } } }
public void return_score_of_hand_when_blackjack() { foreach (Rank rank1 in Enum.GetValues(typeof(Rank))) { if (rank1 > Rank.Nine) { mockCard1.Setup(c => c.rank).Returns(rank1); mockCard2.Setup(c => c.rank).Returns(Rank.Ace); IHand hand = new Hand(); ICard card1 = mockCard1.Object; ICard card2 = mockCard2.Object; hand.AddCard(card1); hand.AddCard(card2); int score = hand.Score(true); Assert.AreEqual(1, hand.AceCount()); Assert.AreEqual(21, score); Assert.IsTrue(hand.IsBlackjack()); } } }
public void return_number_of_aces_in_hand() { foreach (Rank rank1 in Enum.GetValues(typeof(Rank))) { mockCard1.Setup(c => c.rank).Returns(rank1); foreach (Rank rank2 in Enum.GetValues(typeof(Rank))) { mockCard2.Setup(c => c.rank).Returns(rank2); foreach (Rank rank3 in Enum.GetValues(typeof(Rank))) { mockCard3.Setup(c => c.rank).Returns(rank3); IHand hand = new Hand(); ICard card1 = mockCard1.Object; ICard card2 = mockCard2.Object; ICard card3 = mockCard3.Object; int expectedAceCount = 0; hand.AddCard(card1); hand.AddCard(card2); hand.AddCard(card3); if (card1.rank == Rank.Ace) { expectedAceCount++; } if (card2.rank == Rank.Ace) { expectedAceCount++; } if (card3.rank == Rank.Ace) { expectedAceCount++; } Assert.AreEqual(expectedAceCount, hand.AceCount()); } } } }
public void return_score_of_3_card_hand_with_just_one_ace() { // start with an Ace ICard card3 = mockCard3.Object; mockCard3.Setup(c => c.rank).Returns(Rank.Ace); foreach (Rank rank1 in Enum.GetValues(typeof(Rank))) { if (rank1 != Rank.Ace) { mockCard1.Setup(c => c.rank).Returns(rank1); foreach (Rank rank2 in Enum.GetValues(typeof(Rank))) { if (rank2 != Rank.Ace) { IHand hand = new Hand(); ICard card1 = mockCard1.Object; ICard card2 = mockCard2.Object; hand.AddCard(card1); hand.AddCard(card2); hand.AddCard(card3); mockCard2.Setup(c => c.rank).Returns(rank2); int scoreCard1 = BlackjackGame.GetCardValue(card1); int scoreCard2 = BlackjackGame.GetCardValue(card2); int score = hand.Score(true); int expectedScore = scoreCard1 + scoreCard2 + 1; Assert.AreEqual(1, hand.AceCount()); Assert.IsTrue(expectedScore == score || expectedScore + 10 == score); } } } } }