Beispiel #1
0
        public void StressTest_6()
        {
            const string data     = @"(
											(7 & (0 | (-1 & 2) | (4 & 7)) & ~~(~6 ^ ~2) & (~(0 ^ 1 & 2 | 3) | 31)) == /* 4 */ 
											((int)(((-(int.MaxValue ^ int.MinValue) << ~2) >> ~10) / 2 ** 7) << 1) /* 4 */
										 )
										 &&
										 (
											(0 ^ 1 ^ 2 << 0 ^ 3 ^ 2 << 1 | 5 | 6 & 7 & 4 >> 1) /* 7 */ ==
											((2 << (128 >> 1 >> 1 >> 2 >> 2)) - 1) /* 7 */
										 )
										 ?
											(2 > 1 && 45 < -1 || 2 <= 2 && 5 >= 3 ^ true != false || !!false ^ false || ((-2.0) > (-10.0))) /* true */
											?
											23 
											: 
											-1
										 :
										 -2;
										"                                        ;
            object       actual   = CsEval.Eval(data);
            object       expected = 23;

            Assert.IsTrue(WithinEpsilonRange(expected, actual), "EXPECTED:" + expected.ToString() + " ACTUAL:" + actual.ToString());
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            h = new Hashtable();
            h.Add("hello", "world");
            //Console.Out.WriteLine(CSE.CsEval.Eval(null, "3 + 4"));
            //Test(typeof(byte), 300);

            CsEval.EvalEnvironment = new TestProg();

            Console.Out.Write(">> ");
            string exp = Console.In.ReadLine();

            while (exp != "")
            {
                try {
                    CsEvaluator evaluator = CsEval.GetEvaluator(exp);
                    object      result    = CsEval.Eval(evaluator);

                    if (result == null)
                    {
                        Console.Out.WriteLine(Environment.NewLine + "Returned: null");
                    }
                    else
                    {
                        Console.Out.WriteLine(Environment.NewLine + result.ToString());
                    }
                }
                catch (Exception e) {
                    Console.Out.WriteLine(Environment.NewLine + e.Message);
                }

                Console.Out.Write(Environment.NewLine + ">> ");
                exp = Console.In.ReadLine();
            }
        }
Beispiel #3
0
        public void StressTest_2()
        {
            const string data = @"
				testObj.MethTest.ArgTestRefTypes(
					Color.FromArgb(
						byte.Parse(""23.098"".Substring(0, ""23.098"".IndexOf('.'))),
						testObj.ArrTest.i[testObj.ArrTest.a + testObj.ArrTest.x * 2],
						byte.Parse(
							(testObj.IdentTest.decimalFieldTest.ToString().Substring
								(0,testObj.IdentTest.decimalFieldTest.ToString().IndexOf('.')))
						)
					),
					new Vector3(
						float.Parse(3.ToString()) + float.Parse(2.3.ToString()),
						float.Parse(
							(('3'.ToString() + true.ToString()).Substring
								(0,('3'.ToString() + true.ToString()).IndexOf('T')))
						),
						(int)testObj.ArrTest.v[2].Y + (float)testObj.ArrTest.i[0] + int.Parse((-2).ToString()) * -(3).ToString().Length
					)
				)"                ;

            CsEval.Eval(data);
            if ((bool)CsEval.Eval("testObj.MethTest.ArgTestRefTypesRan") != true)
            {
                Assert.Fail(data);
            }
        }
Beispiel #4
0
        public void StressTest_1()
        {
            const string data = @"
				testObj.MethTest.ArgTestRefTypes(
					Color.FromArgb(
						(byte)new Vector3(1f, (float)2+2 , (float)(double)(float)(int)4.5).   X,
						Color.Cyan.B,
						( byte  )testObj . IdentTest.		ushortFieldTest + 1
					),
					new Vector3(
						(float)new Random((int)DateTime.UtcNow.AddDays(new Random().NextDouble()).Millisecond).Next(5000),
						(float)new Rectangle(
							testObj.MethTest.NumericDiscreteReturn(), 
							new C().i, 
							(int)new C().CMeth2(new Random().Next()), 
							90 % 9
						).Location.X,
						new C().IAMeth3()
					)
				)"                ;

            CsEval.Eval(data);
            if ((bool)CsEval.Eval("testObj.MethTest.ArgTestRefTypesRan") != true)
            {
                Assert.Fail(data);
            }
        }
