Exemple #1
0
 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();
 }
Exemple #3
0
 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));
 }