예제 #1
0
        public void Calculate_NoPowerTransforms_ReturnsDamage(
            int userAttack,
            int basePower,
            int targetDefence,
            int expectedAmount)
        {
            // Arrange
            var random = new Mock <Random>();

            random
            .Setup(m => m.Next(80, 101))
            .Returns(100);

            var calculator = new BasePowerDamageCalculator(basePower, random.Object);

            var user   = TestHelpers.CreateBasicCharacter(attack: userAttack);
            var damage = TestHelpers.CreateDamageAction(calculator);
            var target = TestHelpers.CreateBasicCharacter(defence: targetDefence);

            // Act
            var calculation = calculator.Calculate(user, damage, new[] { target }).Single();

            // Assert
            Assert.Multiple(() =>
            {
                Assert.That(calculation.Success, Is.True);
                Assert.That(calculation.Amount, Is.EqualTo(expectedAmount));
            });
        }
예제 #2
0
        public void Calculate_NoPowerTransforms_MultipleTargets_ReturnsSpreadDamage()
        {
            // Arrange
            var random = new Mock <Random>();

            random
            .Setup(m => m.Next(80, 101))
            .Returns(100);

            var calculator = new BasePowerDamageCalculator(10, random.Object);

            var user    = TestHelpers.CreateBasicCharacter(attack: 6);
            var damage  = TestHelpers.CreateDamageAction(calculator);
            var target1 = TestHelpers.CreateBasicCharacter(defence: 5);
            var target2 = TestHelpers.CreateBasicCharacter();

            // Act
            var calculation = calculator.Calculate(user, damage, new[] { target1, target2 }).First();

            // Assert
            Assert.Multiple(() =>
            {
                Assert.That(calculation.Success, Is.True);
                Assert.That(calculation.Amount, Is.EqualTo(7));
            });
        }
예제 #3
0
        public void Calculate_WithPowerTransforms_ReturnsDamage()
        {
            // Arrange
            var random = new Mock <Random>();

            random
            .Setup(m => m.Next(80, 101))
            .Returns(100);

            var calculator = new BasePowerDamageCalculator(10, random.Object);

            var user   = TestHelpers.CreateBasicCharacter(attack: 6);
            var damage = TestHelpers.CreateDamageAction(calculator);
            var target = TestHelpers.CreateBasicCharacter(defence: 5);

            var transforms = new PowerTransform[]
            {
                p => p + 10,
                p => p * 2,
            };
            var item = TestHelpers.CreateItem(
                actionContainer: TestHelpers.CreateActionContainer(
                    damagePowerTransforms: transforms
                    )
                );

            _ = user.EquipItem(item);

            // Act
            var calculation = calculator.Calculate(user, damage, new[] { target }).Single();

            // Assert
            Assert.Multiple(() =>
            {
                Assert.That(calculation.Success, Is.True);
                Assert.That(calculation.Amount, Is.EqualTo(40));
            });
        }
예제 #4
0
 public void Ctor_NullRandom_Throws()
 {
     Assert.Throws <ArgumentNullException>(() => _ = new BasePowerDamageCalculator(0, null));
 }