Пример #1
0
            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);
            }
Пример #2
0
            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);
            }
Пример #3
0
            public void GivenOtherIsNull_ThrowArgumentNullException()
            {
                // arrange
                var actual = new InitiativePassSlot();

                // act
                var results = actual.CompareTo(null);

                // assert
                Assert.Fail("ArgumentNullException should have been thrown");
            }
Пример #4
0
            public void GivenActionIsNull_ThrowArgumentNullException()
            {
                // arrange
                var actual = new InitiativePassSlot();

                // act
                actual.PerformAction(new DiceBag(), null);

                // assert
                Assert.Fail("ArgumentNullException should have been thrown.");
            }
Пример #5
0
            public void GivenNullDiceBag_ThenThrowArgumentNullException()
            {
                // arrange
                var actual = new InitiativePassSlot();

                // act
                var results = actual.RollInitiative(null);

                // assert
                Assert.Fail("ArgumentNullException should have been thrown.");
            }
Пример #6
0
            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.");
            }
Пример #7
0
            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.");
            }
Пример #8
0
            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);
            }
Пример #9
0
            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);
            }
Пример #10
0
            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);
            }
Пример #11
0
            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.");
            }
Пример #12
0
            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);
            }