コード例 #1
0
        public void TestStringAssignmentExpression2()
        {
            string a;
            string b;
            ExecutionEnvironment e  = new ExecutionEnvironment();
            Identifier           ai = new Identifier("a");
            Identifier           bi = new Identifier("b");

            e.RegisterValue("a", "5.0");
            e.RegisterValue("b", "6.0");
            a = "5.0";
            b = "6.0";
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual
            }.Execute(e).ReturnValue, a += b);
            Assert.AreEqual(a, e.GetValue("a"));
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual
            }.Execute(e).Type, CompletionType.Exception);

            e.SetValue("a", 5);
            e.SetValue("b", "6.0");
            a = "5";
            b = "6.0";
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual
            }.Execute(e).ReturnValue, a += b);
            Assert.AreEqual(a, e.GetValue("a"));
        }
コード例 #2
0
        public void TestIntConvetion()
        {
            ExecutionEnvironment e = new ExecutionEnvironment();

            e.RegisterValue("a", 1);
            Assert.AreEqual(e.GetValue <string>("a"), "1");
            Assert.AreEqual(e.GetValue <float>("a"), 1);
            Assert.AreEqual(e.GetValue <double>("a"), 1);
        }
コード例 #3
0
        public void TestVariable()
        {
            ExecutionEnvironment e = new ExecutionEnvironment();

            e.RegisterValue("a", null);
            Assert.IsNull(e.GetValue("a"));
            e.RegisterValue("b", "5");
            Assert.AreEqual(e.GetValue("b"), "5");
        }
コード例 #4
0
        public void TestDoubleAssignmentExpression2()
        {
            int a = 5;
            int b = 6;
            ExecutionEnvironment e  = new ExecutionEnvironment();
            Identifier           ai = new Identifier("a");
            Identifier           bi = new Identifier("b");

            e.RegisterValue("a", 5.0);
            e.RegisterValue("b", 6.0);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitAndEqual
            }.Execute(e).ReturnValue, a &= b);
            Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitOrEqual
            }.Execute(e).ReturnValue, a |= b);
            Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitExclusiveOrEqual
            }.Execute(e).ReturnValue, a ^= b);
            Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitLeftShiftEqual
            }.Execute(e).ReturnValue, a <<= b);
            Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitRightShiftEqual
            }.Execute(e).ReturnValue, a >>= b);
            Assert.IsTrue(Math.Abs((int)(e.GetValue("a")) - a) < 0.01);
        }
コード例 #5
0
        public void TestStringConvertion()
        {
            ExecutionEnvironment e = new ExecutionEnvironment();

            e.RegisterValue("b", "5");
            Assert.AreEqual(e.GetValue("b"), "5");
            Assert.AreEqual(e.GetValue <int>("b"), 5);
            Assert.AreEqual(e.GetValue <float>("b"), 5);
            e.RegisterValue("c", "false");
            Assert.AreEqual(e.GetValue <bool>("c"), false);
        }
コード例 #6
0
        public void TestDoubleAssignmentExpression()
        {
            double a = 5;
            double b = 6;
            ExecutionEnvironment e  = new ExecutionEnvironment();
            Identifier           ai = new Identifier("a");
            Identifier           bi = new Identifier("b");

            e.RegisterValue("a", 5.0);
            e.RegisterValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.IsTrue(Math.Abs((double)(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.Equal
            }.Execute(e).ReturnValue) - (a = b)) < 0.01);
            Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.IsTrue(Math.Abs((double)(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual
            }.Execute(e).ReturnValue) - (a += b)) < 0.01);
            Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.IsTrue(Math.Abs((double)(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual
            }.Execute(e).ReturnValue) - (a -= b)) < 0.01);
            Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            b = 6;
            Assert.IsTrue(Math.Abs((double)(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.DivideEqual
            }.Execute(e).ReturnValue) - (a /= b)) < 0.01);
            Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01);
            e.SetValue("a", 5.0);
            e.SetValue("b", 6.0);
            a = 5;
            Assert.IsTrue(Math.Abs((double)(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.MulitiplyEqual
            }.Execute(e).ReturnValue) - (a *= b)) < 0.01);
            Assert.IsTrue(Math.Abs((double)e.GetValue("a") - a) < 0.01);
        }
