public void ModulusTwoIntegers()
        {
            ModulusExpression expr = new ModulusExpression(new ConstantExpression(6), new ConstantExpression(2));

            Assert.AreEqual(0, expr.Evaluate(null));
            Assert.AreSame(TypeInfo.Int, expr.TypeInfo);
        }
Esempio n. 2
0
        public void TestEvaluate()
        {
            var expression = new ModulusExpression(
                Mock.Of <IExpression>(e => e.Evaluate(It.IsAny <IDictionary <string, object> >()) == (object)5),
                Mock.Of <IExpression>(e => e.Evaluate(It.IsAny <IDictionary <string, object> >()) == (object)2),
                new Context(ExpressiveOptions.None));

            Assert.AreEqual(1, expression.Evaluate(null));
        }
Esempio n. 3
0
        public void EvaluateWithTwoNormalOperands()
        {
            var left  = new ConstantExpression(1);
            var right = new ConstantExpression(2);

            var expression = new ModulusExpression(left, right);

            Assert.AreEqual(1, expression.Evaluate());
        }
Esempio n. 4
0
        public void EvaluateWithOneModulusExpression()
        {
            var left     = new ConstantExpression(1);
            var leftTwo  = new ConstantExpression(2);
            var rightTwo = new ConstantExpression(4);
            var right    = new ModulusExpression(leftTwo, rightTwo);

            var expression = new ModulusExpression(left, right);

            Assert.AreEqual(1, expression.Evaluate());
        }
Esempio n. 5
0
        private IExpression ParseBinaryExpression(int level)
        {
            if (level >= binaryoperators.Length)
            {
                return(this.ParseTerm());
            }

            IExpression expr = this.ParseBinaryExpression(level + 1);

            if (expr == null)
            {
                return(null);
            }

            Token token;

            for (token = this.NextToken(); token != null && this.IsBinaryOperator(level, token); token = this.NextToken())
            {
                if (token.Value == "+")
                {
                    expr = new AddExpression(expr, this.ParseBinaryExpression(level + 1));
                }
                else if (token.Value == "-")
                {
                    expr = new SubtractExpression(expr, this.ParseBinaryExpression(level + 1));
                }
                else if (token.Value == "*")
                {
                    expr = new MultiplyExpression(expr, this.ParseBinaryExpression(level + 1));
                }
                else if (token.Value == "/")
                {
                    expr = new DivideExpression(expr, this.ParseBinaryExpression(level + 1));
                }
                else if (token.Value == "%")
                {
                    expr = new ModulusExpression(expr, this.ParseBinaryExpression(level + 1));
                }
                else if (token.Value == "==")
                {
                    expr = new EqualExpression(expr, this.ParseBinaryExpression(level + 1));
                }
            }

            if (token != null)
            {
                this.PushToken(token);
            }

            return(expr);
        }
        public void ModulusTwoDoubles()
        {
            ModulusExpression expr = new ModulusExpression(new ConstantExpression(2.5), new ConstantExpression(3.7));

            try
            {
                expr.Evaluate(null);
                Assert.Fail();
            }
            catch (Exception ex)
            {
                Assert.IsInstanceOfType(ex, typeof(InvalidOperationException));
            }
        }