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()); }
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()); }
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); }