Example #1
0
        }                            // To proper test this should be injected too

        public Simulator(int numberOfPlayers, IWinnerDecider winnerDecider, ISnapDecider snapDecider)
        {
            if (numberOfPlayers < 2 || numberOfPlayers > 52)
            {
                throw new ArgumentOutOfRangeException(nameof(numberOfPlayers), $"The simulator expects a number of players between 2 and 52, {numberOfPlayers} was given instead.");
            }

            _numberOfPlayers = numberOfPlayers;
            _winnerDecider   = winnerDecider;
            _snapDecider     = snapDecider;

            CentralPile = new CardSet();
            PlayersById = new Dictionary <int, Player>();
            for (int playerIndex = 0; playerIndex < _numberOfPlayers; playerIndex++)
            {
                var player = new Player();
                PlayersById.Add(player.Id, player);
            }

            CardDeck = new CardSet();
            CardDeck.InitializeWithFullDeck();
            CardDeck.Shuffle();

            _numberOfCardsUsedInGame = Utils.Utils.GetNumberOfCardsToUseInGame(_numberOfPlayers);
        }
Example #2
0
        public void When_InitializeWithFullDeck_TheCardDeckHas52UniqueCards()
        {
            var cardDeck = new CardSet();

            cardDeck.InitializeWithFullDeck();
            var cards = cardDeck.Cards.Select(c => c.ToString()).Distinct();

            Assert.Equal(52, cards.Count());
        }
Example #3
0
        public void When_Shuffled_KeepsTheUniqueCardCount()
        {
            var cardDeck = new CardSet();

            cardDeck.InitializeWithFullDeck();
            cardDeck.Shuffle();
            var cards = cardDeck.Cards.Select(c => c.ToString()).Distinct();

            Assert.Equal(52, cards.Count());
        }