public void GivenInitativeCostLessThanCurrentInitiative_ThenCurrentInitiativeDecrementedAndActionRun() { // arrange var character = new Character(); var bag = new DiceBag(); var mockAction = new Mock <IInitiativeAction>(MockBehavior.Strict); var actionResult = new ActionResult("", new DicePoolResults(new List <int>())); var cost = new InitiativeCost() { Cost = 5, IsCostRequired = false }; var actual = new InitiativePassSlot() { Participant = character, CurrentInitiative = 7 }; mockAction.Setup(x => x.InitiativeCost) .Returns(cost); mockAction.Setup(x => x.Do(bag, character)) .Returns(actionResult); // act actual.PerformAction(bag, mockAction.Object); // assert Assert.AreEqual(2, actual.CurrentInitiative); mockAction.Verify(x => x.Do(bag, character), Times.Once); }
public void GivenActionIsNull_ThrowArgumentNullException() { // arrange var actual = new InitiativePassSlot(); // act actual.PerformAction(new DiceBag(), null); // assert Assert.Fail("ArgumentNullException should have been thrown."); }
public void GivenDiceBagIsNull_ThrowArgumentNullException() { // arrange var mockAction = new Mock <IInitiativeAction>(MockBehavior.Strict); var actual = new InitiativePassSlot(); // act actual.PerformAction(null, mockAction.Object); // assert Assert.Fail("ArgumentNullException should have been thrown."); }
public void GivenCurrentInitiativeIsNegative_ThrowInvalidOperationException() { // arrange var mockAction = new Mock <IInitiativeAction>(MockBehavior.Strict); var actual = new InitiativePassSlot() { CurrentInitiative = -1 }; // act actual.PerformAction(new DiceBag(), mockAction.Object); // assert Assert.Fail("InvalidOperationException should have been thrown."); }
public void GivenInitiativeCostGreaterThanCurrentInitiativeAndCostIsRequired_ThrowInvalidOperationException() { // arrange var mockAction = new Mock <IInitiativeAction>(MockBehavior.Strict); var cost = new InitiativeCost() { Cost = 2, IsCostRequired = true }; var actual = new InitiativePassSlot() { CurrentInitiative = 1 }; mockAction.Setup(x => x.InitiativeCost) .Returns(cost); // act actual.PerformAction(new DiceBag(), mockAction.Object); // assert Assert.Fail("InvalidOperationException should have been thrown."); }