Ejemplo n.º 1
0
        public void TestWhileStatement()
        {
            ExecutionEnvironment e = new ExecutionEnvironment();

            e.RegisterValue("a", true);
            e.RegisterValue("b", true);
            e.RegisterValue("c", 5);
            e.RegisterValue("d", 6);
            WhileStatement s = new WhileStatement();

            s.Test = new BinaryExpression()
            {
                Left = new Identifier()
                {
                    Variable = "a"
                }, Right = new Identifier()
                {
                    Variable = "b"
                }, Operator = Operator.And
            };
            s.Body = new BlockStatement();
            s.Body.Body.Add(new ExpressionStatement()
            {
                Expression = new AssignmentExpression()
                {
                    Left = new Identifier()
                    {
                        Variable = "c"
                    }, Right = new BinaryExpression()
                    {
                        Left = new Identifier()
                        {
                            Variable = "c"
                        }, Operator = Operator.Add, Right = new Literal()
                        {
                            Raw = "2"
                        }
                    }
                }
            });
            s.Body.Body.Add(new ExpressionStatement()
            {
                Expression = new AssignmentExpression()
                {
                    Left = new Identifier()
                    {
                        Variable = "a"
                    }, Right = new Literal()
                    {
                        Raw = "false"
                    }
                }
            });
            var c = s.Execute(e);

            Assert.AreEqual(e.GetValue("c"), 7);
        }