Ejemplo n.º 1
0
        public void SubtractionOperator()
        {
            string        eq        = " 1 - 4";
            Lexer         tokenizer = new Lexer();
            List <Token>  tokens    = tokenizer.Parse(eq);
            TokenVerifier verifier  = new TokenVerifier();

            Assert.IsTrue(verifier.Verify(tokens));
            TokenEvaluator evaluator = new TokenEvaluator();

            Assert.AreEqual(-3, evaluator.Evaluate(tokens));
        }
Ejemplo n.º 2
0
        public void MultiplicationOperator()
        {
            string        eq        = "5*10";
            int           expected  = 50;
            Lexer         tokenizer = new Lexer();
            List <Token>  tokens    = tokenizer.Parse(eq);
            TokenVerifier verifier  = new TokenVerifier();

            Assert.IsTrue(verifier.Verify(tokens));
            TokenEvaluator evaluator = new TokenEvaluator();
            double         actual    = evaluator.Evaluate(tokens);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 3
0
        public void AdditionOperator()
        {
            string        eq        = " 1.5 + 4.0";
            double        expected  = 5.5;
            Lexer         tokenizer = new Lexer();
            List <Token>  tokens    = tokenizer.Parse(eq);
            TokenVerifier verifier  = new TokenVerifier();

            Assert.IsTrue(verifier.Verify(tokens));
            TokenEvaluator evaluator = new TokenEvaluator();
            double         actual    = evaluator.Evaluate(tokens);

            Assert.AreEqual(expected, actual);
        }
Ejemplo n.º 4
0
        public void AdditionAndDiceOperator()
        {
            string        eq        = "1d5 + 10";
            int           lowBound  = 11;
            int           highBound = 15;
            Lexer         tokenizer = new Lexer();
            List <Token>  tokens    = tokenizer.Parse(eq);
            TokenVerifier verifier  = new TokenVerifier();

            Assert.IsTrue(verifier.Verify(tokens));
            TokenEvaluator evaluator = new TokenEvaluator();
            double         results   = evaluator.Evaluate(tokens);

            if (!(lowBound <= results && results <= highBound))
            {
                Assert.Fail(String.Format("Result should have fallen within {0} and {1} but was instead {2}", lowBound, highBound, results));
            }
        }
Ejemplo n.º 5
0
        public static string GetTableName(string commandText)
        {
            var handler   = new CommandTextHandler();
            var evaluator = new TokenEvaluator(handler);

            evaluator.Evaluate(commandText);

            if (handler.Command.Type != "Select")
            {
                return(string.Empty);
            }

            var fromTable = handler.From.Items.FirstOrDefault();

            if (string.IsNullOrEmpty(fromTable) || fromTable.EndsWith(","))
            {
                return(string.Empty);
            }

            return(fromTable);
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Evaluates a mathematical expression. Only + - * / are supported.
 /// </summary>
 /// <param name="expression"></param>
 /// <returns></returns>
 public static int Evaluate(string expression)
 {
     return(_evaluator.Evaluate(_parser.Parse(expression).ToList().InfixToPostfix()));
 }