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()); }
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(); } }
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); } }
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); } }
/// /// <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); }
public void Logical_Not_Dbl() { const string data = "!!true"; object expected = !!true; object actual = CsEval.Eval(data); Assert.AreEqual(expected, actual, "DATA: " + data); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }