Ejemplo n.º 1
0
        public void Can_pass_ANY_class_closure_with_constant_to_TryCompile()
        {
            var x          = new X();
            var xConstExpr = Constant(x);
            var expr       = Lambda <Func <X> >(xConstExpr);

            var cx = new ClosureX(x);
            var f  = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr);

            Assert.IsInstanceOf <X>(f());
        }
        public void Can_pass_closure_with_block_to_TryCompile()
        {
            var x          = new X();
            var xConstExpr = Constant(x);
            var expr       = Lambda <Func <X> >(Block(xConstExpr));

            var cx = new ClosureX(x);
            var f  = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr);

            Assert.IsNotNull(f);

            var result = f();

            Assert.AreSame(x, result);
        }
        public void Can_pass_closure_with_try_catch_to_TryCompile()
        {
            var x          = new X();
            var xConstExpr = Constant(x);
            var expr       = Lambda <Func <X> >(TryCatch(
                                                    xConstExpr,
                                                    Catch(typeof(Exception), Default(xConstExpr.Type))));

            var cx = new ClosureX(x);
            var f  = expr.TryCompileWithPreCreatedClosure <Func <X> >(cx, xConstExpr);

            Assert.IsNotNull(f);

            var result = f();

            Assert.AreSame(x, result);
        }