public void compile_and_use_by_itself_not_using_IBuildSession() { var variable = Expression.Variable(typeof(ITarget), "target"); var expression = theInterceptor.ToExpression(Policies.Default(), Parameters.Session, variable); var lambdaType = typeof(Func <ITarget, ITarget>); var lambda = Expression.Lambda(lambdaType, expression, variable); var func = lambda.Compile().As <Func <ITarget, ITarget> >(); var target = new Target(); var decorated = func(target); decorated.ShouldBeOfType <DecoratedTarget>() .Inner.ShouldBeTheSameAs(target); }
public void compile_and_use_by_itself_using_IContext() { theInterceptor = new FuncInterceptor <ITarget>((c, t) => new ContextKeepingTarget(c, t)); var variable = Expression.Variable(typeof(ITarget), "target"); var expression = theInterceptor.ToExpression(Policies.Default(), Parameters.Context, variable); var lambdaType = typeof(Func <IContext, ITarget, ITarget>); var lambda = Expression.Lambda(lambdaType, expression, Parameters.Context, variable); var func = lambda.Compile().As <Func <IContext, ITarget, ITarget> >(); var target = new Target(); var session = new FakeBuildSession(); var decorated = func(session, target).ShouldBeOfType <ContextKeepingTarget>(); decorated .Inner.ShouldBeTheSameAs(target); decorated.Session.ShouldBeTheSameAs(session); }
public void compile_and_use_by_itself_using_IContext() { theInterceptor = new FuncInterceptor<ITarget>((c, t) => new ContextKeepingTarget(c, t)); var variable = Expression.Variable(typeof (ITarget), "target"); var expression = theInterceptor.ToExpression(Policies.Default(), Parameters.Context, variable); var lambdaType = typeof (Func<IContext, ITarget, ITarget>); var lambda = Expression.Lambda(lambdaType, expression, Parameters.Context, variable); var func = lambda.Compile().As<Func<IContext, ITarget, ITarget>>(); var target = new Target(); var session = new FakeBuildSession(); var decorated = func(session, target).ShouldBeOfType<ContextKeepingTarget>(); decorated .Inner.ShouldBeTheSameAs(target); decorated.Session.ShouldBeTheSameAs(session); }