public void GivenThereIsSomeoneLeftToAct_ThenReturnTheNextCharacter() { // arrange var actual = new InitiativePass(); var three = new InitiativePassSlot() { CurrentInitiative = 17, HasActed = false }; actual.Setup(new DiceBag(), new List <Character>()); actual.InitiativeOrder.Add(new InitiativePassSlot() { CurrentInitiative = 0, HasActed = false }); actual.InitiativeOrder.Add(new InitiativePassSlot() { CurrentInitiative = 15, HasActed = false }); actual.InitiativeOrder.Add(three); actual.InitiativeOrder.Add(new InitiativePassSlot() { CurrentInitiative = 0, HasActed = false }); actual.InitiativeOrder.Add(new InitiativePassSlot() { CurrentInitiative = 8, HasActed = false }); // act var results = actual.Next(); // assert Assert.IsNotNull(results); Assert.AreSame(three, results); }
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 GivenOtherIsNull_ThrowArgumentNullException() { // arrange var actual = new InitiativePassSlot(); // act var results = actual.CompareTo(null); // assert Assert.Fail("ArgumentNullException should have been thrown"); }
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 GivenNullDiceBag_ThenThrowArgumentNullException() { // arrange var actual = new InitiativePassSlot(); // act var results = actual.RollInitiative(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 GivenBothHaveNotActedAndBothHaveSameInitiative_ThenEqual() { // arrange var other = new InitiativePassSlot() { HasActed = false, CurrentInitiative = 5 }; var actual = new InitiativePassSlot() { HasActed = false, CurrentInitiative = 5 }; // act var results = actual.CompareTo(other); // assert Assert.AreEqual(0, results); }
public void GivenBothHaveNotActedAndOtherHasAHigherInitiative_ThenOtherPrecedesThis() { // arrange var other = new InitiativePassSlot() { HasActed = false, CurrentInitiative = 8 }; var actual = new InitiativePassSlot() { HasActed = false, CurrentInitiative = 3 }; // act var results = actual.CompareTo(other); // assert Assert.AreEqual(1, results); }
public void GivenThisHasNotActedAndOtherHas_ThenThisPrecedesOther() { // arrange var other = new InitiativePassSlot() { HasActed = true }; var actual = new InitiativePassSlot() { HasActed = false }; // act var results = actual.CompareTo(other); // assert Assert.AreEqual(-1, results); }
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."); }
public void GivenDiceBagAndNoInitiativeModifiers_ThenRollInitiativeForCharacter() { // arrange var character = new Character(); character.Attributes[AttributeType.Intuition] = 4; character.Attributes[AttributeType.Reaction] = 3; var mockDiceBag = new Mock <IDiceBag>(MockBehavior.Strict); mockDiceBag.Setup(x => x.d6(1)).Returns(new List <int> { 6 }); var actual = new InitiativePassSlot() { Participant = character }; // act var results = actual.RollInitiative(mockDiceBag.Object); // assert Assert.AreEqual(13, results); }