Beispiel #1
0
        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());
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }