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)); }
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); }
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); }
public TurnState(IDrawableCardState turnDeck, IDrawablePlayerState drawablePlayerState = null, IDiscardablePlayerState discardablePlayer = null, ITargetablePlayerState targetPlayer = null) { TurnDeck = turnDeck; DrawablePlayerState = drawablePlayerState; DiscardablePlayer = discardablePlayer; TargetPlayer = targetPlayer; }