Ejemplo n.º 1
0
        public void NoDecoratedMethods()
        {
            MockBuilderContext       context  = new MockBuilderContext();
            MethodReflectionStrategy strategy = new MethodReflectionStrategy();

            strategy.BuildUp(context, typeof(object), null);

            IMethodCallPolicy policy = context.Policies.Get <IMethodCallPolicy>(typeof(object));

            Assert.Null(policy);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Called during the chain of responsibility for a build operation. Looks for a method call policy for the buildKey and uses it to call a method if found.
        /// </summary>
        /// <param name="context">The context for the operation.</param>
		public override void PreBuildUp(IBuilderContext context)
		{
			IMethodCallPolicy policy = context.Policies.Get<IMethodCallPolicy>(context.BuildKey);

			if (context.Existing != null && policy != null)
			{
			    foreach (IMethodCallInfo method in policy.Methods)
			    {
			        method.Execute(context, context.Existing, context.BuildKey);
			    }
			}
		}
        public void NoDecoratedMethods()
        {
            MockBuilderContext context = new MockBuilderContext();

            context.Strategies.Add(
                new MethodReflectionStrategy <InjectionMethodAttribute, DependencyAttribute>());

            context.ExecuteBuildUp(typeof(object), null);

            IMethodCallPolicy policy = context.Policies.Get <IMethodCallPolicy>(typeof(object));

            Assert.IsNull(policy);
        }
        /// <summary>
        /// Adds <paramref name="parameters"/> to the appropriate policy.
        /// </summary>
        /// <param name="context">The build context.</param>
        /// <param name="member">The member that's being reflected over.</param>
        /// <param name="parameters">The parameters used to satisfy the method.</param>
        protected override void AddParametersToPolicy(IBuilderContext context,
                                                      IMemberInfo <MethodInfo> member,
                                                      IEnumerable <IParameter> parameters)
        {
            IMethodCallPolicy result = context.Policies.Get <IMethodCallPolicy>(context.BuildKey);

            if (result == null)
            {
                result = new MethodCallPolicy();
                context.Policies.Set(result, context.BuildKey);
            }

            result.Methods.Add(new ReflectionMethodCallInfo(member.MemberInfo, parameters));
        }
Ejemplo n.º 5
0
        public void DecoratedMethod()
        {
            MockBuilderContext       context  = new MockBuilderContext();
            MethodReflectionStrategy strategy = new MethodReflectionStrategy();

            strategy.BuildUp(context, typeof(Decorated), null);

            IMethodCallPolicy policy = context.Policies.Get <IMethodCallPolicy>(typeof(Decorated));

            Assert.NotNull(policy);
            Assert.NotEmpty(policy.Methods);
            foreach (ReflectionMethodCallInfo method in policy.Methods)
            {
                Assert.Equal(typeof(Decorated).GetMethod("Method"), method.Method);
            }
        }
Ejemplo n.º 6
0
        public override object BuildUp(IBuilderContext context,
                                       object buildKey,
                                       object existing)
        {
            IMethodCallPolicy policy = context.Policies.Get <IMethodCallPolicy>(buildKey);

            if (existing != null && policy != null)
            {
                foreach (IMethodCallInfo method in policy.Methods)
                {
                    method.Execute(context, existing, buildKey);
                }
            }

            return(base.BuildUp(context, buildKey, existing));
        }
        public void DecoratedMethod()
        {
            MockBuilderContext context = new MockBuilderContext();

            context.Strategies.Add(
                new MethodReflectionStrategy <InjectionMethodAttribute, DependencyAttribute>());

            context.ExecuteBuildUp(typeof(Decorated), null);

            IMethodCallPolicy policy = context.Policies.Get <IMethodCallPolicy>(typeof(Decorated));

            Assert.IsNotNull(policy);
            AssertHelper.NotEmpty(policy.Methods);
            foreach (ReflectionMethodCallInfo method in policy.Methods)
            {
                Assert.AreEqual(typeof(Decorated).GetMethod("Method"), method.Method);
            }
        }