public void CallSafeStaticMethod() { Expression <Func <int> > expected = () => MethodCallTest.GetOne(); var encoded = EncodedExpression.EncodeExpression(expected); var decodeOptions = new DecodeOptions(); decodeOptions.SafeStaticMethodTypes.Add(typeof(MethodCallTest)); var actual = (Expression <Func <int> >)EncodedExpression.DecodeExpression(encoded, decodeOptions); Assert.AreEqual(expected.ToString(), actual.ToString()); Assert.AreEqual(1, expected.Compile().Invoke()); }
public void CallTwoParameterMethod() { Expression <Func <MethodCallTest, int> > expected = (a) => a.AddValues(1, 2); var encoded = EncodedExpression.EncodeExpression(expected); var decodeOptions = new DecodeOptions { AllowUnsafeCalls = true }; var actual = (Expression <Func <MethodCallTest, int> >)EncodedExpression.DecodeExpression(encoded, decodeOptions); Assert.AreEqual(expected.ToString(), actual.ToString()); var testObject = new MethodCallTest(); Assert.AreEqual(3, expected.Compile().Invoke(testObject)); testObject = new MethodCallTest(); Assert.AreEqual(3, actual.Compile().Invoke(testObject)); }
public void CallSafeMethod() { Expression <Action <MethodCallTest> > expected = (a) => a.AddOne(); var encoded = EncodedExpression.EncodeExpression(expected); var decodeOptions = new DecodeOptions(); decodeOptions.SafeMethods.Add(typeof(MethodCallTest).GetMethod(nameof(MethodCallTest.AddOne))); var actual = (Expression <Action <MethodCallTest> >)EncodedExpression.DecodeExpression(encoded, decodeOptions); Assert.AreEqual(expected.ToString(), actual.ToString()); var testObject = new MethodCallTest(); expected.Compile().Invoke(testObject); Assert.AreEqual(1, testObject.Value); testObject = new MethodCallTest(); actual.Compile().Invoke(testObject); Assert.AreEqual(1, testObject.Value); }