Beispiel #1
0
        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());
        }
Beispiel #2
0
        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.");
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }