Exemple #1
0
        private static IKeyedServiceRegister GetRegistrar()
        {
            var registrar = new KeyedServiceRegistrar(new ServiceCollection());

            registrar.Add <IMyService, MyService1>(AvailableServices.Service1);
            registrar.Add <IMyService, MyService2>(AvailableServices.Service2);
            registrar.Add <IMyService, MyService1>("Service1");
            registrar.Add <IMyService, MyService2>("Service2");
            return(registrar);
        }
Exemple #2
0
        public void Services()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            // Act
            var keyedSvcRegistrar = new KeyedServiceRegistrar(serviceCollection);
            var actualServices    = keyedSvcRegistrar.Services;

            // Assert
            Assert.That(actualServices, Is.SameAs(serviceCollection));
        }
Exemple #3
0
        public void LookUp_DoesNotExist()
        {
            // Arrange
            var services  = new ServiceCollection();
            var registrar = new KeyedServiceRegistrar(services);

            // Act
            registrar.Add <IMyService, MyService1>("MY_KEY");
            Type t = registrar.LookUp <IMyService>("DOES_NOT_EXIST");

            // Assert
            Assert.That(t, Is.Null);
        }
Exemple #4
0
        public void Add_LookUp()
        {
            // Arrange
            var services  = new ServiceCollection();
            var registrar = new KeyedServiceRegistrar(services);

            // Act
            registrar.Add <IMyService, MyService1>("MY_KEY");
            Type t = registrar.LookUp <IMyService>("MY_KEY");

            // Assert
            Assert.That(t, Is.EqualTo(typeof(MyService1)));
        }
Exemple #5
0
        public void Add_InterfaceIsNull()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();
            var registrar         = new KeyedServiceRegistrar(serviceCollection);

            // Act
            // ReSharper disable once AssignNullToNotNullAttribute
            var ex = Assert.Throws <ArgumentNullException>(() => registrar.Add(null, typeof(MyService1), "KEY"));

            // Assert
            Assert.That(ex.ParamName, Is.EqualTo("interfaceType"));
        }
Exemple #6
0
        public void LookUp_InterfaceTypeIsNull()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();
            var registrar         = new KeyedServiceRegistrar(serviceCollection);

            // Act
            // ReSharper disable once MustUseReturnValue
            // ReSharper disable once AssignNullToNotNullAttribute
            var ex = Assert.Throws <ArgumentNullException>(() => registrar.LookUp(null, key: "KEY"));

            // Assert
            Assert.That(ex.ParamName, Is.EqualTo("interfaceType"));
        }
Exemple #7
0
        public void AddScoped()
        {
            // Arrange
            var services  = new ServiceCollection();
            var registrar = new KeyedServiceRegistrar(services);

            // Act
            registrar.AddScoped <IMyService, MyService1>("MY_KEY");

            var provider = services.BuildServiceProvider();
            var svc1     = provider.GetService <IMyService>("MY_KEY");
            var svc2     = provider.GetService <MyService1>();

            // Assert
            Assert.That(svc1, Is.InstanceOf <MyService1>());
            Assert.That(svc1, Is.SameAs(svc2));
        }
Exemple #8
0
        public void RegistersTypes()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            var keyedSvcRegistrar = new KeyedServiceRegistrar(serviceCollection);
            var services          = serviceCollection.BuildServiceProvider();

            // Act
            var registrar = services.GetService <IKeyedServiceRegistrar>();
            var register  = services.GetService <IKeyedServiceRegister>();
            var factory   = services.GetService <IKeyedServiceFactory>();

            // Assert
            Assert.That(registrar, Is.SameAs(keyedSvcRegistrar));
            Assert.That(register, Is.SameAs(keyedSvcRegistrar));
            Assert.That(factory, Is.InstanceOf <KeyedServiceFactory>());
        }
Exemple #9
0
        public void AddTransient_Delegate()
        {
            // Arrange
            var services  = new ServiceCollection();
            var registrar = new KeyedServiceRegistrar(services);

            // Act
            var svc = new MyService1();

            registrar.AddTransient <IMyService, MyService1>("MY_KEY", s => svc);

            var provider = services.BuildServiceProvider();
            var svc1     = provider.GetService <IMyService>("MY_KEY");
            var svc2     = provider.GetService <MyService1>();

            // Assert
            Assert.That(svc1, Is.SameAs(svc));
            Assert.That(svc1, Is.SameAs(svc2));
        }
Exemple #10
0
        public void Resolve_Enumerable()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            var registrar = new KeyedServiceRegistrar(serviceCollection);

            registrar.Services.AddTransient <IMyService, MyService1>(AvailableServices.Service1);
            registrar.Services.AddTransient <IMyService, MyService2>(AvailableServices.Service2);
            serviceCollection.AddTransient <MyServiceHostArray>();
            var services = serviceCollection.BuildServiceProvider();

            // Act
            var host = services.GetService <MyServiceHostArray>();

            // Assert
            Assert.That(host.Services, Has.Length.EqualTo(2));
            Assert.That(host.Services[0], Is.InstanceOf <MyService1>());
            Assert.That(host.Services[1], Is.InstanceOf <MyService2>());
        }
Exemple #11
0
        public void AddServices_ByEnum()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            var registrar = new KeyedServiceRegistrar(serviceCollection);

            registrar.AddTransient <IMyService, MyService1>(AvailableServices.Service1);
            registrar.AddTransient <IMyService, MyService2>(AvailableServices.Service2);

            var services = serviceCollection.BuildServiceProvider();

            // Act
            //// var factory = services.GetService<IKeyedServiceFactory>();
            var service1 = services.GetService <IMyService>(AvailableServices.Service1);
            var service2 = services.GetService <IMyService>(AvailableServices.Service2);

            // Assert
            Assert.That(service1, Is.InstanceOf <MyService1>());
            Assert.That(service2, Is.InstanceOf <MyService2>());
        }
Exemple #12
0
        public void AddServices_ByName()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            var registrar = new KeyedServiceRegistrar(serviceCollection);

            registrar.AddTransient <IMyService, MyService1>("SERVICE1");
            registrar.AddTransient <IMyService, MyService2>("SERVICE2");

            var services = serviceCollection.BuildServiceProvider();

            // Act
            var factory  = services.GetService <IKeyedServiceFactory>();
            var service1 = factory.GetService <IMyService>("SERVICE1");
            var service2 = factory.GetService <IMyService>("SERVICE2");

            // Assert
            Assert.That(service1, Is.InstanceOf <MyService1>());
            Assert.That(service2, Is.InstanceOf <MyService2>());
        }
Exemple #13
0
        public void Resolve_Func()
        {
            // Arrange
            var serviceCollection = new ServiceCollection();

            var registrar = new KeyedServiceRegistrar(serviceCollection);

            registrar.AddTransient <IMyService, MyService1>(AvailableServices.Service1);
            registrar.AddTransient <IMyService, MyService2>(AvailableServices.Service2);
            serviceCollection.AddTransient <MyServiceHostFunc>();
            serviceCollection.AddTransient <Func <object, IMyService> >(s => s.GetService <IMyService>);
            var services = serviceCollection.BuildServiceProvider();

            // Act
            var host = services.GetService <MyServiceHostFunc>();

            Assert.That(host.Factory, Is.Not.Null);
            var svc1 = host.Factory(AvailableServices.Service1);
            var svc2 = host.Factory(AvailableServices.Service2);

            // Assert
            Assert.That(svc1, Is.InstanceOf <MyService1>());
            Assert.That(svc2, Is.InstanceOf <MyService2>());
        }