Пример #1
0
        public void WhenInFinalStateItIsPossibleToAnnounce20Or40()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            Assert.IsTrue(roundState.CanAnnounce20Or40);
        }
Пример #2
0
        public void WhenInFinalStateItIsNotPossibleToChangeTheTrump()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            Assert.IsFalse(roundState.CanChangeTrump);
        }
Пример #3
0
        public void WhenInFinalStateRulesShouldBeObserved()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            Assert.IsTrue(roundState.ShouldObserveRules);
        }
Пример #4
0
        public void WhenInFinalStateNoMoreCardsShouldBeDrawn()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            Assert.IsFalse(roundState.ShouldDrawCard);
        }
Пример #5
0
        public void WhenInFinalStateItIsNotPossibleToCloseTheGame()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            Assert.False(roundState.CanClose);
        }
Пример #6
0
        public void PlayHandWhenInFinalStateShouldNotChangeGameState()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            roundState.PlayHand(0);
            haveStateMock.Verify(x => x.SetState(It.IsAny <BaseRoundState>()), Times.Never);
        }
Пример #7
0
        public void SetStateShouldChangeTheState()
        {
            var stateManager = new StateManager();
            var state        = new FinalRoundState(stateManager);

            stateManager.SetState(state);
            Assert.Equal(state, stateManager.State);
        }
Пример #8
0
        public void CanChangeTrumpShouldReturnFalseWhenThePlayerIsFirstButTheStateDoesNotPermitChanging()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            var canChangeTrump = ChangeTrumpActionValidator.CanChangeTrump(true, roundState, TrumpThatCanBeChanged, PlayerCards);

            Assert.False(canChangeTrump);
        }
        public void CanCloseGameShouldReturnFalseWhenThePlayerIsNotFirstAndTheStateDoesNotPermitClosing()
        {
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            var canCloseGame = CloseGameActionValidator.CanCloseGame(false, roundState);

            Assert.IsFalse(canCloseGame);
        }
Пример #10
0
        public void CloseShouldNotChangeGameState()
        {
            // It is not allowed to close the game in this state
            var haveStateMock = new Mock <IStateManager>();
            var roundState    = new FinalRoundState(haveStateMock.Object);

            roundState.Close();
            haveStateMock.Verify(x => x.SetState(It.IsAny <BaseRoundState>()), Times.Never);
        }
        public void PlayingCardFromHand_ShouldBeValid()
        {
            var cards = new List <Card>()
            {
                new Card(CardSuit.Club, CardType.Ace)
            };
            var action  = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Club, CardType.Ace), Announce.None);
            var state   = new FinalRoundState();
            var context = new PlayerTurnContext(state, new Card(CardSuit.Club, CardType.Jack), 0);

            Assert.IsTrue(validator.IsValid(action, context, cards));
        }
Пример #12
0
        public void ConstructorShouldSetProperties()
        {
            var       haveStateMock   = new Mock <IStateManager>();
            var       state           = new FinalRoundState(haveStateMock.Object);
            var       trumpCard       = new Card(CardSuit.Heart, CardType.Ten);
            const int CardsLeftInDeck = 10;

            var playerTurnContext = new PlayerTurnContext(state, trumpCard, CardsLeftInDeck, 0, 0);

            Assert.AreEqual(state, playerTurnContext.State);
            Assert.AreEqual(trumpCard, playerTurnContext.TrumpCard);
            Assert.AreEqual(CardsLeftInDeck, playerTurnContext.CardsLeftInDeck);
        }
        public void TestInvalidPlayedCard()
        {
            FinalRoundState endState = new FinalRoundState();

            PlayerTurnContext context = new PlayerTurnContext(endState, new Card(CardSuit.Spade, CardType.Jack), 0);

            context.FirstPlayedCard = new Card(CardSuit.Club, CardType.Ten);

            PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Heart, CardType.Queen), 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.King),
                new Card(CardSuit.Spade, CardType.Nine),
                new Card(CardSuit.Diamond, CardType.Nine)
            };

            Assert.IsFalse(validator.IsValid(action, context, cards));
        }
        public void TestOtherCardWhenNoHaveTrump()
        {
            FinalRoundState finalState = new FinalRoundState();

            PlayerTurnContext context = new PlayerTurnContext(finalState, new Card(CardSuit.Diamond, CardType.Jack), 0);

            context.FirstPlayedCard = new Card(CardSuit.Club, CardType.Ten);

            // Have a club, but played Spade. False. Must play Club
            PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Spade, CardType.Queen), Announce.Twenty);
            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.King),
                new Card(CardSuit.Spade, CardType.Nine),
                new Card(CardSuit.Spade, CardType.Nine)
            };

            Assert.IsFalse(validator.IsValid(action, context, cards));
        }
        public void TestWithIncorrectTrumpCard()
        {
            FinalRoundState finalState = new FinalRoundState();

            PlayerTurnContext context = new PlayerTurnContext(finalState, new Card(CardSuit.Diamond, CardType.Jack), 0);

            context.FirstPlayedCard = new Card(CardSuit.Club, CardType.Ten);

            // You have a needed suit card but played trump. False -> Must play Club
            PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Diamond, 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.King),
                new Card(CardSuit.Spade, CardType.Nine),
                new Card(CardSuit.Diamond, CardType.Nine)
            };

            Assert.IsFalse(validator.IsValid(action, context, cards));
        }
        public void TestInvalidMoveCardWithLowerValueWhenHaveBigger()
        {
            FinalRoundState finalState = new FinalRoundState();

            PlayerTurnContext context = new PlayerTurnContext(finalState, new Card(CardSuit.Diamond, CardType.Jack), 0);

            context.FirstPlayedCard = new Card(CardSuit.Club, CardType.King);

            // You must play card with bigger value.
            PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, 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 TestValidMoveWithTrumpCard()
        {
            // Using this state to enter in context.State.ShouldObserveRules.
            FinalRoundState endRound = new FinalRoundState();

            PlayerTurnContext context = new PlayerTurnContext(endRound, new Card(CardSuit.Spade, CardType.Jack), 0);

            // a card is played. Just to avoid context.AmITheFirstPlayer;
            context.FirstPlayedCard = new Card(CardSuit.Club, CardType.Nine);

            PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Spade, 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.Diamond, CardType.King),
                new Card(CardSuit.Spade, CardType.Nine),
                new Card(CardSuit.Diamond, CardType.Nine)
            };

            Assert.IsTrue(validator.IsValid(action, context, cards));
        }