public void ExpectCardNotToBePlayableIfTurnNotEnded(DevelopmentCardType type) { var turn = new Mock<ITurn>(); var card = new DevelopmentCard(type, turn.Object); Assert.False(card.Playable); }
public void ExpectCardToBePlayableAfterTurnEnded(DevelopmentCardType type) { var turn = new Mock<ITurn>(); var card = new DevelopmentCard(type, turn.Object); turn.Raise(t => t.Ended += null, EventArgs.Empty); Assert.True(card.Playable); }
public DevelopmentCard(DevelopmentCardType type, ITurn boughtTurn) { if (!Enum.IsDefined(typeof(DevelopmentCardType), type)) throw new ArgumentException("Invalid card type"); if (boughtTurn == null) throw new ArgumentNullException(nameof(boughtTurn)); Id = Guid.NewGuid(); Type = type; if (type == DevelopmentCardType.VictoryPoint) _playable = true; else { turn = boughtTurn; turn.Ended += Turn_Ended; } }
public void InvalidCardGivesException(DevelopmentCardType type) { var state1 = new Mock<IFlowSate>(); var state2 = new Mock<IFlowSate>(); var flowstates = new IFlowSate[] { state1.Object, state2.Object }; var factory = CreateFactory(); var provider = new StateProvider(flowstates, factory); Assert.Throws<ArgumentException>(() => provider.Get(type)); }
public void TestGetDevelopmentCard(DevelopmentCardType cardType, Type expectedState) { var state1 = new Mock<IFlowSate>(); var state2 = new Mock<IFlowSate>(); var flowstates = new IFlowSate[] { state1.Object, state2.Object }; var factory = CreateFactory(); var provider = new StateProvider(flowstates, factory); var result = provider.Get(cardType); Assert.IsAssignableFrom(expectedState, result); }
public void CardCantBeCreatedWithInvalidCardType(DevelopmentCardType type) { var turn = new Mock<ITurn>(); Assert.Throws<ArgumentException>(() => new DevelopmentCard(type, turn.Object)); }
public void ExpectPlayDevelopmentCardToSetDevelomentCardState(DevelopmentCardType type) { var player = new Mock<IPlayer>(); var state1 = new Mock<ITurnState>(); var provider = new Mock<IStateProvider>(); provider.Setup(p => p.HasNext()).Returns(true); provider.Setup(p => p.GetNext()).Returns(state1.Object); state1.Setup(s => s.Commands).Returns(new GameCommand[] { GameCommand.PlayDevelopmentCard }); var card = new Mock<IDevelopmentCard>(); card.Setup(c => c.Type).Returns(type); var turn = new Turn(player.Object, provider.Object); turn.NextFlowState(); bool changed = false; turn.StateChanged += (sender, args) => { changed = true; }; turn.PlayDevelopmentCard(card.Object); provider.Verify(p => p.Get(type)); Assert.True(changed); }
public static IDevelopmentCard CreateCard(DevelopmentCardType type, bool played) { var mock = new Mock<IDevelopmentCard>(); mock.Setup(m => m.Type).Returns(type); mock.Setup(m => m.Played).Returns(played); return mock.Object; }