public void GetServices_returns_empty_list_if_no_resolver_in_the_chain_resolves_the_dependency() { var mockResolver1 = CreateMockResolver("Steve", new Mock <IPilkington>().Object); var mockResolver2 = CreateMockResolver("Ricky", new Mock <IPilkington>().Object); var chain = new ResolverChain(); chain.Add(mockResolver1.Object); chain.Add(mockResolver2.Object); Assert.Empty(chain.GetServices <IPilkington>("Karl")); mockResolver1.Verify(m => m.GetServices(typeof(IPilkington), "Karl"), Times.Once()); mockResolver2.Verify(m => m.GetServices(typeof(IPilkington), "Karl"), Times.Once()); }
public void GetServices_and_Add_can_be_accessed_from_multiple_threads_concurrently() { for (var i = 0; i < 30; i++) { var bag = new ConcurrentBag <IPilkington>(); var resolver = new ResolverChain(); var karl = new Karl(); ExecuteInParallel( () => { resolver.Add(new SingletonDependencyResolver <IPilkington>(karl, "Karl")); resolver.GetServices <IPilkington>("Karl").Each(bag.Add); }); Assert.True(bag.Count >= 20); Assert.True(bag.All(c => karl == c)); } }
public void GetServices_returns_all_the_services_that_match_the_given_type_and_key() { var karl1a = new Mock <IPilkington>().Object; var karl1b = new Mock <IPilkington>().Object; var mockResolver1 = new Mock <IDbDependencyResolver>(); mockResolver1 .Setup(m => m.GetServices(typeof(IPilkington), "Karl")) .Returns(new object[] { karl1a, karl1b }); var karl2a = new Mock <IPilkington>().Object; var karl2b = new Mock <IPilkington>().Object; var mockResolver2 = new Mock <IDbDependencyResolver>(); mockResolver2 .Setup(m => m.GetServices(typeof(IPilkington), "Karl")) .Returns(new object[] { karl2a, karl2b }); var mockResolver3 = CreateMockResolver("Ricky", new Mock <IPilkington>().Object); var chain = new ResolverChain(); chain.Add(mockResolver1.Object); chain.Add(mockResolver2.Object); chain.Add(mockResolver3.Object); var pilkingtons = chain.GetServices <IPilkington>("Karl").ToList(); Assert.Equal(4, pilkingtons.Count); Assert.Same(karl2a, pilkingtons[0]); Assert.Same(karl2b, pilkingtons[1]); Assert.Same(karl1a, pilkingtons[2]); Assert.Same(karl1b, pilkingtons[3]); mockResolver1.Verify(m => m.GetServices(typeof(IPilkington), "Karl"), Times.Once()); mockResolver2.Verify(m => m.GetServices(typeof(IPilkington), "Karl"), Times.Once()); mockResolver3.Verify(m => m.GetServices(typeof(IPilkington), "Karl"), Times.Once()); }
public IEnumerable <object> GetServices(Type type, object key) { return(_defaultResolvers.GetServices(type, key).Concat(_resolvers.GetServices(type, key))); }