public double Begin()
        {
            Console.Write(_welcomeString);

            for (; ;)
            {
                Console.Write(_promptString);

                var userInput = Console.ReadLine();
                if (userInput.Contains('?'))
                {
                    Console.WriteLine(_helpString);
                    foreach (var key in MathematicalExpressionEvaluator.ExpressionEvaluators.Keys)
                    {
                        Console.Write("{0} ", key);
                    }
                    Console.WriteLine("\n");
                }

                var    inputStatement = new MathematicalExpressionStatement(userInput);
                double?answer         = null;

                foreach (var expression in inputStatement.Expressions)
                {
                    if (MathematicalExpressionEvaluator.ExpressionEvaluators.ContainsKey(expression.Operator))
                    {
                        answer = MathematicalExpressionEvaluator.ExpressionEvaluators[expression.Operator](expression, answer);
                    }
                    else
                    {
                        Console.WriteLine(_errorString, expression.Operator);
                        answer = null;
                        break;
                    }
                }

                if (answer.HasValue)
                {
                    Console.Write(_answerString, answer);
                }
            }
        }
Example #2
0
        public void TwoNumberCalculations()
        {
            var    userInput      = "12 3 +";
            var    inputStatement = new MathematicalExpressionStatement(userInput);
            double?answer         = null;

            foreach (var expression in inputStatement.Expressions)
            {
                if (MathematicalExpressionEvaluator.ExpressionEvaluators.ContainsKey(expression.Operator))
                {
                    answer = MathematicalExpressionEvaluator.ExpressionEvaluators[expression.Operator](expression, answer);
                }
                else
                {
                    answer = null;
                    break;
                }
            }
            Assert.Equal("15", answer.ToString());
        }
Example #3
0
        public void SriesOfAdditionsAndOrSubtractions()
        {
            var    userInput      = "12 34 + 56 + 78 - 90 + 12 -";
            var    inputStatement = new MathematicalExpressionStatement(userInput);
            double?answer         = null;

            foreach (var expression in inputStatement.Expressions)
            {
                if (MathematicalExpressionEvaluator.ExpressionEvaluators.ContainsKey(expression.Operator))
                {
                    answer = MathematicalExpressionEvaluator.ExpressionEvaluators[expression.Operator](expression, answer);
                }
                else
                {
                    answer = null;
                    break;
                }
            }
            Assert.Equal("102", answer.ToString());
        }