private MockBuilderContext CreateContext(MockConstructorReflectionStrategy mockReflectionStrategy) { IBuilderStrategy[] strategies = { new SingletonStrategy(), mockReflectionStrategy, new CreationStrategy() }; MockBuilderContext context = new MockBuilderContext(strategies); context.Policies.SetDefault <ICreationPolicy>(new DefaultCreationPolicy()); context.Policies.SetDefault <ISingletonPolicy>(new SingletonPolicy(true)); return(context); }
public void RelectionStrategyCacheConstructorReflectionInfo() { MockConstructorReflectionStrategy mockReflectionStrategy = new MockConstructorReflectionStrategy(); MockBuilderContext context1 = CreateContext(mockReflectionStrategy); MockBuilderContext context2 = CreateContext(mockReflectionStrategy); int ctorCount = typeof(MockDecoratedCtorObject).GetConstructors().Length; // building the object twice should call once to GetMembers and MemberRequiresProcessing context1.HeadOfChain.BuildUp(context1, typeof(MockDecoratedCtorObject), null, null); context2.HeadOfChain.BuildUp(context2, typeof(MockDecoratedCtorObject), null, null); Assert.AreEqual(1, mockReflectionStrategy.GetMembersCalledCount); Assert.AreEqual(ctorCount, mockReflectionStrategy.MemberRequiresProcessingCalledCount); }
private MockBuilderContext CreateContext(MockConstructorReflectionStrategy mockReflectionStrategy) { IBuilderStrategy[] strategies = { new SingletonStrategy(), mockReflectionStrategy, new CreationStrategy() }; MockBuilderContext context = new MockBuilderContext(strategies); context.Policies.SetDefault<ICreationPolicy>(new DefaultCreationPolicy()); context.Policies.SetDefault<ISingletonPolicy>(new SingletonPolicy(true)); return context; }
public void RelectionStrategyCacheConstructorReflectionInfo() { MockConstructorReflectionStrategy mockReflectionStrategy = new MockConstructorReflectionStrategy(); MockBuilderContext context1 = CreateContext(mockReflectionStrategy); MockBuilderContext context2 = CreateContext(mockReflectionStrategy); int ctorCount = typeof (MockDecoratedCtorObject).GetConstructors().Length; // building the object twice should call once to GetMembers and MemberRequiresProcessing context1.HeadOfChain.BuildUp(context1, typeof (MockDecoratedCtorObject), null, null); context2.HeadOfChain.BuildUp(context2, typeof (MockDecoratedCtorObject), null, null); Assert.AreEqual(1, mockReflectionStrategy.GetMembersCalledCount); Assert.AreEqual(ctorCount, mockReflectionStrategy.MemberRequiresProcessingCalledCount); }