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

            // Assert
            Assert.AreEqual("Lightning Reflexes", feat.Name.Text);
        }
        public void ApplyTo_NullICharacter_Throws()
        {
            // Arrange
            ICharacter        character = null;
            LightningReflexes feat      = new LightningReflexes();

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

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

            var mockCharacter = new Mock <ICharacter>();

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

            LightningReflexes feat = new LightningReflexes();

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

            // Assert
            Mock.Get(bonusTracker)
            .Verify(bt => bt.Add(It.Is <Func <byte> >(calc => 2 == calc())),
                    "Lightning Reflexes did not correctly apply a +2 untyped bonus to the character's Reflex saving throw.");
        }