public void StartRound_DrawDeckHasOneCard()
        {
            // Arrange
            var player1 = new PlayerState(Guid.Empty, null, null, outOfRound: true);
            IEnumerable <IRoundPlayerState>    players         = new[] { player1, new PlayerState(Guid.Empty, null, null) };
            IShufflableCardState               shufflableCard  = new CardState(0, 0);
            IEnumerable <IShufflableCardState> shuffleableDeck = new[] { shufflableCard };
            IInitialRoundState initialRound = new RoundState(players, null, null, null, shufflableDeck: shuffleableDeck);

            var remainingPlayers = new List <IRoundPlayerState>();

            _roundFactory
            .Setup(rf => rf.CreateRemainingPlayers())
            .Returns(remainingPlayers);
            var removedFromRound = new List <ISetAsideCardState>();

            _roundFactory
            .Setup(rf => rf.CreateRemovedFromRound())
            .Returns(removedFromRound);

            IDrawableCardState drawableCardState = new CardState(0, 0);
            const int          cardSetAsideCount = 1;
            var expected                = new IDrawableCardState[] { new CardState(99, 108) };
            int drawableCardCount       = players.Count() + cardSetAsideCount;
            IDrawableCardState turnDeck = new CardState(88, 112);
            var drawableDeck            = expected.Concat(new[] { turnDeck }).Concat(Enumerable.Repeat(drawableCardState, drawableCardCount));

            _deckShuffleService
            .Setup(dss => dss.Shuffle(shuffleableDeck))
            .Returns(drawableDeck);

            IDiscardableCardState discardableCardState = new CardState(0, 0);

            _cardDrawService
            .Setup(cds => cds.Draw(drawableCardState))
            .Returns(discardableCardState);
            ISetAsideCardState setAsideCardState = new CardState(0, 0);

            _cardDrawService
            .Setup(cds => cds.SetAside(drawableCardState))
            .Returns(setAsideCardState);

            _deckRemovalService
            .Setup(drs => drs.GetCardsToRemoveCount(players.Count()))
            .Returns(cardSetAsideCount);

            IDrawableTurnState drawableTurnState = new TurnState(turnDeck, player1);

            _turnStateFactory
            .Setup(tsf => tsf.CreateTurn(player1, turnDeck))
            .Returns(drawableTurnState);

            // Act
            RoundStateFactory service = CreateService();
            var round  = service.StartRound(initialRound);
            var actual = round.DrawDeck;

            // Assert
            Assert.IsTrue(expected.SequenceEqual(actual));
        }
Пример #2
0
        public IDrawableTurnState CreateTurn(IRoundPlayerState playerState, IDrawableCardState turnDeck)
        {
            var turnPlayer = _playerFactory.CreateTurnPlayer(playerState);
            IDiscardablePlayerState discardablePlayer = null;
            ITargetablePlayerState  targetPlayer      = null;
            var turnState = new TurnState(turnDeck, turnPlayer, discardablePlayer, targetPlayer);

            return(turnState);
        }
Пример #3
0
        public IDiscardableTurnState GetDiscardable(IDrawablePlayerState drawablePlayerState)
        {
            var discardablePlayer = _playerFactory.GetDiscardable(drawablePlayerState);
            IDrawablePlayerState   unusedPlayerState = null;
            IDrawableCardState     turnDeck          = null;
            ITargetablePlayerState targetPlayer      = null;
            var turnState = new TurnState(turnDeck, unusedPlayerState, discardablePlayer, targetPlayer);

            return(turnState);
        }
Пример #4
0
 public TurnState(IDrawableCardState turnDeck,
                  IDrawablePlayerState drawablePlayerState  = null,
                  IDiscardablePlayerState discardablePlayer = null,
                  ITargetablePlayerState targetPlayer       = null)
 {
     TurnDeck            = turnDeck;
     DrawablePlayerState = drawablePlayerState;
     DiscardablePlayer   = discardablePlayer;
     TargetPlayer        = targetPlayer;
 }