public ActionResult Get([FromQuery] CalculateInterestInput input) { var result = _calculateInterestService.Calculate(input); _logger.Log($"Result calculated: {result}", LogEvent.Debug); return(Ok(result)); }
/// <summary> /// Calculate the specified input and rate. /// </summary> /// <returns>The calculate.</returns> /// <param name="input">Input.</param> /// <param name="rate">Rate.</param> public decimal Calculate(CalculateInterestInput input, decimal rate) { var initialValue = Convert.ToDouble(input.ValorInicial); var interestRate = Convert.ToDouble(rate); var interestRateCalculed = Math.Pow(1 + interestRate, input.Meses); var result = initialValue * interestRateCalculed; var resultWithTruncate = Convert.ToDecimal(Math.Truncate(100 * result) / 100); return(resultWithTruncate); }
public void ShouldCalculateInterestController(decimal valorInicial, int meses, decimal result) { var input = new CalculateInterestInput { ValorInicial = valorInicial, Meses = meses }; var actual = Assert.IsType <OkObjectResult>(_calculateInterestController.Get(input)); var expected = result; Assert.Equal(expected, actual.Value); }
public void ShouldCalculateZeroWhenInitialValueAndMonthIsZero() { var calculateInterestInput = new CalculateInterestInput { ValorInicial = 0, Meses = 0 }; var actual = _calculateInterestService.Calculate(calculateInterestInput); var expected = 0m; Assert.Equal(expected, actual); }
public void ShouldCalculateInterestValuesWithoutInterestRateSetInOptions(decimal valorInicial, int meses, decimal interestRate, decimal result) { var input = new CalculateInterestInput { ValorInicial = valorInicial, Meses = meses }; var actual = _calculateInterestService.Calculate(input, interestRate); var expected = result; Assert.Equal(expected, actual); }
public void ShouldCalculateInterestValueFromExample() { var calculateInterestInput = new CalculateInterestInput { ValorInicial = 100, Meses = 5 }; var actual = _calculateInterestService.Calculate(calculateInterestInput); var expected = 105.10m; Assert.Equal(expected, actual); }
public void ShouldCalculateWhenInterestRateIsZero() { var interestRate = 0m; var calculateInterestInput = new CalculateInterestInput { ValorInicial = 100, Meses = 5 }; var actual = _calculateInterestService.Calculate(calculateInterestInput, interestRate); var expected = 100m; Assert.Equal(expected, actual); }
/// <summary> /// Calculate the specified input. /// </summary> /// <returns>The calculate.</returns> /// <param name="input">Input.</param> public decimal Calculate(CalculateInterestInput input) { return(Calculate(input, _options.InterestRate)); }