예제 #1
0
        public T Calculate(string expression)
        {
            try
            {
                expression = _formatter.FormatExpression(expression);

                if (!_validator.BracketsValidation(expression))
                {
                    throw new ExpressionFormatException("В данном выражении не одинаковое количество открытых и закрытых скобок.");
                }

                if (!_validator.ValidateAvailableOperation(expression, _parser.AvailableOperations))
                {
                    throw new ExpressionFormatException("В данном выражении обнаружены операции, которые в данный момент не определены.");
                }

                var reverseExpression = _parser.Parse(expression);

                return(_parser.Calculate(reverseExpression));
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void Calculate_Expression_With_Two_Operands_Test()
        {
            var expression = "2+3";

            var reverseExpression = _parser.Parse(expression);
            var result            = _parser.Calculate(reverseExpression);

            Assert.AreEqual(5, result);
        }