Beispiel #1
0
        public void DeckOfCards_Should_Shuffle()
        {
            //arrange
            int cardCount = 52;
            int suitCount = 4;
            var deck      = new BlackJackDeck();

            var initialOrder = deck.Cards.ToList();

            //act
            deck.ShuffleCards();

            //assert
            deck.Cards.SequenceEqual(initialOrder).ShouldBeEquivalentTo(false);

            deck.Cards.Count.ShouldBeEquivalentTo(cardCount);
            var grouped = deck.Cards.GroupBy(x => x.Suit).OrderBy(x => x.Key).ToDictionary(x => x.Key);

            grouped.Keys.ElementAt(0).ShouldBeEquivalentTo(Suit.Clubs);
            grouped.Keys.ElementAt(1).ShouldBeEquivalentTo(Suit.Diamonds);
            grouped.Keys.ElementAt(2).ShouldBeEquivalentTo(Suit.Hearts);
            grouped.Keys.ElementAt(3).ShouldBeEquivalentTo(Suit.Spades);

            foreach (var item in grouped)
            {
                var values = grouped[item.Key].Select(x => x.Rank).ToList();
                values.Count.Should().Be(cardCount / suitCount);

                foreach (Rank rank in Enum.GetValues(typeof(Rank)))
                {
                    values.Contains(rank).ShouldBeEquivalentTo(true);
                }
            }
            deck.Cards.All(x => x.GameType == GameType.BlackJack).ShouldBeEquivalentTo(true);
        }
Beispiel #2
0
        public void TestBlackjackDeckEmpty()
        {
            //arrange
            var deck          = new BlackJackDeck();
            var expectedCount = 0;

            //act
            deck.Empty();
            var actualCount = deck.Cards.Count();

            //assert
            Assert.AreEqual(expectedCount, actualCount);
        }
Beispiel #3
0
        public void TestBlackjackDeckShuffle()
        {
            //arrange
            var deck = new BlackJackDeck();
            var pickedCardFromDeck = deck.Cards[6];

            //act

            deck.Shuffle();
            var pickedCardFromShuffledDeck = deck.Cards[6];

            //assert
            /// Assert.AreNotSame(pickedCardFromDeck , pickedCardFromShuffledDeck);
        }
Beispiel #4
0
        public void DeckOfCards_Should_Get_Random_Card()
        {
            //arrange
            int cardCount = 52;
            var deck      = new BlackJackDeck();

            //act
            var card = deck.GetRandomCard();

            //assert
            deck.Cards.Count.ShouldBeEquivalentTo(cardCount - 1);
            deck.Cards.Contains(card).ShouldBeEquivalentTo(false);
            deck.Cards.All(x => x.GameType == GameType.BlackJack).ShouldBeEquivalentTo(true);
        }
Beispiel #5
0
 private void SetupPlayers()
 {
     _deck = new BlackJackDeck(5);
     _deck.Shuffle();
     _playerHand          = new BlackJackHand();
     _dealerHand          = new BlackJackHand();
     pbDealer.Image       = null;
     pbPlayer.Image       = null;
     btnDeal.Visible      = true;
     btnDouble.Visible    = false;
     btnPass.Visible      = false;
     btnExtraCard.Visible = false;
     nudBet.Value         = _betValue;
 }
Beispiel #6
0
        public void TestBlackjackDeckDeal()
        {
            //arrange
            var deck                  = new BlackJackDeck();
            var expectedCard          = deck.Cards.Last();
            var expectedNumberOfCards = deck.Cards.Count() - 1;

            //act
            var actualCard          = deck.Deal();
            var actualNumberOfCards = deck.Cards.Count();

            //assert
            Assert.AreEqual(expectedCard, actualCard);
            Assert.AreEqual(expectedNumberOfCards, actualNumberOfCards);
        }
Beispiel #7
0
        public void TestDeckConstructorWithListPassedIn()
        {
            //arrange
            var cardToAdd    = new Mock <ICard>(MockBehavior.Strict);
            var expectedCard = cardToAdd.Object;

            //act
            var deck = new BlackJackDeck(new List <ICard> {
                expectedCard
            });
            var actualCard = deck.Cards.Last();

            //assert
            Assert.AreEqual(expectedCard, actualCard);
        }
Beispiel #8
0
        public void TestBasicDeckConstructor()
        {
            //arrange
            //A new deck should have 52 cards
            var expectedCardsNum   = 52;
            var wrongNumberOfCards = 50;

            //act
            var deck                = new BlackJackDeck();
            var deck2               = new BlackJackDeck();
            var actualCardsNum      = deck.Cards.Count();
            var deck2ActualCardsNum = deck2.Cards.Count();

            //assert
            Assert.AreEqual(expectedCardsNum, actualCardsNum);
            Assert.AreNotEqual(wrongNumberOfCards, deck2ActualCardsNum);
        }
Beispiel #9
0
        public void DeckOfCards_Should_Get_Random_Card_Throw_If_Empty()
        {
            //arrange
            int cardCount = 52;
            var deck      = new BlackJackDeck();

            for (int i = 0; i < cardCount; i++)
            {
                deck.GetRandomCard();
            }

            //act
            Action act = () => deck.GetRandomCard();

            //assert
            act.ShouldThrow <InvalidOperationException>();
        }
Beispiel #10
0
        public void DeckOfCards_Should_Check_Hand_Overflow()
        {
            //arrange
            int cardCount = 52;
            var deck      = new BlackJackDeck();
            var hand      = new BlackJackHand(deck);

            //act
            for (int i = 0; i < cardCount; i++)
            {
                hand.TakeCard();
            }

            //assert
            deck.Cards.Count.ShouldBeEquivalentTo(0);
            hand.Points.ShouldBeEquivalentTo(340);
            hand.IsOverFlow.ShouldBeEquivalentTo(true);
        }
Beispiel #11
0
 public BlackJackHand(BlackJackDeck deck) : base(GameType.BlackJack)
 {
     Deck = deck;
 }