コード例 #7
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);
        }
コード例 #8
0
        public void TestVariableDeclarationcs()
        {
            VariableDeclarationcs v = new VariableDeclarationcs();

            v.Name  = "v";
            v.Value = 5;
            ExecutionEnvironment e = new ExecutionEnvironment();
            var r = v.Execute(e);

            Assert.AreEqual(r.ReturnValue, 5);
            Assert.AreEqual(r.Type, CompletionType.Value);
            Assert.AreEqual(e.GetValue("v"), 5);
        }
コード例 #9
0
        public void TestUpldateExpression()
        {
            float b = 5;
            ExecutionEnvironment e   = new ExecutionEnvironment();
            UpdateExpression     add = new UpdateExpression()
            {
                IsPrefix = false, Operator = UpdateOperator.Add, Expression = new Identifier()
                {
                    Variable = "a"
                }
            };
            UpdateExpression minus = new UpdateExpression()
            {
                IsPrefix = false, Operator = UpdateOperator.Minus, Expression = new Identifier()
                {
                    Variable = "a"
                }
            };
            //test int
            int a = 5;

            e.RegisterValue("a", a);
            Assert.AreEqual(add.Execute(e).ReturnValue, a++);
            Assert.AreEqual(e.GetValue("a"), a);
            Assert.AreEqual(minus.Execute(e).ReturnValue, a--);
            Assert.AreEqual(e.GetValue("a"), a);
            //test float
            b = 5;
            e.SetValue("a", b);
            Assert.AreEqual(add.Execute(e).ReturnValue, b++);
            Assert.AreEqual(e.GetValue("a"), b);
            Assert.AreEqual(minus.Execute(e).ReturnValue, b--);
            Assert.AreEqual(e.GetValue("a"), b);
            //test double
            double c = 7.1;

            e.SetValue("a", c);
            Assert.AreEqual(add.Execute(e).ReturnValue, c++);
            Assert.AreEqual(e.GetValue("a"), c);
            Assert.AreEqual(minus.Execute(e).ReturnValue, c--);
            Assert.AreEqual(e.GetValue("a"), c);
            //test string
            string s = "5";

            e.SetValue("a", s);
            Assert.AreEqual(add.Execute(e).Type, CompletionType.Exception);
            Assert.AreEqual(minus.Execute(e).Type, CompletionType.Exception);
        }
コード例 #10
0
        public void TestIntAssignmentExpression()
        {
            int a = 5;
            int b = 6;
            ExecutionEnvironment e  = new ExecutionEnvironment();
            Identifier           ai = new Identifier("a");
            Identifier           bi = new Identifier("b");

            e.RegisterValue("a", 5);
            e.RegisterValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.Equal
            }.Execute(e).ReturnValue, a = b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.AddEqual
            }.Execute(e).ReturnValue, a += b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.MinusEqual
            }.Execute(e).ReturnValue, a -= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.MulitiplyEqual
            }.Execute(e).ReturnValue, a *= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.DivideEqual
            }.Execute(e).ReturnValue, a /= b);
            Assert.AreEqual(e.GetValue("a"), a);

            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitAndEqual
            }.Execute(e).ReturnValue, a &= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitOrEqual
            }.Execute(e).ReturnValue, a |= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitExclusiveOrEqual
            }.Execute(e).ReturnValue, a ^= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitLeftShiftEqual
            }.Execute(e).ReturnValue, a <<= b);
            Assert.AreEqual(e.GetValue("a"), a);
            e.SetValue("a", 5);
            e.SetValue("b", 6);
            a = 5;
            b = 6;
            Assert.AreEqual(new AssignmentExpression()
            {
                Left = ai, Right = bi, Operator = AssignmentOperator.BitRightShiftEqual
            }.Execute(e).ReturnValue, a >>= b);
            Assert.AreEqual(e.GetValue("a"), a);
        }