public void ACBonus_Deflection() { // Arrange byte acBonus = 10; var mockBonusTracker = new Mock <IModifierTracker>(); mockBonusTracker.Setup(bt => bt.GetTotal()) .Returns(acBonus); var mockArmorClass = new Mock <IArmorClass>(); mockArmorClass.Setup(ac => ac.DeflectionBonuses) .Returns(mockBonusTracker.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.ArmorClass) .Returns(mockArmorClass.Object); CombatManeuverDefense cmd = new CombatManeuverDefense(mockCharacter.Object); // Act var result = cmd.DeflectionBonuses.GetTotal(); // Assert Assert.AreEqual(acBonus, result, "Deflection bonuses to AC should also affect CMD."); }
public void GetTotal_Aggregates() { // Arrange var mockBaseAttackBonus = new Mock <IBaseAttackBonus>(); mockBaseAttackBonus.Setup(bab => bab.GetTotal()) .Returns(20); var mockAttackBonusesSection = new Mock <IAttackBonusSection>(); mockAttackBonusesSection.Setup(abs => abs.BaseAttackBonus) .Returns(mockBaseAttackBonus.Object); var mockStrength = new Mock <IAbilityScore>(); mockStrength.Setup(str => str.GetModifier()) .Returns(3); var mockDexterity = new Mock <IAbilityScore>(); mockDexterity.Setup(dex => dex.GetModifier()) .Returns(2); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Strength) .Returns(mockStrength.Object); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(mockDexterity.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AttackBonuses) .Returns(mockAttackBonusesSection.Object); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Large); CombatManeuverDefense cmd = new CombatManeuverDefense(mockCharacter.Object); cmd.CircumstanceBonuses.Add(() => 2); cmd.DeflectionBonuses.Add(() => 2); cmd.DodgeBonuses.Add(() => 2); cmd.InsightBonuses.Add(() => 2); cmd.LuckBonuses.Add(() => 2); cmd.MoraleBonuses.Add(() => 2); cmd.ProfaneBonuses.Add(() => 2); cmd.SacredBonuses.Add(() => 2); cmd.UntypedBonuses.Add(() => 2); cmd.Penalties.Add(() => 10); // Act var result = cmd.GetTotal(); // Assert Assert.AreEqual(44, result, "44 = 10 + (20 BAB) + (1 large) + (2 dex) + (3 str) + (2 circumstance) + (2 deflection) + (2 dodge) + (2 insight) + (2 luck) + (2 morale) + (2 profane) + (2 sacred) + (2 untyped) - (10 penalties)"); }
public void GetTotal_Default() { // Arrange var mockBaseAttackBonus = new Mock <IBaseAttackBonus>(); mockBaseAttackBonus.Setup(bab => bab.GetTotal()) .Returns(0); var mockAttackBonusesSection = new Mock <IAttackBonusSection>(); mockAttackBonusesSection.Setup(abs => abs.BaseAttackBonus) .Returns(mockBaseAttackBonus.Object); var mockStrength = new Mock <IAbilityScore>(); mockStrength.Setup(str => str.GetModifier()) .Returns(0); var mockDexterity = new Mock <IAbilityScore>(); mockDexterity.Setup(dex => dex.GetModifier()) .Returns(0); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Strength) .Returns(mockStrength.Object); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(mockDexterity.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AttackBonuses) .Returns(mockAttackBonusesSection.Object); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Medium); CombatManeuverDefense cmd = new CombatManeuverDefense(mockCharacter.Object); // Act var result = cmd.GetTotal(); // Assert Assert.AreEqual(10, result, "A medium-sized character with +0 BAB, 10 strength, and 10 dexterity should have a CMD of 10."); }
public void GetSizeModifier_Large() { // Arrange var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Large); CombatManeuverDefense cmd = new CombatManeuverDefense(mockCharacter.Object); // Act var sizeMod = cmd.GetSizeModifier(); // Assert Assert.AreEqual(1, sizeMod, "Large characters should have a +1 size modifier to their CMD."); }
public void Default() { // Arrange var character = Mock.Of <ICharacter>(); CombatManeuverDefense cmd = new CombatManeuverDefense(character); // Arrange Assert.IsInstanceOf <CircumstanceBonusTracker>(cmd.CircumstanceBonuses); Assert.IsInstanceOf <DeflectionBonusTracker>(cmd.DeflectionBonuses); Assert.IsInstanceOf <DodgeBonusTracker>(cmd.DodgeBonuses); Assert.IsInstanceOf <InsightBonusTracker>(cmd.InsightBonuses); Assert.IsInstanceOf <LuckBonusTracker>(cmd.LuckBonuses); Assert.IsInstanceOf <MoraleBonusTracker>(cmd.MoraleBonuses); Assert.IsInstanceOf <ProfaneBonusTracker>(cmd.ProfaneBonuses); Assert.IsInstanceOf <SacredBonusTracker>(cmd.SacredBonuses); Assert.IsInstanceOf <UntypedBonusTracker>(cmd.UntypedBonuses); Assert.IsInstanceOf <PenaltyTracker>(cmd.Penalties); }