public void GetServices_returns_instance_of_contract_interface_only_when_key_predicate_matches() { var instance = new Mock <IPilkington>().Object; var resolver = new SingletonDependencyResolver <IPilkington>(instance, k => k != null && ((string)k).StartsWith("K")); Assert.Same(instance, resolver.GetServices <IPilkington>("Karl").Single()); Assert.Empty(resolver.GetServices <IPilkington>("Ricky")); Assert.Empty(resolver.GetServices <IPilkington>()); Assert.Empty(resolver.GetServices <IGervais>("Ricky")); }
public void GetServices_can_be_accessed_from_multiple_threads_concurrently() { for (var i = 0; i < 30; i++) { var bag = new ConcurrentBag <IPilkington>(); var karl = new Mock <IPilkington>().Object; var resolver = new SingletonDependencyResolver <IPilkington>(karl, "Karl"); ExecuteInParallel(() => bag.Add(resolver.GetServices <IPilkington>("Karl").Single())); Assert.Equal(20, bag.Count); Assert.True(bag.All(c => karl == c)); } }