public void Default()
        {
            // Arrange
            ImprovedInitiative feat = new ImprovedInitiative();

            // Assert
            Assert.AreEqual("Improved Initiative", feat.Name.Text);
        }
        public void ApplyTo_NullICharacter_Throws()
        {
            // Arrange
            ICharacter         character = null;
            ImprovedInitiative feat      = new ImprovedInitiative();

            // Act
            TestDelegate applyTo = () => feat.ApplyTo(character);

            // Assert
            Assert.Throws <ArgumentNullException>(applyTo);
        }
        public void ApplyTo_RaisesInitiativeByFour()
        {
            // Arrange
            var bonusTracker = Mock.Of <IModifierTracker>();

            var mockCharacter = new Mock <ICharacter>();

            mockCharacter.Setup(c => c.Initiative.UntypedBonuses)
            .Returns(bonusTracker);

            ImprovedInitiative feat = new ImprovedInitiative();

            // Act
            feat.ApplyTo(mockCharacter.Object);

            // Assert
            Mock.Get(bonusTracker)
            .Verify(bt => bt.Add(It.Is <Func <byte> >(calc => 4 == calc())),
                    "Improved Initiative did not correctly apply a +4 untyped bonus to the character's initiative.");
        }