public void ConfigurationRegistersHookPointsCorrectly()
        {
            var configuration = new ApiConfiguration();

            Assert.Null(configuration.GetHookHandler <IHookA>());
            Assert.Null(configuration.GetHookHandler <IHookB>());

            var singletonHookPoint = new HookA();

            configuration.AddHookHandler <IHookA>(singletonHookPoint);
            Assert.Same(singletonHookPoint, configuration.GetHookHandler <IHookA>());
            Assert.Null(configuration.GetHookHandler <IHookB>());

            var multiCastHookPoint1 = new HookB();

            configuration.AddHookHandler <IHookB>(multiCastHookPoint1);
            Assert.Same(singletonHookPoint, configuration.GetHookHandler <IHookA>());
            Assert.Equal(multiCastHookPoint1, configuration.GetHookHandler <IHookB>());

            var multiCastHookPoint2 = new HookB();

            configuration.AddHookHandler <IHookB>(multiCastHookPoint2);
            var handler = configuration.GetHookHandler <IHookB>();

            Assert.Equal(multiCastHookPoint2, handler);

            var delegateHandler = handler as IDelegateHookHandler <IHookB>;

            Assert.NotNull(delegateHandler);
            Assert.Equal(multiCastHookPoint1, delegateHandler.InnerHandler);
        }
        public void ConfigurationRegistersHookPointsCorrectly()
        {
            IServiceCollection services = new ServiceCollection();
            var configuration = services.BuildApiConfiguration();

            Assert.Null(configuration.GetApiService<IHookA>());
            Assert.Null(configuration.GetApiService<IHookB>());

            var singletonHookPoint = new HookA();
            services.CutoffPrevious<IHookA>(singletonHookPoint);
            configuration = services.BuildApiConfiguration();
            Assert.Same(singletonHookPoint, configuration.GetApiService<IHookA>());
            Assert.Null(configuration.GetApiService<IHookB>());

            var multiCastHookPoint1 = new HookB();
            services.CutoffPrevious<IHookB>(multiCastHookPoint1);
            configuration = services.BuildApiConfiguration();
            Assert.Same(singletonHookPoint, configuration.GetApiService<IHookA>());
            Assert.Equal(multiCastHookPoint1, configuration.GetApiService<IHookB>());

            services = new ServiceCollection()
                .CutoffPrevious<IHookB>(multiCastHookPoint1)
                .ChainPrevious<IHookB, HookB>()
                .AddInstance(new HookB());
            configuration = services.BuildApiConfiguration();
            var multiCastHookPoint2 = configuration.GetApiService<HookB>();
            var handler = configuration.GetApiService<IHookB>();
            Assert.Equal(multiCastHookPoint2, handler);

            var delegateHandler = handler as HookB;
            Assert.NotNull(delegateHandler);
            Assert.Equal(multiCastHookPoint1, delegateHandler.InnerHandler);
        }
        public void hookHandlerChainTest()
        {
            var q1            = new HookB("q1Pre", "q1Post");
            var q2            = new HookB("q2Pre", "q2Post");
            var configuration = new ApiConfiguration()
                                .AddHookHandler <IHookB>(q1)
                                .AddHookHandler <IHookB>(q2);

            var handler = configuration.GetHookHandler <IHookB>();

            Assert.Equal("q2Pre_q1Pre_q1Post_q2Post_", handler.GetStr());
        }
        public void hookHandlerChainTest()
        {
            var q1 = new HookB("q1Pre", "q1Post");
            var q2 = new HookB("q2Pre", "q2Post");
            var configuration = new ServiceCollection()
                .CutoffPrevious<IHookB>(q1)
                .ChainPrevious<IHookB>(next =>
                {
                    q2.InnerHandler = next;
                    return q2;
                }).BuildApiConfiguration();

            var handler = configuration.GetApiService<IHookB>();
            Assert.Equal("q2Pre_q1Pre_q1Post_q2Post_", handler.GetStr());
        }
Example #5
0
        public void hookHandlerChainTest()
        {
            var q1            = new HookB("q1Pre", "q1Post");
            var q2            = new HookB("q2Pre", "q2Post");
            var configuration = new ServiceCollection()
                                .CutoffPrevious <IHookB>(q1)
                                .ChainPrevious <IHookB>(next =>
            {
                q2.InnerHandler = next;
                return(q2);
            }).BuildApiConfiguration();

            var handler = configuration.GetApiService <IHookB>();

            Assert.Equal("q2Pre_q1Pre_q1Post_q2Post_", handler.GetStr());
        }
Example #6
0
        public void ConfigurationRegistersHookPointsCorrectly()
        {
            IServiceCollection services = new ServiceCollection();
            var configuration           = services.BuildApiConfiguration();

            Assert.Null(configuration.GetApiService <IHookA>());
            Assert.Null(configuration.GetApiService <IHookB>());

            var singletonHookPoint = new HookA();

            services.CutoffPrevious <IHookA>(singletonHookPoint);
            configuration = services.BuildApiConfiguration();
            Assert.Same(singletonHookPoint, configuration.GetApiService <IHookA>());
            Assert.Null(configuration.GetApiService <IHookB>());

            var multiCastHookPoint1 = new HookB();

            services.CutoffPrevious <IHookB>(multiCastHookPoint1);
            configuration = services.BuildApiConfiguration();
            Assert.Same(singletonHookPoint, configuration.GetApiService <IHookA>());
            Assert.Equal(multiCastHookPoint1, configuration.GetApiService <IHookB>());

            services = new ServiceCollection()
                       .CutoffPrevious <IHookB>(multiCastHookPoint1)
                       .ChainPrevious <IHookB, HookB>()
                       .AddInstance(new HookB());
            configuration = services.BuildApiConfiguration();
            var multiCastHookPoint2 = configuration.GetApiService <HookB>();
            var handler             = configuration.GetApiService <IHookB>();

            Assert.Equal(multiCastHookPoint2, handler);

            var delegateHandler = handler as HookB;

            Assert.NotNull(delegateHandler);
            Assert.Equal(multiCastHookPoint1, delegateHandler.InnerHandler);
        }