示例#1
0
        public void Block_SetVariable()
        {
            var int1 = Variable <int>("int1");
            var int2 = Variable <int>("int2");

            var expr = Block(
                new ParameterExpression[] {
                int2
            },
                new Expression[] {
                Assign(int2, Constant(2)),
                Assign(int1, int2)
            });

            var ctx = new ExpressionContext();

            ctx.AddVariable <int>("int1", 1);

            var result = Eval(expr, ctx);

            Assert.IsTrue(ctx.ContainsVariable("int1"));
            Assert.IsFalse(ctx.ContainsVariable("int2"));
            Assert.AreEqual(2, ctx.GetVariable("int1"));
            Assert.AreEqual(null, result);
        }
示例#2
0
        public void Block_SetVariable2()
        {
            var ctx = new ExpressionContext();

            ctx.AddVariable <int>("int1", 1);
            var int2 = Variable <int>("int2");
            var int3 = Variable <int>("int3");
            var expr = Block(
                new ParameterExpression[] { int2 },
                new Expression[] {
                Assign(int2, Constant(2)),
                Block(new ParameterExpression[] { int3 },
                      new Expression[] {
                    Assign(int3, Constant(3)),
                    Assign(Variable <int>("int1"), Add(int2, int3))
                })
            });
            //System.Linq.Expressions.Expression
            var result = Eval(expr, ctx);

            Assert.IsTrue(ctx.ContainsVariable("int1"));
            Assert.IsFalse(ctx.ContainsVariable("int2"));
            Assert.IsFalse(ctx.ContainsVariable("int3"));
            Assert.AreEqual(5, ctx.GetVariable("int1"));
            Assert.AreEqual(null, result);
        }
示例#3
0
        private void TestVariable(string name, object value)
        {
            var ctx = new ExpressionContext();

            ctx.AddVariable(value.GetType(), name, value);
            Assert.IsTrue(ctx.ContainsVariable(name));
            Assert.IsFalse(ctx.ContainsVariable("_" + name));
            Assert.AreEqual(value, ctx.GetVariable(name));
        }