public void ShouldGetExpectedLedgeIntangibility() { var data = new LedgeIntangiblityProblemData { AirborneFrames = 50, CharacterPercentage = 70 }; var result = _calculator.LedgeIntangibility(data); Assert.That(result, Is.EqualTo(48)); }
public void ShouldThrowExceptionForCharacterPercentageOver120() { var data = new LedgeIntangiblityProblemData { AirborneFrames = 30, CharacterPercentage = 121 }; Assert.Throws<Exception>(() => _calculator.LedgeIntangibility(data)); }
///// <summary> ///// Returns the calculated Hitlag. ///// </summary> ///// <param name="data"></param> ///// <returns></returns> //public double HitlagRaw(HitlagProblemData data) //{ // var retVal = (data.Damage / 2.6 + 5) * // data.ElectricModifier.GetModifierValue() * // data.HitlagMultiplier * // data.CrouchingModifier.GetModifierValue() - 1; // if (retVal > 30) // { // retVal = 30; // } // return retVal; //} /// <summary> /// Returns the calculated LedgeIntangibility. /// </summary> /// <param name="data"></param> /// <returns></returns> public int LedgeIntangibility(LedgeIntangiblityProblemData data) { if (data.AirborneFrames > 300) { throw new Exception($"{nameof(data.AirborneFrames)} cannot be higher than 300."); } if (data.CharacterPercentage > 120) { throw new Exception($"{nameof(data.CharacterPercentage)} cannot be higher than 120."); } var result = (int)Math.Floor(data.AirborneFrames * 0.2 + 64 - data.CharacterPercentage * 44 / 120.0); if (result < 24) { result = 24; } if (result > 124) { result = 124; } return result; }