public void CloneShouldReturnObjectOfTypePlayerTurnContext() { var haveStateMock = new Mock<IStateManager>(); var state = new TwoCardsLeftRoundState(haveStateMock.Object); var playerTurnContext = new PlayerTurnContext(state, new Card(CardSuit.Diamond, CardType.Ace), 2, 0, 0); var clonedPlayerTurnContext = playerTurnContext.DeepClone(); Assert.IsInstanceOf<PlayerTurnContext>(clonedPlayerTurnContext); }
public void CloneShouldReturnDifferentReference() { var haveStateMock = new Mock<IStateManager>(); var state = new StartRoundState(haveStateMock.Object); var playerTurnContext = new PlayerTurnContext(state, new Card(CardSuit.Heart, CardType.Queen), 12, 0, 0); var clonedPlayerTurnContext = playerTurnContext.DeepClone(); Assert.AreNotSame(playerTurnContext, clonedPlayerTurnContext); }
public void CloneShouldReturnObjectWithTheSameProperties() { var haveStateMock = new Mock<IStateManager>(); var state = new StartRoundState(haveStateMock.Object); var playerTurnContext = new PlayerTurnContext(state, new Card(CardSuit.Club, CardType.Ten), 12, 0, 0) { FirstPlayedCard = new Card(CardSuit.Spade, CardType.King), FirstPlayerAnnounce = Announce.Forty, SecondPlayedCard = new Card(CardSuit.Heart, CardType.Nine) }; var clonedPlayerTurnContext = playerTurnContext.DeepClone(); Assert.IsNotNull(clonedPlayerTurnContext); Assert.AreSame(playerTurnContext.State, clonedPlayerTurnContext.State); Assert.AreEqual(playerTurnContext.CardsLeftInDeck, clonedPlayerTurnContext.CardsLeftInDeck); Assert.AreEqual(playerTurnContext.FirstPlayedCard, clonedPlayerTurnContext.FirstPlayedCard); Assert.AreEqual(playerTurnContext.FirstPlayerAnnounce, clonedPlayerTurnContext.FirstPlayerAnnounce); Assert.AreEqual(playerTurnContext.SecondPlayedCard, clonedPlayerTurnContext.SecondPlayedCard); Assert.AreEqual(playerTurnContext.TrumpCard, clonedPlayerTurnContext.TrumpCard); }
private static PlayerAction GetPlayerAction(RoundPlayerInfo playerInfo, PlayerTurnContext context) { var action = playerInfo.Player.GetTurn(context.DeepClone()); var isActionValid = PlayerActionValidator.Instance.IsValid(action, context, playerInfo.Cards); if (!isActionValid) { throw new InternalGameException($"Invalid action played from {playerInfo.Player.Name}"); } return action; }
public override PlayerAction GetTurn(PlayerTurnContext context) { this.GetTurnCalledCount++; this.GetTurnContextObject = context.DeepClone(); if (this.actionToPlay == PlayerActionType.ChangeTrump) { this.actionToPlay = PlayerActionType.PlayCard; return this.ChangeTrump(context.TrumpCard); } if (this.actionToPlay == PlayerActionType.CloseGame) { this.actionToPlay = PlayerActionType.PlayCard; return PlayerAction.CloseGame(); } var possibleCardsToPlay = this.PlayerActionValidator.GetPossibleCardsToPlay(context, this.Cards); return this.PlayCard(possibleCardsToPlay.First()); }
public override void EndTurn(PlayerTurnContext context) { this.EndTurnCalledCount++; this.EndTurnContextObject = context.DeepClone(); base.EndTurn(context); }