public void Small_NoFlySpeed_Aggregates() { // Arrange var mockFlySpeed = new Mock <IFly>(); // mockFlySpeed.Setup(f => f.BaseSpeed).Returns(null); // Redundant, since it will return null be default var dexterity = Mock.Of <IAbilityScore>(); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(dexterity); var mockSpeeds = new Mock <IMovementSection>(); mockSpeeds.Setup(ms => ms.Fly) .Returns(mockFlySpeed.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.MovementModes) .Returns(mockSpeeds.Object); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Small); var flySkill = new Core.Domain.Characters.Skills.Fly(mockCharacter.Object); // Assert Assert.AreEqual(0, flySkill.SizeBonuses.GetTotal()); Assert.AreEqual(0, flySkill.UntypedBonuses.GetTotal()); Assert.AreEqual(0, flySkill.Penalties.GetTotal()); }
public void Large_Good_Aggregates() { // Arrange var mockFlySpeed = new Mock <IFly>(); mockFlySpeed.Setup(f => f.BaseSpeed) .Returns(6); mockFlySpeed.Setup(f => f.Maneuverability) .Returns(Maneuverability.Good); var dexterity = Mock.Of <IAbilityScore>(); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(dexterity); var mockSpeeds = new Mock <IMovementSection>(); mockSpeeds.Setup(ms => ms.Fly) .Returns(mockFlySpeed.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.MovementModes) .Returns(mockSpeeds.Object); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Large); var flySkill = new Core.Domain.Characters.Skills.Fly(mockCharacter.Object); // Assert Assert.AreEqual(0, flySkill.SizeBonuses.GetTotal()); Assert.AreEqual(4, flySkill.UntypedBonuses.GetTotal(), "Perfect maneuverability gives a +8 bonus to fly skill."); Assert.AreEqual(2, flySkill.Penalties.GetTotal(), "Large characters have a -2 penalty to fly skill."); }
public void IsClassSkill_WithFlySpeed_AlwaysTrue() { var mockFlySpeed = new Mock <IFly>(); mockFlySpeed.Setup(f => f.BaseSpeed) .Returns(6); var dexterity = Mock.Of <IAbilityScore>(); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(dexterity); var mockSpeeds = new Mock <IMovementSection>(); mockSpeeds.Setup(ms => ms.Fly) .Returns(mockFlySpeed.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.MovementModes) .Returns(mockSpeeds.Object); var flySkill = new Core.Domain.Characters.Skills.Fly(mockCharacter.Object); // Act & Assert Assert.IsTrue(flySkill.ArmorCheckPenaltyApplies); Assert.IsTrue(flySkill.IsClassSkill); flySkill.IsClassSkill = false; Assert.IsTrue(flySkill.IsClassSkill); flySkill.IsClassSkill = true; Assert.IsTrue(flySkill.IsClassSkill); }
public void Medium_Average_Aggregates() { // Arrange var mockFlySpeed = new Mock <IFly>(); mockFlySpeed.Setup(f => f.BaseSpeed) .Returns(6); mockFlySpeed.Setup(f => f.Maneuverability) .Returns(Maneuverability.Average); var dexterity = Mock.Of <IAbilityScore>(); var mockAbilityScores = new Mock <IAbilityScoreSection>(); mockAbilityScores.Setup(abs => abs.Dexterity) .Returns(dexterity); var mockSpeeds = new Mock <IMovementSection>(); mockSpeeds.Setup(ms => ms.Fly) .Returns(mockFlySpeed.Object); var mockCharacter = new Mock <ICharacter>(); mockCharacter.Setup(c => c.AbilityScores) .Returns(mockAbilityScores.Object); mockCharacter.Setup(c => c.MovementModes) .Returns(mockSpeeds.Object); mockCharacter.Setup(c => c.Size) .Returns(SizeCategory.Medium); var flySkill = new Core.Domain.Characters.Skills.Fly(mockCharacter.Object); // Assert Assert.AreEqual(0, flySkill.SizeBonuses.GetTotal()); Assert.AreEqual(0, flySkill.UntypedBonuses.GetTotal()); Assert.AreEqual(0, flySkill.Penalties.GetTotal()); }