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);
        }
Пример #3
0
        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));
 }