Esempio n. 1
0
        public void AfterFirstHandCardShouldBeDrawn()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new StartRoundState(haveStateMock.Object);

            Assert.IsTrue(roundState.ShouldDrawCard);
        }
Esempio n. 2
0
        public void OnFirstHandRulesShouldNotBeObserved()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new StartRoundState(haveStateMock.Object);

            Assert.IsFalse(roundState.ShouldObserveRules);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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));
        }
Esempio n. 11
0
        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);
        }