Exemplo n.º 1
0
        private CalcRequestModel Validate(CalcRequestModel request)
        {
            if (!_config.AllowNegativeNumbers && request.Numbers.Any(num => num < 0))
            {
                throw new NegativeNumberException();
            }
            request.Numbers = request.Numbers.Where(num => num <= _config.MaximumNumber).ToList();

            return(request);
        }
Exemplo n.º 2
0
        public static string FormatClean(this CalcRequestModel request)
        {
            StringBuilder sb = new StringBuilder();

            sb.Append(request.Numbers[0].ToString());
            for (var i = 1; i < request.Numbers.Count; i++)
            {
                sb.Append(request.Operation.GetSymbolString());
                sb.Append(request.Numbers[i]);
            }
            return(sb.ToString());
        }
Exemplo n.º 3
0
        public int ProcessCalculations(CalcRequestModel request)
        {
            request = Validate(request);
            switch (request.Operation)
            {
            case OperationEnum.Add:
                return(request.Numbers.Sum());

            case OperationEnum.Subtract:
                var sum = request.Numbers[0];
                for (var i = 1; i < request.Numbers.Count; i++)
                {
                    sum -= request.Numbers[i];
                }
                return(sum);

            case OperationEnum.Multiply:
                var factor = request.Numbers[0];
                for (var i = 1; i < request.Numbers.Count; i++)
                {
                    factor = factor * request.Numbers[i];
                }
                return(factor);

            case OperationEnum.Divide:
                var numerator = request.Numbers[0];
                for (var i = 1; i < request.Numbers.Count; i++)
                {
                    numerator = numerator / request.Numbers[i];
                }
                return(numerator);

            default:
                throw new NotImplementedException("Unrecognized mathematical operator");
            }
        }