public int EvaluateInput(string input, Constant constant) { Parser parse = new Parser(); Add add_input = new Add(); Subtract subtract_input = new Subtract(); Multiply multiply_input = new Multiply(); Divide divide_input = new Divide(); Modulo modulo_input = new Modulo(); if (parse.GetOperator(input) == '+') { return add_input.AddConstants(input, constant); } if (parse.GetOperator(input) == '-') { return subtract_input.SubtractConstants(input, constant); } if (parse.GetOperator(input) == '*') { return multiply_input.MultiplyConstants(input, constant); } if (parse.GetOperator(input) == '/') { return divide_input.DivideConstants(input, constant); } if (parse.GetOperator(input) == '%') { return modulo_input.ModuloConstants(input, constant); } throw new FormatException(); }
static void Main(string[] args) { int count = 0; Parser parse = new Parser(); Constant constant = new Constant(); Evaluate evaluate_input = new Evaluate(); Char result1; Char result2; int result3; int result4; while (true) { Console.Write("[{0}]", count); string input = Console.ReadLine(); if (input.ToLower() == "exit" || input.ToLower() == "quit") { break; } bool testIfFirstIsChar = Char.TryParse(parse.GetFirst(input), out result1); bool testIfSecondIsChar = Char.TryParse(parse.GetSecond(input), out result2); bool testIfFirstIsNum = int.TryParse(parse.GetFirst(input), out result3); bool testIfSecondIsNum = int.TryParse(parse.GetSecond(input), out result4); if (input.Length == 1) { Console.WriteLine(" = {0} is {1}", input, constant.GetConstant(char.Parse(input))); } else if (testIfFirstIsChar && !testIfFirstIsNum && parse.GetOperator(input) == '=') { constant.AddConstant(result1, result4); Console.WriteLine("= '{0}' is '{1}' ", result1, result4); } else if (testIfFirstIsChar && !testIfFirstIsNum && testIfSecondIsNum || testIfSecondIsChar && !testIfSecondIsNum && testIfFirstIsNum || !testIfFirstIsNum && !testIfSecondIsNum) { Console.WriteLine("= {0}", evaluate_input.EvaluateInput(input, constant)); } else if (testIfFirstIsNum && testIfSecondIsNum) { Console.WriteLine("= {0}", evaluate_input.EvaluateInput(input)); } count++; } }
public void ParserEnsureGetOperatorWorksWithoutSpaces() { string input = "2+2"; Parser parse = new Parser(); Assert.AreEqual('+', parse.GetOperator(input)); }
public void ParserEnsureGetOperatorWorksWithNegativeIntegersSpaces() { string input = "-2 + 2"; Parser parse = new Parser(); Assert.AreEqual('+', parse.GetOperator(input)); }