public void Compose() { var adviceBuilder1Mock = MockRepository.GenerateStrictMock <IAdviceBuilder>(); var adviceBuilder2Mock = MockRepository.GenerateStrictMock <IAdviceBuilder>(); var adviceBuilders = new[] { adviceBuilder1Mock, adviceBuilder2Mock }; var advice1 = ObjectMother.GetAdvice(); var advice2 = ObjectMother.GetAdvice(); adviceBuilder1Mock.Expect(x => x.Build()).Return(advice1); adviceBuilder2Mock.Expect(x => x.Build()).Return(advice2); var joinPoint = ObjectMother.GetJoinPoint(); var pointcutVisitorMock = MockRepository.GenerateStrictMock <IPointcutEvaluator>(); var adviceSequencerMock = MockRepository.GenerateStrictMock <IAdviceSequencer>(); var fakeAdvices = new Advice[0]; pointcutVisitorMock.Expect(x => x.Matches(advice1, joinPoint)).Return(false); pointcutVisitorMock.Expect(x => x.Matches(advice2, joinPoint)).Return(true); adviceSequencerMock.Expect(x => x.Sort(Arg <IEnumerable <Advice> > .List.Equal(new[] { advice2 }))).Return(fakeAdvices); var composer = new AdviceComposer(adviceSequencerMock, pointcutVisitorMock); var result = composer.Compose(adviceBuilders.AsOneTime(), joinPoint); adviceBuilder1Mock.VerifyAllExpectations(); adviceBuilder2Mock.VerifyAllExpectations(); pointcutVisitorMock.VerifyAllExpectations(); adviceSequencerMock.VerifyAllExpectations(); Assert.That(result, Is.SameAs(fakeAdvices)); }
static ObjectFactory() { //var assembler = SafeServiceLocator.Current.GetInstance<IAssembler>(); var declarationProvider = SafeServiceLocator.Current.GetInstance <IDeclarationProvider>(); var adviceComposer = new AdviceComposer(new PointcutEvaluator()); var adviceWeaver = SafeServiceLocator.Current.GetInstance <IAdviceWeaver>(); var intertypeWeaver = SafeServiceLocator.Current.GetInstance <IIntertypeWeaver>(); var eventMethodPreparer = SafeServiceLocator.Current.GetInstance <IEventMethodPreparer>(); var assembler = new Participant(declarationProvider, adviceComposer, adviceWeaver, intertypeWeaver, eventMethodPreparer); var typeModifier = SafeServiceLocator.Current.GetInstance <ITypeModifier>(); var typeAssembler = new TypeAssembler(new[] { assembler }, typeModifier); var constructorFinder = new ConstructorFinder(); var delegateFactory = new DelegateFactory(); var typeCache = new TypeCache(typeAssembler, constructorFinder, delegateFactory); s_objectFactory = new Remotion.TypePipe.ObjectFactory(typeCache); }