public void AddInterfaceWhenConfigurationIsFrozen()
        {
            ProxyFactory factory = new ProxyFactory();

            factory.IsFrozen = true;
            Assert.Throws <AopConfigException>(() => factory.AddInterface(typeof(ITestObject)));
        }
Example #2
0
        /// <summary>
        /// Creates a new proxy for the supplied <paramref name="proxyInterface"/>
        /// and <paramref name="interceptor"/>.
        /// </summary>
        /// <remarks>
        /// <p>
        /// This is a convenience method for creating a proxy for a single
        /// interceptor.
        /// </p>
        /// </remarks>
        /// <param name="proxyInterface">
        /// The interface that the proxy must implement.
        /// </param>
        /// <param name="interceptor">
        /// The interceptor that the proxy must invoke.
        /// </param>
        /// <returns>
        /// A new AOP proxy for the supplied <paramref name="proxyInterface"/>
        /// and <paramref name="interceptor"/>.
        /// </returns>
        public static object GetProxy(Type proxyInterface, IInterceptor interceptor)
        {
            ProxyFactory proxyFactory = new ProxyFactory();

            proxyFactory.AddInterface(proxyInterface);
            proxyFactory.AddAdvice(interceptor);
            return(proxyFactory.GetProxy());
        }
        public void AddRepeatedInterface()
        {
            ITimeStamped tst = new AnonymousClassTimeStamped(this);
            ProxyFactory pf  = new ProxyFactory(tst);

            // We've already implicitly added this interface.
            // This call should be ignored without error
            pf.AddInterface(typeof(ITimeStamped));
            // All cool
            ITimeStamped ts = (ITimeStamped)pf.GetProxy();
        }
        public void AdvisedSupportListenerMethodsAre_NOT_CalledIfProxyHasNotBeenCreated()
        {
            IAdvisedSupportListener listener = MockRepository.GenerateMock <IAdvisedSupportListener>();

            ProxyFactory factory = new ProxyFactory(new TestObject());

            factory.AddListener(listener);

            // must not fire the AdviceChanged callback...
            factory.AddAdvice(new NopInterceptor());
            // must not fire the InterfacesChanged callback...
            factory.AddInterface(typeof(ISerializable));

            listener.AssertWasNotCalled(x => x.AdviceChanged(Arg <AdvisedSupport> .Is.Anything));
            listener.AssertWasNotCalled(x => x.InterfacesChanged(Arg <AdvisedSupport> .Is.Anything));
        }
        public void AdvisedSupportListenerMethodsAreCalledAppropriately()
        {
            IAdvisedSupportListener listener = MockRepository.GenerateMock <IAdvisedSupportListener>();

            ProxyFactory factory = new ProxyFactory(new TestObject());

            factory.AddListener(listener);

            // must fire the Activated callback...
            factory.GetProxy();
            // must fire the AdviceChanged callback...
            factory.AddAdvice(new NopInterceptor());
            // must fire the InterfacesChanged callback...
            factory.AddInterface(typeof(ISerializable));

            listener.AssertWasCalled(x => x.Activated(Arg <AdvisedSupport> .Is.NotNull));
            listener.AssertWasCalled(x => x.AdviceChanged(Arg <AdvisedSupport> .Is.NotNull));
            listener.AssertWasCalled(x => x.InterfacesChanged(Arg <AdvisedSupport> .Is.NotNull));
        }