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)); }); }
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)); }); }
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)); }); }
public void Ctor_NullRandom_Throws() { Assert.Throws <ArgumentNullException>(() => _ = new BasePowerDamageCalculator(0, null)); }