public void When_Collecting_Cards_From_Players_Should_Return_Card_Count_Equal_To_All_Cards_In_Players_Hands()
        {
            var player1Hand1 = new PlayerHand();

            player1Hand1.Cards.AddRange(new List <ICard> {
                new NullCard(), new NullCard()
            });
            var player1Hand2 = new PlayerHand();

            player1Hand2.Cards.AddRange(new List <ICard> {
                new NullCard(), new NullCard()
            });
            var player2Hand = new PlayerHand();

            player2Hand.Cards.AddRange(new List <ICard> {
                new NullCard(), new NullCard()
            });
            var player1 = new Player(500, new Mock <IPlayerStrategy>().Object);

            player1.CurrentHands.Add(player1Hand1);
            player1.CurrentHands.Add(player1Hand2);
            var player2 = new Player(500, new Mock <IPlayerStrategy>().Object);

            player2.CurrentHands.Add(player2Hand);
            var players = new List <IPlayer> {
                player1, player2
            };

            Assert.AreEqual(6, _sut.CollectCardsFrom(players).Count);
        }
Exemple #2
0
        //todo: template method pattern
        public void PlaySingleGame()
        {
            if (RegisteredPlayers.Count == 0)
            {
                throw new InvalidOperationException("Cannot start a game with no players");
            }

            _cardDeck.Shuffle();
            _gameManager.PlaceYourBets(RegisteredPlayers);
            _gameManager.DealInitialCards(_cardDeck, RegisteredPlayers, CurrentCards);
            if (!CurrentCards.IsBlackjack())
            {
                _gameManager.PlayersPlay(_cardDeck, RegisteredPlayers, VisibleCard);
                _gameManager.DealerPlays(_cardDeck, CurrentCards, _dealerStrategy);
            }
            _gameManager.DeterminePlayerHandOutcomes(CurrentCards, RegisteredPlayers);
            _gameManager.PayoutOrCollectBetsFrom(RegisteredPlayers);
            _gameManager.SaveCurrentHandResultsOf(RegisteredPlayers);
            _cardDeck.Cards.AddRange(_gameManager.CollectCardsFrom(RegisteredPlayers));
            _cardDeck.Cards.AddRange(_gameManager.CollectCardsFrom(CurrentCards));
            _gameManager.ClearHandsFrom(RegisteredPlayers);
            _gameManager.DetermineToLeaveGameOrStay(RegisteredPlayers);
        }