public int ModuloConstants(string input, Constant constant) { Parser parse = new Parser(); int constant_value; int number_value; Char result1; Char result2; int result3; int result4; bool test1 = Char.TryParse(parse.GetFirst(input), out result1); bool test2 = Char.TryParse(parse.GetSecond(input), out result2); bool test3 = int.TryParse(parse.GetFirst(input), out result3); bool test4 = int.TryParse(parse.GetSecond(input), out result4); if (test1 && !test3 && test4) { constant_value = constant.GetConstant(result1); number_value = result4; } else if (test2 && !test4 && test3) { constant_value = constant.GetConstant(result2); number_value = result3; } else if (test1 && test2 && !test3 && !test4) { constant_value = constant.GetConstant(result1); number_value = constant.GetConstant(result2); } else { throw new FormatException(); } return constant_value % number_value; }
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(); }
public int ModuloItems(string input) { Parser parse = new Parser(); int firstItem = Int32.Parse(parse.GetFirst(input)); int secondItem = Int32.Parse(parse.GetSecond(input)); return firstItem % secondItem; }
public void MultiplyWorksWithConstants() { string mock_input = "a * 2"; Parser parse = new Parser(); char toBeKey = char.Parse(parse.GetFirst(mock_input)); int toBeKeyValue = int.Parse(parse.GetSecond(mock_input)); Constant constant = new Constant(); constant.AddConstant(toBeKey, 1); Multiply items = new Multiply(); Assert.AreEqual(2, items.MultiplyConstants(mock_input, constant)); }
public void ModuloWorksWithConstants() { string mock_input = "a % 2"; Parser parse = new Parser(); char toBeKey = char.Parse(parse.GetFirst(mock_input)); int toBeKeyValue = int.Parse(parse.GetSecond(mock_input)); Constant constant = new Constant(); constant.AddConstant(toBeKey, 5); Modulo items = new Modulo(); Assert.AreEqual(1, items.ModuloConstants(mock_input, constant)); }
public void DivideWorksWithConstants() { string mock_input = "a / 2"; Parser parse = new Parser(); char toBeKey = char.Parse(parse.GetFirst(mock_input)); int toBeKeyValue = int.Parse(parse.GetSecond(mock_input)); Constant constant = new Constant(); constant.AddConstant(toBeKey, 2); Divide items = new Divide(); Assert.AreEqual(1, items.DivideConstants(mock_input, constant)); }
public void SubtractWorksWithConstants() { string mock_input = "a - 2"; Parser parse = new Parser(); char toBeKey = char.Parse(parse.GetFirst(mock_input)); int toBeKeyValue = int.Parse(parse.GetSecond(mock_input)); Constant constant = new Constant(); constant.AddConstant(toBeKey, 1); Subtract items = new Subtract(); Assert.AreEqual(-1, items.SubtractConstants(mock_input, constant)); }
public void AddWorksWithConstantsBackwards() { string mock_input = "22 + a"; Parser parse = new Parser(); int toBeKey = int.Parse(parse.GetFirst(mock_input)); char toBeKeyValue = char.Parse(parse.GetSecond(mock_input)); Constant constant = new Constant(); constant.AddConstant(toBeKeyValue, 1); Add items = new Add(); Assert.AreEqual(23, items.AddConstants(mock_input, constant)); }
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 ParserEnsureGetFirstWorksWithConstantsNoSpaces() { string input = "a+2"; Parser parse = new Parser(); Assert.AreEqual("a", parse.GetFirst(input)); }
public void ParserEnsureGetOperatorWorksWithoutSpaces() { string input = "2+2"; Parser parse = new Parser(); Assert.AreEqual('+', parse.GetOperator(input)); }
public void ParserEnsureGetFirstWorksWithSpaces() { string input = "2 + 2"; Parser parse = new Parser(); Assert.AreEqual("2", parse.GetFirst(input)); }
public void ParserEnsureGetOperatorWorksWithNegativeIntegersSpaces() { string input = "-2 + 2"; Parser parse = new Parser(); Assert.AreEqual('+', parse.GetOperator(input)); }
public void ParserEnsureGetFirstWorksWithNegativeIntegersSpaces() { string input = "-2 + 2"; Parser parse = new Parser(); Assert.AreEqual("-2", parse.GetFirst(input)); }
public void ParserEnsureICanCreateInstanceOfParser() { Parser parse = new Parser(); Assert.IsNotNull(parse); }
public void ParserEnsureGetSecondWorksWithConstantsSpaces() { string input = "2 + a"; Parser parse = new Parser(); Assert.AreEqual("a", parse.GetSecond(input)); }
public void ParserEnsureGetSecondWorksWithoutSpaces() { string input = "2+2"; Parser parse = new Parser(); Assert.AreEqual("2", parse.GetSecond(input)); }
public void ParserEnsureGetSecondWorksWithNegativeIntegersNoSpaces() { string input = "2+ -3"; Parser parse = new Parser(); Assert.AreEqual("-3", parse.GetSecond(input)); }