Beispiel #5
0
        ///
        /// <summary>
        ///
        /// </summary>
        ///
        public static dynamic Parse(string[] parameters, string body)
        {
            dynamic lambda = null;

            switch (parameters.Length)
            {
            case 1:
                lambda = new Lambda <Func <dynamic, dynamic> >((dynamic a0) => {
                    //TempIdentifierExp.PushScope();
                    TempIdentifierExp.AddIdent(a0.GetType(), parameters[0], a0);
                    dynamic result = CsEval.Eval(body);
                    //TempIdentifierExp.PopScope();
                    return(result);
                });
                break;

            case 2:
                lambda = new Lambda <Func <dynamic, dynamic, dynamic> >((a0, a1) => {
                    //TempIdentifierExp.PushScope();
                    TempIdentifierExp.AddIdent(a0.GetType(), parameters[0], a0);
                    TempIdentifierExp.AddIdent(a1.GetType(), parameters[1], a1);
                    dynamic result = CsEval.Eval(body);
                    //TempIdentifierExp.PopScope();
                    return(result);
                });
                break;
            }

            return(lambda);
        }
Beispiel #6
0
        public void Logical_Not_Dbl()
        {
            const string data     = "!!true";
            object       expected = !!true;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #7
0
        public void Logical_Precedence_1()
        {
            const string data     = "true && true || false ^ false && !false && !true || !false ^ !true";
            object       expected = true;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #8
0
        public void Array_LitObj()
        {
            const string data     = "testObj.ArrTest.v[2]";
            object       expected = new Vector2(-90, 120);
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #9
0
        public void Array_MethodCall()
        {
            const string data     = "testObj.ArrTest.i[ testObj.MethTest.NumericDiscreteReturn() ]";
            object       expected = 34;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #10
0
        public void Array_Arith()
        {
            const string data     = "testObj.ArrTest.i[ 1 + 1 + (2) - 1 % 2 ]";
            object       expected = 34;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #11
0
        public void Array_LitObjFieldLitArith()
        {
            const string data     = "testObj.ArrTest.v[2].Y + testObj.ArrTest.i[0]";
            object       expected = (float)165;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Protected_StaticVolatile()
        {
            const string data     = "AccessModifierTest.protectedStaticVolatileTest";
            object       expected = 26;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Protected_Readonly()
        {
            const string data     = "testObj.AccModTest.protectedReadonlyTest";
            object       expected = 14;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Private_Static()
        {
            const string data     = "AccessModifierTest.privateStaticTest";
            object       expected = 7;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #15
0
        public void MethCall_Overloaded_7()
        {
            const string data     = "testObj.MethTest.OverloadedMeth(1234567369874612387478901234567890.0)";
            object       expected = "double";
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #16
0
        public void SpecExp_GetTypeDotName()
        {
            const string data     = "3.GetType().Name";
            object       expected = 3.GetType().Name;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #17
0
        public void Array_LitObjField()
        {
            const string data     = "testObj.ArrTest.v[2].X";
            object       expected = (float)-90;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Protected_Volatile()
        {
            const string data     = "testObj.AccModTest.protectedVolatileTest";
            object       expected = 22;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #19
0
        public void Array_ParenLit()
        {
            const string data     = "testObj.ArrTest.i[(1)]";
            object       expected = 2;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Public_StaticReadonly()
        {
            const string data     = "AccessModifierTest.publicStaticReadonlyTest";
            object       expected = 17;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #21
0
        public void Array_NegIdent()
        {
            const string data     = "testObj.ArrTest.i[-testObj.ArrTest.a]";
            object       expected = 91;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Internal_Readonly()
        {
            const string data     = "testObj.AccModTest.internalReadonlyTest";
            object       expected = 16;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #23
0
        public void Array_ArrayElemArith()
        {
            const string data     = "testObj.ArrTest.i[ testObj.ArrTest.j[2] * testObj.ArrTest.k[3] ]";
            object       expected = 52;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Internal_StaticVolatile()
        {
            const string data     = "AccessModifierTest.internalStaticVolatileTest";
            object       expected = 28;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #25
0
        public void Logical_Xor_TF()
        {
            const string data     = "true ^ false";
            object       expected = true ^ false;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Internal_Volatile()
        {
            const string data     = "testObj.AccModTest.internalVolatileTest";
            object       expected = 24;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #27
0
        public void Logical_And_TT()
        {
            const string data     = "true && true";
            object       expected = true && true;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
        public void AccMod_Private_Const()
        {
            const string data     = "testObj.AccModTest.privateConstTest";
            object       expected = 11;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #29
0
        public void Logical_Or_FF()
        {
            const string data     = "false || false";
            object       expected = false || false;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }
Beispiel #30
0
        public void SpecExp_ColorColorProblem()
        {
            const string data     = "(Color)testObj.SpecExpTest.Color(Color.Blue)";
            object       expected = Color.Blue;
            object       actual   = CsEval.Eval(data);

            Assert.AreEqual(expected, actual, "DATA: " + data);
        }