Exemplo n.º 1
0
        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" });
            }
        }
Exemplo n.º 2
0
        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)));
        }
Exemplo n.º 3
0
        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 });
        }
Exemplo n.º 4
0
        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" });
            }
        }
Exemplo n.º 5
0
        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 });
            }
        }
Exemplo n.º 6
0
        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)));
        }
Exemplo n.º 7
0
        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 });
        }
Exemplo n.º 8
0
        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 });
        }
Exemplo n.º 9
0
        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)));
        }
Exemplo n.º 10
0
        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" });
                }
            }
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
 public TestContext()
 {
     MockServiceProvider
     .Setup(x => x.GetService(typeof(IEnumerable <INotificationHandler <object> >)))
     .Returns(MockNotificationHandlers.Select(x => x.Object));
 }
Exemplo n.º 15
0
 public TestContext()
 {
     MockServiceProvider
     .Setup(x => x.GetService(typeof(IOptions <TOptions>)))
     .Returns(() => MockOptions.Object);
 }