Пример #1
0
        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);
                        }
                    }
                }
            }
        }
Пример #2
0
        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());
                }
            }
        }
Пример #3
0
        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());
                    }
                }
            }
        }
Пример #4
0
        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);
                        }
                    }
                }
            }
        }