예제 #1
0
        public string CalculateCompoundInterestStringValue(string initialValue, double interestRate, int months)
        {
            var validateInterestRate = CheckIfInterestRateHasNegativeValue(interestRate);

            if (!string.IsNullOrEmpty(validateInterestRate))
            {
                return(validateInterestRate);
            }

            var validateParameters = new ValidateStringParameter();

            var validationStringParameterResult = validateParameters.Validate(initialValue, months);

            if (!string.IsNullOrEmpty(validationStringParameterResult))
            {
                return(validationStringParameterResult);
            }

            var validDecimalParameter = validateParameters.ValidateDecimal(initialValue);

            if (!string.IsNullOrEmpty(validDecimalParameter))
            {
                return(validDecimalParameter);
            }

            initialValue = initialValue.Replace(".", ",");
            var initialValueUsed = decimal.Parse(initialValue, CultureInfo.GetCultureInfo("pt-BR"));

            return((Math.Truncate(100 * (initialValueUsed * (decimal)Math.Pow((1 + interestRate), (double)months))) / 100).ToString("#0.00"));;
        }
예제 #2
0
        public void ValidateStringParameters_ShoulReturnErroWhenInitialValueIsNotNumber(string initialValue)
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();

            var result = validateStringParameters.ValidateDecimal(initialValue);

            Assert.Equal("[ERRO] O Valor inicial informado está em formato inválido.", result);
        }
예제 #3
0
        public void ValidateStringParameters_ShoulReturnErroWhenInitialValueHasMoreThanOneDot(string initialValue)
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();
            int months = 1;

            var result = validateStringParameters.Validate(initialValue, months);

            Assert.Equal("[ERRO] O Valor inicial informado está em formato inválido.", result);
        }
예제 #4
0
        public void ValidateStringParameters_ShoulReturnErroWhenInitialValueAndMonthsAreValid(string initialValue)
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();
            int months = 1;

            var result = validateStringParameters.Validate(initialValue, months);

            Assert.Equal(string.Empty, result);
        }
예제 #5
0
        public void ValidateStringParameters_ShoulNotReturnErroWhenInitialValueIsValidDecimal()
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();
            string initialValue = "0.01";

            var result = validateStringParameters.ValidateDecimal(initialValue);

            Assert.Equal(string.Empty, result);
        }
예제 #6
0
        public void ValidateStringParameters_ShoulReturnErroWhenInitialValueIsZero()
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();
            string initialValue = "0.00";

            var result = validateStringParameters.ValidateDecimal(initialValue);

            Assert.Equal("[ERRO] O Valor inicial informado deve ser um número decimal maior que zero (0).", result);
        }
예제 #7
0
        public void ValidateStringParameters_ShoulReturnErroWhenMonthsIsZero(string initialValue)
        {
            ValidateStringParameter validateStringParameters = new ValidateStringParameter();
            int months = 0;

            var result = validateStringParameters.Validate(initialValue, months);

            Assert.Equal("[ERRO] O Valor informado no parâmetro 'meses' deve ser um número inteiro maior que zero (0).", result);
        }