コード例 #1
0
            public void The_root_resolver_resolves_from_secondary_resolvers_and_roots()
            {
                var attributeProvider1 = new Mock <AttributeProvider>().Object;
                var attributeProvider2 = new Mock <AttributeProvider>().Object;

                var mockSecondaryResolver1 = new Mock <IDbDependencyResolver>();

                mockSecondaryResolver1.Setup(m => m.GetServices(typeof(AttributeProvider), null)).Returns(new object[] { attributeProvider1 });
                var mockSecondaryResolver2 = new Mock <IDbDependencyResolver>();

                mockSecondaryResolver2.Setup(m => m.GetServices(typeof(AttributeProvider), null)).Returns(new object[] { attributeProvider2 });

                var rootResolver = new RootDependencyResolver();

                var defaultProvider = rootResolver.GetServices <AttributeProvider>().Single();

                Assert.IsType <AttributeProvider>(defaultProvider);

                rootResolver.AddSecondaryResolver(mockSecondaryResolver1.Object);
                rootResolver.AddSecondaryResolver(mockSecondaryResolver2.Object);

                var attributeProviders = rootResolver.GetServices <AttributeProvider>().ToList();

                Assert.Equal(3, attributeProviders.Count);
                Assert.Same(attributeProvider2, attributeProviders[0]);
                Assert.Same(attributeProvider1, attributeProviders[1]);
                Assert.Same(defaultProvider, attributeProviders[2]);
            }
コード例 #2
0
        public virtual void AddSecondaryResolver(IDbDependencyResolver resolver)
        {
            DebugCheck.NotNull(resolver);

            // Secondary resolvers only kick in if nothing else before the root resolves the dependency.
            _rootResolver.AddSecondaryResolver(resolver);
        }
コード例 #3
0
            public void GetServices_can_be_accessed_from_multiple_threads_concurrently()
            {
                for (var i = 0; i < 30; i++)
                {
                    var bag = new ConcurrentBag <AttributeProvider>();

                    var resolver = new RootDependencyResolver();
                    resolver.AddSecondaryResolver(new SingletonDependencyResolver <AttributeProvider>(new AttributeProvider()));
                    resolver.AddSecondaryResolver(new SingletonDependencyResolver <AttributeProvider>(new AttributeProvider()));

                    ExecuteInParallel(() => resolver.GetServices <AttributeProvider>().Each(bag.Add));

                    Assert.Equal(60, bag.Count);
                    Assert.True(bag.All(c => c.GetType() == typeof(AttributeProvider)));
                }
            }
コード例 #4
0
            public void The_root_resolver_resolves_from_secondary_resolvers_before_roots()
            {
                var attributeProvider1 = new Mock <AttributeProvider>().Object;
                var attributeProvider2 = new Mock <AttributeProvider>().Object;

                var mockSecondaryResolver1 = new Mock <IDbDependencyResolver>();

                mockSecondaryResolver1.Setup(m => m.GetService(typeof(AttributeProvider), null)).Returns(attributeProvider1);
                var mockSecondaryResolver2 = new Mock <IDbDependencyResolver>();

                mockSecondaryResolver2.Setup(m => m.GetService(typeof(AttributeProvider), null)).Returns(attributeProvider2);

                var rootResolver = new RootDependencyResolver();

                Assert.IsType <AttributeProvider>(rootResolver.GetService <AttributeProvider>());

                rootResolver.AddSecondaryResolver(mockSecondaryResolver1.Object);
                Assert.Same(attributeProvider1, rootResolver.GetService <AttributeProvider>());

                rootResolver.AddSecondaryResolver(mockSecondaryResolver2.Object);
                Assert.Same(attributeProvider2, rootResolver.GetService <AttributeProvider>());
            }
コード例 #5
0
            public void GetServices_can_be_accessed_from_multiple_threads_concurrently()
            {
                for (var i = 0; i < 30; i++)
                {
                    var bag = new ConcurrentBag<AttributeProvider>();

                    var resolver = new RootDependencyResolver();
                    resolver.AddSecondaryResolver(new SingletonDependencyResolver<AttributeProvider>(new AttributeProvider()));
                    resolver.AddSecondaryResolver(new SingletonDependencyResolver<AttributeProvider>(new AttributeProvider()));

                    ExecuteInParallel(() => resolver.GetServices<AttributeProvider>().Each(bag.Add));

                    Assert.Equal(60, bag.Count);
                    Assert.True(bag.All(c => c.GetType() == typeof(AttributeProvider)));
                }
            }
コード例 #6
0
            public void The_root_resolver_resolves_from_secondary_resolvers_and_roots()
            {
                var attributeProvider1 = new Mock<AttributeProvider>().Object;
                var attributeProvider2 = new Mock<AttributeProvider>().Object;

                var mockSecondaryResolver1 = new Mock<IDbDependencyResolver>();
                mockSecondaryResolver1.Setup(m => m.GetServices(typeof(AttributeProvider), null)).Returns(new object[] { attributeProvider1 });
                var mockSecondaryResolver2 = new Mock<IDbDependencyResolver>();
                mockSecondaryResolver2.Setup(m => m.GetServices(typeof(AttributeProvider), null)).Returns(new object[] { attributeProvider2 });

                var rootResolver = new RootDependencyResolver();

                var defaultProvider = rootResolver.GetServices<AttributeProvider>().Single();
                Assert.IsType<AttributeProvider>(defaultProvider);

                rootResolver.AddSecondaryResolver(mockSecondaryResolver1.Object);
                rootResolver.AddSecondaryResolver(mockSecondaryResolver2.Object);

                var attributeProviders = rootResolver.GetServices<AttributeProvider>().ToList();
                
                Assert.Equal(3, attributeProviders.Count);
                Assert.Same(attributeProvider2, attributeProviders[0]);
                Assert.Same(attributeProvider1, attributeProviders[1]);
                Assert.Same(defaultProvider, attributeProviders[2]);
            }
コード例 #7
0
            public void The_root_resolver_resolves_from_secondary_resolvers_before_roots()
            {
                var attributeProvider1 = new Mock<AttributeProvider>().Object;
                var attributeProvider2 = new Mock<AttributeProvider>().Object;

                var mockSecondaryResolver1 = new Mock<IDbDependencyResolver>();
                mockSecondaryResolver1.Setup(m => m.GetService(typeof(AttributeProvider), null)).Returns(attributeProvider1);
                var mockSecondaryResolver2 = new Mock<IDbDependencyResolver>();
                mockSecondaryResolver2.Setup(m => m.GetService(typeof(AttributeProvider), null)).Returns(attributeProvider2);

                var rootResolver = new RootDependencyResolver();

                Assert.IsType<AttributeProvider>(rootResolver.GetService<AttributeProvider>());

                rootResolver.AddSecondaryResolver(mockSecondaryResolver1.Object);
                Assert.Same(attributeProvider1, rootResolver.GetService<AttributeProvider>());

                rootResolver.AddSecondaryResolver(mockSecondaryResolver2.Object);
                Assert.Same(attributeProvider2, rootResolver.GetService<AttributeProvider>());
            }