public void InTheMiddleOfTheGameCardShouldBeDrawn() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); Assert.IsTrue(roundState.ShouldDrawCard); }
public void InTheMiddleOfTheGameRulesShouldNotBeObserved() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); Assert.IsFalse(roundState.ShouldObserveRules); }
public void InTheMiddleOfTheGameItIsPossibleToAnnounce20Or40() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); Assert.True(roundState.CanAnnounce20Or40); }
public void InTheMiddleOfTheGameItIsPossibleToChangeTheTrump() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); Assert.IsTrue(roundState.CanChangeTrump); }
public void PlayHandWithMoreThan2CardsLeftShouldNotChangeTheState() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); roundState.PlayHand(4); haveStateMock.Verify(x => x.SetState(It.IsAny <BaseRoundState>()), Times.Never); }
public void PlayHandWith2CardsLeftShouldChangeTheStateToTwoCardsLeftRoundState() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); roundState.PlayHand(2); haveStateMock.Verify(x => x.SetState(It.IsAny <TwoCardsLeftRoundState>()), Times.Once); }
public void CloseShouldMoveTheGameToTheFinalRoundState() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); roundState.Close(); haveStateMock.Verify(x => x.SetState(It.IsAny <FinalRoundState>()), Times.Once); }
public void CanChangeTrumpShouldReturnFalseWhenThePlayerIsNotFirstButTheStatePermitsChanging() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); var canChangeTrump = ChangeTrumpActionValidator.CanChangeTrump(false, roundState, TrumpThatCanBeChanged, PlayerCards); Assert.False(canChangeTrump); }
public void Announce_OutOfTurn_ShouldThrow() { var card = new Card(CardSuit.Club, CardType.Queen); var action = PlayerAction.PlayCard(card); var state = new MoreThanTwoCardsLeftRoundState(this.StateManager); this.StateManager.SetState(state); var context = new PlayerTurnContext(state, this.Deck.TrumpCard, this.Deck.CardsLeft, 0, 0); }
public void CanChangeTrumpShouldReturnTrueWhenThePlayerIsFirstTheStatePermitsChangingAndNineOfTrumpsIsPresent() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); var canChangeTrump = ChangeTrumpActionValidator.CanChangeTrump(true, roundState, TrumpThatCanBeChanged, PlayerCards); Assert.True(canChangeTrump); }
public void CanCloseGameShouldReturnTrueWhenThePlayerIsFirsAndTheStatePermitsClosing() { var haveStateMock = new Mock <IStateManager>(); var roundState = new MoreThanTwoCardsLeftRoundState(haveStateMock.Object); var canCloseGame = CloseGameActionValidator.CanCloseGame(true, roundState); Assert.IsTrue(canCloseGame); }
public void ChangeTrump_WithoutNineOfTrump_ShouldThrow() { var trump = new Card(CardSuit.Diamond, CardType.Queen); this.Deck.ChangeTrumpCard(trump); var card = new Card(CardSuit.Club, CardType.Jack); var state = new MoreThanTwoCardsLeftRoundState(this.StateManager); this.StateManager.SetState(state); var action = PlayerAction.ChangeTrump(); var context = new PlayerTurnContext(state, this.Deck.TrumpCard, this.Deck.CardsLeft, 0, 0); }
public void PlayerChangesTrumpWithQueen_ShouldBeInvalid() { var cards = new List <Card>() { new Card(CardSuit.Club, CardType.Queen) }; var action = new PlayerAction(PlayerActionType.ChangeTrump, new Card(CardSuit.Club, CardType.Queen), Announce.None); var round = new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer); var state = new MoreThanTwoCardsLeftRoundState(round); var context = new PlayerTurnContext(state, new Card(CardSuit.Club, CardType.Jack), 0); Assert.IsFalse(validator.IsValid(action, context, cards)); }
public void FourtyAnnounceWithoutQueenOrKing_ShouldBeInvalid() { var cards = new List <Card>() { new Card(CardSuit.Club, CardType.Queen), new Card(CardSuit.Club, CardType.King), new Card(CardSuit.Heart, CardType.Jack) }; var announce = Announce.Fourty; var action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Heart, CardType.Jack), announce); var round = new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer); var state = new MoreThanTwoCardsLeftRoundState(round); var context = new PlayerTurnContext(state, new Card(CardSuit.Club, CardType.Jack), 0); validator.IsValid(action, context, cards); Assert.AreNotEqual(Announce.Fourty, action.Announce); }
public void TestPlayNonExistentCard() { MoreThanTwoCardsLeftRoundState middleState = new MoreThanTwoCardsLeftRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Diamond, CardType.Ace), Announce.None); PlayerTurnContext context = new PlayerTurnContext(middleState, new Card(CardSuit.Spade, CardType.Jack), 6); IList <Card> cards = new List <Card>() { new Card(CardSuit.Spade, CardType.Ten), new Card(CardSuit.Heart, CardType.King), new Card(CardSuit.Spade, CardType.King), new Card(CardSuit.Club, CardType.King), new Card(CardSuit.Club, CardType.Nine), new Card(CardSuit.Diamond, CardType.Nine) }; Assert.IsFalse(validator.IsValid(action, context, cards)); }
public void TestWrongChangeTrumpIfYouHaveNotNeededCard() { MoreThanTwoCardsLeftRoundState midle = new MoreThanTwoCardsLeftRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerTurnContext context = new PlayerTurnContext(midle, new Card(CardSuit.Diamond, CardType.Jack), 6); 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.Ace) }; Assert.IsFalse(validator.IsValid(action, context, cards)); }
public void TestAnnounceOnFirstHand() { MoreThanTwoCardsLeftRoundState stateOfMiddle = new MoreThanTwoCardsLeftRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Heart, CardType.King), Announce.Twenty); PlayerTurnContext context = new PlayerTurnContext(stateOfMiddle, new Card(CardSuit.Spade, CardType.Jack), 6); IList <Card> cards = new List <Card>() { new Card(CardSuit.Spade, CardType.Queen), new Card(CardSuit.Heart, CardType.King), new Card(CardSuit.Heart, CardType.Queen), new Card(CardSuit.Club, CardType.King), new Card(CardSuit.Club, CardType.Nine), new Card(CardSuit.Diamond, CardType.Nine) }; validator.IsValid(action, context, cards); Assert.AreEqual(Announce.None, action.Announce); }
public void InitializeData() { firstPlayer = new ConsolePlayer(5, 10); secondPlayer = new ConsolePlayer(10, 10); gameRound = new GameRound(firstPlayer, secondPlayer, PlayerPosition.SecondPlayer); roundState = new MoreThanTwoCardsLeftRoundState(gameRound); testCard = new Card(CardSuit.Diamond, CardType.Jack); trumpCard = new Card(CardSuit.Club, CardType.Ace); action = new PlayerAction(PlayerActionType.PlayCard, testCard, Announce.Twenty); context = new PlayerTurnContext(roundState, trumpCard, 20); playerCards = new List <Card>(); playerCards.Add(testCard); playerCards.Add(new Card(CardSuit.Heart, CardType.Jack)); playerCards.Add(new Card(CardSuit.Spade, CardType.King)); playerCards.Add(new Card(CardSuit.Spade, CardType.Queen)); playerCards.Add(new Card(CardSuit.Club, CardType.Nine)); playerCards.Add(new Card(CardSuit.Spade, CardType.Ten)); }
public void TestInvalidClosingGameInMiddleRound() { MoreThanTwoCardsLeftRoundState middle = new MoreThanTwoCardsLeftRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerTurnContext context = new PlayerTurnContext(middle, new Card(CardSuit.Diamond, CardType.Jack), 6); context.FirstPlayedCard = new Card(CardSuit.Club, CardType.King); // Cannot Close game because it's already played a card. PlayerAction action = new PlayerAction(PlayerActionType.CloseGame, 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 TestAnnounceTwenty() { MoreThanTwoCardsLeftRoundState middle = new MoreThanTwoCardsLeftRoundState(new GameRound(new Player(), new Player(), PlayerPosition.FirstPlayer)); PlayerAction action = new PlayerAction(PlayerActionType.PlayCard, new Card(CardSuit.Heart, CardType.King), Announce.Twenty); PlayerTurnContext context = new PlayerTurnContext(middle, new Card(CardSuit.Spade, CardType.Jack), 6); IList <Card> cards = new List <Card>() { new Card(CardSuit.Spade, CardType.Ten), new Card(CardSuit.Heart, CardType.King), new Card(CardSuit.Heart, CardType.Queen), new Card(CardSuit.Club, CardType.King), new Card(CardSuit.Club, CardType.Nine), new Card(CardSuit.Diamond, CardType.Nine) }; // a card is played. Just to avoid context.AmITheFirstPlayer; context.FirstPlayedCard = new Card(CardSuit.Club, CardType.King); validator.IsValid(action, context, cards); Assert.AreEqual(Announce.Twenty, action.Announce); }