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); } } }
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()); }
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()); }