public static IEnumerable <object[]> AddService_TypeObject_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(int), null); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(int), null); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(int), null); var o = new object(); foreach (IServiceProvider parentProvider in new object[] { null, nullServiceProvider, invalidServiceProvider, validServiceProvider }) { yield return(new object[] { parentProvider, typeof(object), o, o }); yield return(new object[] { parentProvider, typeof(object), "abc", "abc" }); yield return(new object[] { parentProvider, typeof(string), "abc", "abc" }); } }
public void AddService_PromoteServiceCallbackithValidGrandParentProvider_AddsToGrandParent() { var serviceInstance = new object(); var grandparentContainer = new ServiceContainer(); var grandparentProvider = new MockServiceProvider(); grandparentProvider.Setup(typeof(IServiceContainer), grandparentContainer); grandparentProvider.Setup(typeof(object), null); var parentContainer = new ServiceContainer(grandparentProvider); var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); parentProvider.Setup(typeof(object), null); var container = new ServiceContainer(parentProvider); ServiceCreatorCallback callback = (c, serviceType) => { Assert.Same(grandparentContainer, c); Assert.Equal(typeof(object), serviceType); return(serviceInstance); }; container.AddService(typeof(object), callback, promote: true); Assert.Null(container.GetService(typeof(object))); Assert.Null(parentContainer.GetService(typeof(object))); Assert.Same(serviceInstance, grandparentContainer.GetService(typeof(object))); }
public static IEnumerable <object[]> RemoveService_TypeBool_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(int), null); yield return(new object[] { nullServiceProvider, true }); yield return(new object[] { nullServiceProvider, false }); // .NET Core fixes an InvalidCastException bug. if (!PlatformDetection.IsFullFramework) { var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(int), null); yield return(new object[] { invalidServiceProvider, true }); yield return(new object[] { invalidServiceProvider, false }); } var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(int), null); yield return(new object[] { validServiceProvider, false }); }
public static IEnumerable <object[]> AddService_TypeObject_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(int), null); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(int), null); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(int), null); var o = new object(); foreach (IServiceProvider parentProvider in new object[] { null, nullServiceProvider, invalidServiceProvider, validServiceProvider }) { // .NET Core fixes an InvalidCastException bug. if (PlatformDetection.IsFullFramework && parentProvider == invalidServiceProvider) { continue; } yield return(new object[] { parentProvider, typeof(object), o, o }); yield return(new object[] { parentProvider, typeof(object), "abc", "abc" }); yield return(new object[] { parentProvider, typeof(string), "abc", "abc" }); } }
public static IEnumerable <object[]> AddService_TypeServiceCreatorCallbackBool_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(object), null); nullServiceProvider.Setup(typeof(int), null); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(object), null); invalidServiceProvider.Setup(typeof(int), null); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(object), null); validServiceProvider.Setup(typeof(int), null); var o = new object(); ServiceCreatorCallback callback = (container, serviceType) => "abc"; ServiceCreatorCallback nullCallback = (container, serviceType) => null; foreach (bool promote in new bool[] { true, false }) { foreach (IServiceProvider parentProvider in new object[] { null, nullServiceProvider, invalidServiceProvider, validServiceProvider }) { if (promote && parentProvider == validServiceProvider) { continue; } // .NET Core fixes an InvalidCastException bug. if (PlatformDetection.IsFullFramework && parentProvider == invalidServiceProvider) { continue; } yield return(new object[] { parentProvider, typeof(object), callback, promote, "abc" }); yield return(new object[] { parentProvider, typeof(string), callback, promote, "abc" }); yield return(new object[] { parentProvider, typeof(int), callback, promote, null }); yield return(new object[] { parentProvider, typeof(object), nullCallback, promote, null }); yield return(new object[] { parentProvider, typeof(int), nullCallback, promote, null }); } var customServiceProvider = new MockServiceProvider(); customServiceProvider.Setup(typeof(IServiceContainer), null); customServiceProvider.Setup(typeof(int), o); yield return(new object[] { customServiceProvider, typeof(int), callback, promote, o }); } }
public void AddService_PromoteServiceInstanceWithValidParentProvider_AddsToParent() { var serviceInstance = new object(); var parentContainer = new ServiceContainer(); var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); parentProvider.Setup(typeof(object), null); var container = new ServiceContainer(parentProvider); container.AddService(typeof(object), serviceInstance, promote: true); Assert.Null(container.GetService(typeof(object))); Assert.Same(serviceInstance, parentContainer.GetService(typeof(object))); }
public static IEnumerable <object[]> AddService_TypeServiceCreatorCallback_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(object), null); nullServiceProvider.Setup(typeof(int), null); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(object), null); invalidServiceProvider.Setup(typeof(int), null); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(object), null); validServiceProvider.Setup(typeof(int), null); var o = new object(); ServiceCreatorCallback callback = (container, serviceType) => "abc"; ServiceCreatorCallback nullCallback = (container, serviceType) => null; foreach (IServiceProvider parentProvider in new object[] { null, nullServiceProvider, invalidServiceProvider, validServiceProvider }) { yield return(new object[] { parentProvider, typeof(object), callback, "abc" }); yield return(new object[] { parentProvider, typeof(string), callback, "abc" }); yield return(new object[] { parentProvider, typeof(int), callback, null }); yield return(new object[] { parentProvider, typeof(object), nullCallback, null }); yield return(new object[] { parentProvider, typeof(int), nullCallback, null }); } var customServiceProvider = new MockServiceProvider(); customServiceProvider.Setup(typeof(int), o); yield return(new object[] { customServiceProvider, typeof(int), callback, o }); }
public static IEnumerable <object[]> RemoveService_Type_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(int), null); yield return(new object[] { nullServiceProvider }); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(int), null); yield return(new object[] { invalidServiceProvider }); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(int), null); yield return(new object[] { validServiceProvider }); }
public void RemoveService_PromoteServiceInstanceWithValidGrandParentProvider_RemovesFromGrandParent() { var serviceInstance = new object(); var grandparentContainer = new ServiceContainer(); var grandparentProvider = new MockServiceProvider(); grandparentProvider.Setup(typeof(IServiceContainer), grandparentContainer); grandparentProvider.Setup(typeof(object), null); var parentContainer = new ServiceContainer(grandparentProvider); var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); parentProvider.Setup(typeof(object), null); var container = new ServiceContainer(parentProvider); container.AddService(typeof(object), serviceInstance, promote: true); container.RemoveService(typeof(object), promote: true); Assert.Null(container.GetService(typeof(object))); Assert.Null(parentContainer.GetService(typeof(object))); Assert.Null(grandparentContainer.GetService(typeof(object))); }
public static IEnumerable <object[]> AddService_TypeObjectBool_TestData() { var nullServiceProvider = new MockServiceProvider(); nullServiceProvider.Setup(typeof(IServiceContainer), null); nullServiceProvider.Setup(typeof(int), null); var invalidServiceProvider = new MockServiceProvider(); invalidServiceProvider.Setup(typeof(IServiceContainer), new object()); invalidServiceProvider.Setup(typeof(int), null); var validServiceProvider = new MockServiceProvider(); validServiceProvider.Setup(typeof(IServiceContainer), new ServiceContainer()); validServiceProvider.Setup(typeof(int), null); var o = new object(); foreach (bool promote in new bool[] { true, false }) { foreach (IServiceProvider parentProvider in new object[] { null, nullServiceProvider, invalidServiceProvider, validServiceProvider }) { if (promote && parentProvider == validServiceProvider) { continue; } yield return(new object[] { parentProvider, typeof(object), o, promote, o }); yield return(new object[] { parentProvider, typeof(object), "abc", promote, "abc" }); yield return(new object[] { parentProvider, typeof(string), "abc", promote, "abc" }); } } }
public void RemoveService_Promote_Success(Type serviceType) { var parentContainer = new CustomServiceContainer(); int removeServiceCallCount = 0; parentContainer.RemoveServiceAction = (callbackServiceType, callbackPromote) => { Assert.Same(serviceType, callbackServiceType); Assert.True(callbackPromote); removeServiceCallCount++; }; var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); var container = new ServiceContainer(parentProvider); container.RemoveService(serviceType, promote: true); Assert.Equal(1, removeServiceCallCount); }
public void AddService_PromoteCallback_Success(Type serviceType, ServiceCreatorCallback callback) { var parentContainer = new CustomServiceContainer(); int addServiceCallCount = 0; parentContainer.AddServiceCallbackAction = (callbackServiceType, callbackCallback, callbackPromote) => { Assert.Same(serviceType, callbackServiceType); Assert.Same(callback, callbackCallback); Assert.True(callbackPromote); addServiceCallCount++; }; var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); var container = new ServiceContainer(parentProvider); container.AddService(serviceType, callback, promote: true); Assert.Equal(1, addServiceCallCount); }
public void AddService_PromoteObject_Success(Type serviceType, object serviceInstance) { var parentContainer = new CustomServiceContainer(); int addServiceCallCount = 0; parentContainer.AddServiceObjectAction = (callbackServiceType, callbackServiceInstance, callbackPromote) => { Assert.Same(serviceType, callbackServiceType); Assert.Same(serviceInstance, callbackServiceInstance); Assert.True(callbackPromote); addServiceCallCount++; }; var parentProvider = new MockServiceProvider(); parentProvider.Setup(typeof(IServiceContainer), parentContainer); var container = new ServiceContainer(parentProvider); container.AddService(serviceType, serviceInstance, promote: true); Assert.Equal(1, addServiceCallCount); }
public TestContext() { MockServiceProvider .Setup(x => x.GetService(typeof(IEnumerable <INotificationHandler <object> >))) .Returns(MockNotificationHandlers.Select(x => x.Object)); }
public TestContext() { MockServiceProvider .Setup(x => x.GetService(typeof(IOptions <TOptions>))) .Returns(() => MockOptions.Object); }