public void AfterFirstHandCardShouldBeDrawn() { var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); Assert.IsTrue(roundState.ShouldDrawCard); }
public void OnFirstHandRulesShouldNotBeObserved() { var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); Assert.IsFalse(roundState.ShouldObserveRules); }
public void PlayHandShouldChangeTheStateToMoreThanTwoCardsLeftRoundState() { var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); roundState.PlayHand(8); haveStateMock.Verify(x => x.SetState(It.IsAny <MoreThanTwoCardsLeftRoundState>()), Times.Once); }
public void CanChangeTrumpShouldReturnFalseWhenThePlayerIsNotFirstAndTheStateDoesNotPermitChanging() { var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); var canChangeTrump = ChangeTrumpActionValidator.CanChangeTrump(false, roundState, TrumpThatCanBeChanged, PlayerCards); Assert.False(canChangeTrump); }
public void CloseShouldNotChangeGameState() { // It is not allowed to close the game in this state var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); roundState.Close(); haveStateMock.Verify(x => x.SetState(It.IsAny <BaseRoundState>()), Times.Never); }
public void OnFirstHandCannotChangeTrump() { // https://github.com/NikolayIT/SantaseGameEngine/blob/master/Documentation/Rules.md#nine-of-trumps // "... provided that he has already won at least one trick." var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); Assert.IsFalse(roundState.CanChangeTrump); }
public void GameCannotBeClosedOnFirstHand() { // https://github.com/NikolayIT/SantaseGameEngine/blob/master/Documentation/Rules.md#closing // "It is not possible to close the game before any cards are played." var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); Assert.IsFalse(roundState.CanClose); }
public void OnFirstHandCannotAnnounce20Or40() { // https://github.com/NikolayIT/SantaseGameEngine/blob/master/Documentation/Rules.md#marriages // "The only exception is that during the first hand no marriage can be announced." var haveStateMock = new Mock <IStateManager>(); var roundState = new StartRoundState(haveStateMock.Object); Assert.IsFalse(roundState.CanAnnounce20Or40); }
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 TestWrongChangeTrumpInTheBegining() { StartRoundState begin = new StartRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerTurnContext context = new PlayerTurnContext(begin, new Card(CardSuit.Diamond, CardType.Jack), 12); PlayerAction action = new PlayerAction(PlayerActionType.ChangeTrump, new Card(CardSuit.Club, CardType.Nine), Announce.None); IList <Card> cards = new List <Card>() { new Card(CardSuit.Spade, CardType.Queen), new Card(CardSuit.Spade, CardType.King), new Card(CardSuit.Heart, CardType.Queen), new Card(CardSuit.Club, CardType.Ace), new Card(CardSuit.Club, CardType.Nine), new Card(CardSuit.Diamond, CardType.Nine) }; Assert.IsFalse(validator.IsValid(action, context, cards)); }
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); }