public void Can_register_and_use_closed_to_closed_generic_with_configuration_api()
        {
            var configuration = new LightCoreConfiguration();
            var registrations = new List<Registration>
                                    {
                                        new Registration
                                            {
                                                // LightCore.TestTypes.IRepository`1, LightCore.TestTypes
                                                ContractType = typeof (IRepository<Bar>).AssemblyQualifiedName,
                                                ImplementationType = typeof (BarRepository).AssemblyQualifiedName
                                            }
                                    };

            configuration.Registrations = registrations;

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var repository = container.Resolve<IRepository<Bar>>();

            Assert.That(repository, Is.Not.Null);
            Assert.That(repository, Is.InstanceOf<BarRepository>());
        }
Esempio n. 2
0
        public void Can_register_and_use_generics_with_configuration_api()
        {
            var configuration = new LightCoreConfiguration();
            var registrations = new List<Registration>
                                    {
                                        new Registration
                                            {
                                                ContractType = typeof(IFoo).AssemblyQualifiedName,
                                                ImplementationType = typeof(Foo).AssemblyQualifiedName,
                                                Arguments = new List<Argument>
                                                                {
                                                                    new Argument
                                                                        {
                                                                            Type = "Guid",
                                                                            Value = "354c11f1-94e5-41b8-9a13-122e2df2b0c7"
                                                                        }
                                                                }
                                            }
                                    };

            configuration.Registrations = registrations;

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            Guid expected = new Guid("354c11f1-94e5-41b8-9a13-122e2df2b0c7");

            Assert.AreEqual(expected, ((Foo)container.Resolve<IFoo>()).Arg4);
        }
Esempio n. 3
0
        public void Can_register_and_use_generics_with_configuration_api()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();
                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        // LightCore.TestTypes.IRepository`1, LightCore.TestTypes
                        ContractType       = typeof(IRepository <>).AssemblyQualifiedName,
                        ImplementationType = typeof(Repository <>).AssemblyQualifiedName
                    }
                };

                configuration.Registrations = registrations;

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var repository = container.Resolve <IRepository <Foo> >();

                repository.Should().NotBeNull();
                repository.Should().BeOfType <Repository <Foo> >();
            }
        }
        public void Can_configure_and_resolve_type_registration_with_alias()
        {
            var configuration = new LightCoreConfiguration();

            configuration.TypeAliases.Add(new TypeAlias { Alias = "IBar", Type = typeof(IBar).AssemblyQualifiedName });

            configuration.TypeAliases.Add(new TypeAlias { Alias = "Bar", Type = typeof(Bar).AssemblyQualifiedName });

            var registrations = new List<Registration>
                                    {
                                        new Registration
                                            {
                                                ContractType = "IBar",
                                                ImplementationType = "Bar",
                                            }
                                    };

            configuration.RegistrationGroups.Add(new RegistrationGroup()
            {
                Registrations = registrations
            });

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var bar = container.Resolve<IBar>();

            Assert.NotNull(bar);
        }
Esempio n. 5
0
        public void Can_configure_and_resolve_explicite_type_registration()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();

                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName,
                    }
                };

                configuration.RegistrationGroups.Add(new RegistrationGroup()
                {
                    Registrations = registrations
                });

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var bar = container.Resolve <IBar>();

                bar.Should().NotBeNull();
            }
        }
Esempio n. 6
0
        public void Can_set_lifecycle_full_qualified()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();

                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName,
                        Lifecycle          = typeof(TransientLifecycle).AssemblyQualifiedName
                    }
                };

                configuration.RegistrationGroups.Add(new RegistrationGroup()
                {
                    Registrations = registrations
                });

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var bar    = container.Resolve <IBar>();
                var barTwo = container.Resolve <IBar>();

                bar.Should().NotBeSameAs(barTwo);
            }
        }
        public void Can_configure_and_resolve_with_default_transient_lifecycle()
        {
            var configuration = new LightCoreConfiguration();

            var registrations = new List<Registration>
                                    {
                                        new Registration
                                            {
                                                ContractType = typeof(IBar).AssemblyQualifiedName,
                                                ImplementationType = typeof(Bar).AssemblyQualifiedName,
                                            }
                                    };

            configuration.RegistrationGroups.Add(new RegistrationGroup()
            {
                Registrations = registrations
            });

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var bar = container.Resolve<IBar>();
            var barTwo = container.Resolve<IBar>();

            Assert.AreNotSame(bar, barTwo);
        }
Esempio n. 8
0
        public void Enabled_or_disable_registrations_works()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();

                var registrations = new List <Registration>()
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName,
                        Enabled            = "false"
                    }
                };

                configuration.Registrations = registrations;

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var bar = container.Resolve <IBar>();

                bar.Should().NotBeNull();
            }
        }
Esempio n. 9
0
        public void Can_configure_and_resolve_with_registration_default_singleton_lifecycle()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration {
                    DefaultLifecycle = "Singleton"
                };


                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName,
                    }
                };

                configuration.RegistrationGroups.Add(new RegistrationGroup()
                {
                    Registrations = registrations
                });

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var bar    = container.Resolve <IBar>();
                var barTwo = container.Resolve <IBar>();

                bar.Should().BeSameAs(barTwo);
            }
        }
Esempio n. 10
0
        public void Can_configure_and_resolve_with_default_transient_lifecycle()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();

                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName
                    }
                };

                configuration.RegistrationGroups.Add(new RegistrationGroup()
                {
                    Registrations = registrations
                });

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var bar1 = container.Resolve <IBar>();
                var bar2 = container.Resolve <IBar>();

                bar1.Should().BeOfType <Bar>();
                bar2.Should().BeOfType <Bar>();
                bar1.InstanceId.Should().NotBe(bar2.InstanceId);
            }
        }
        public void Exception_is_thrown_when_a_given_active_group_was_not_found()
        {
            var configuration = new LightCoreConfiguration();
            configuration.ActiveRegistrationGroups = "test";

            configuration.RegistrationGroups = GetTestRegistrationGroups();

            var builder = new ContainerBuilder();

            Assert.Throws<ActiveGroupNotFoundException>(
                () => RegistrationLoader.Instance.Register(builder, configuration));
        }
        public void Can_register_group_configurations()
        {
            var configuration = new LightCoreConfiguration();
            configuration.ActiveRegistrationGroups = "Sql";

            configuration.RegistrationGroups = GetTestRegistrationGroups();

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            builder.Build();
        }
Esempio n. 13
0
        public void Usage_of_global_registrations_and_grouped_registrations_work_together()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration {
                    ActiveRegistrationGroups = "Test"
                };

                var globalRegistrations = new List <Registration>()
                {
                    new Registration
                    {
                        ContractType       = typeof(object).AssemblyQualifiedName,
                        ImplementationType = typeof(object).AssemblyQualifiedName
                    }
                };

                var groupRegistrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IBar).AssemblyQualifiedName,
                        ImplementationType = typeof(Bar).AssemblyQualifiedName
                    }
                };

                configuration.Registrations      = globalRegistrations;
                configuration.RegistrationGroups = new List <RegistrationGroup>
                {
                    new RegistrationGroup
                    {
                        Name          = "Test",
                        Registrations = groupRegistrations
                    }
                };

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var objectInstance = container.Resolve <object>();
                var barInstance    = container.Resolve <IBar>();

                objectInstance.Should().NotBeNull();
                barInstance.Should().NotBeNull();
            }
        }
Esempio n. 14
0
        public void RegistrationLoader_throws_argument_exception_on_missing_contracttype()
        {
            lock (Locker.Lock)
            {
                var builder       = new ContainerBuilder();
                var configuration = new LightCoreConfiguration();
                configuration.Registrations.Add(new Registration {
                    ImplementationType = typeof(object).AssemblyQualifiedName
                });

                Action act = () => RegistrationLoader.Instance.Register(builder, configuration);

                act.ShouldThrow <ArgumentException>();
            }
        }
        public void Can_resolve_active_group_configuration()
        {
            var configuration = new LightCoreConfiguration();
            configuration.ActiveRegistrationGroups = "Xml";

            configuration.RegistrationGroups = GetTestRegistrationGroups();

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            Assert.IsInstanceOf<XmlFoo>(container.Resolve<IFoo>());
        }
Esempio n. 16
0
        public void Exception_is_thrown_when_a_given_active_group_was_not_found()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration
                {
                    ActiveRegistrationGroups = "test",
                    RegistrationGroups       = GetTestRegistrationGroups()
                };


                var builder = new ContainerBuilder();

                Action act = () => RegistrationLoader.Instance.Register(builder, configuration);

                act.ShouldThrow <ActiveGroupNotFoundException>();
            }
        }
Esempio n. 17
0
        public void Can_register_group_configurations()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration
                {
                    ActiveRegistrationGroups = "Sql",
                    RegistrationGroups       = GetTestRegistrationGroups()
                };


                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                builder.Build();
            }
        }
        public void Can_register_and_use_named_arguments()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();
                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IFoo).AssemblyQualifiedName,
                        ImplementationType = typeof(Foo).AssemblyQualifiedName,
                        Arguments          = new List <Argument>
                        {
                            new Argument
                            {
                                Name  = "arg1",
                                Value = "Peter"
                            },
                            new Argument
                            {
                                Name  = "arg2",
                                Value = "true",
                                Type  = "System.Boolean"
                            }
                        }
                    }
                };

                configuration.Registrations = registrations;

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var foo = container.Resolve <IFoo>() as Foo;

                foo.Should().NotBeNull();
                foo.Arg1.Should().Be("Peter");
                foo.Arg2.Should().Be(true);
            }
        }
Esempio n. 19
0
        public void Can_resolve_active_group_configuration()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration
                {
                    ActiveRegistrationGroups = "Xml",
                    RegistrationGroups       = GetTestRegistrationGroups()
                };

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var actual = container.Resolve <IFoo>();

                actual.Should().BeOfType <XmlFoo>();
            }
        }
        public void Can_register_and_use_named_arguments()
        {
            var configuration = new LightCoreConfiguration();
            var registrations = new List<Registration>
                                    {
                                        new Registration
                                            {
                                                ContractType = typeof (IFoo).AssemblyQualifiedName,
                                                ImplementationType = typeof (Foo).AssemblyQualifiedName,
                                                Arguments = new List<Argument>
                                                                {
                                                                    new Argument
                                                                        {
                                                                            Name = "arg1",
                                                                            Value = "Peter"
                                                                        },
                                                                    new Argument
                                                                        {
                                                                            Name = "arg2",
                                                                            Value = "true",
                                                                            Type = "System.Boolean"
                                                                        }
                                                                }
                                            }
                                    };

            configuration.Registrations = registrations;

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var foo = container.Resolve<IFoo>();

            Assert.IsNotNull(foo);
            Assert.AreEqual("Peter", ((Foo)foo).Arg1);
            Assert.AreEqual(true, ((Foo) foo).Arg2);
        }
Esempio n. 21
0
        public void Can_register_and_use_generics_with_configuration_api()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration();
                var registrations = new List <Registration>
                {
                    new Registration
                    {
                        ContractType       = typeof(IFoo).AssemblyQualifiedName,
                        ImplementationType = typeof(Foo).AssemblyQualifiedName,
                        Arguments          = new List <Argument>
                        {
                            new Argument
                            {
                                Type  = "Guid",
                                Value = "354c11f1-94e5-41b8-9a13-122e2df2b0c7"
                            }
                        }
                    }
                };

                configuration.Registrations = registrations;

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var expected = new Guid("354c11f1-94e5-41b8-9a13-122e2df2b0c7");

                var actual = container.Resolve <IFoo>() as Foo;

                actual.Should().NotBeNull();
                actual.Arg4.Should().Be(expected);
            }
        }
Esempio n. 22
0
        public void Can_register_multiple_group_configurations_registered_configuration()
        {
            lock (Locker.Lock)
            {
                var configuration = new LightCoreConfiguration
                {
                    ActiveRegistrationGroups = "Xml, Test",
                    RegistrationGroups       = GetTestRegistrationGroups()
                };

                var builder = new ContainerBuilder();

                RegistrationLoader.Instance.Register(builder, configuration);

                var container = builder.Build();

                var actualFoo   = container.Resolve <IFoo>();
                var actualLorem = container.Resolve <ILorem>();

                actualFoo.Should().BeOfType <XmlFoo>();
                actualLorem.Should().BeOfType <TestLorem>();
            }
        }
Esempio n. 23
0
        public void Enabled_or_disable_registrations_works()
        {
            var configuration = new LightCoreConfiguration();

            var registrations = new List<Registration>()
                                    {
                                        new Registration
                                            {
                                                ContractType = typeof(IBar).AssemblyQualifiedName,
                                                ImplementationType = typeof(Bar).AssemblyQualifiedName,
                                                Enabled = "false"
                                            }
                                    };

            configuration.Registrations = registrations;

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var bar = container.Resolve<IBar>();

            Assert.NotNull(bar);
        }
Esempio n. 24
0
        public void RegistrationLoader_throws_argument_exception_on_missing_contracttype()
        {
            var builder = new ContainerBuilder();
            var configuration = new LightCoreConfiguration();
            configuration.Registrations.Add(new Registration { ImplementationType = typeof(object).AssemblyQualifiedName });

            Assert.That(() => RegistrationLoader.Instance.Register(builder, configuration), Throws.ArgumentException);
        }
Esempio n. 25
0
        public void Usage_of_global_registrations_and_grouped_registrations_work_together()
        {
            var configuration = new LightCoreConfiguration();
            configuration.ActiveRegistrationGroups = "Test";

            var globalRegistrations = new List<Registration>()
                                    {
                                        new Registration
                                            {
                                                ContractType = typeof(object).AssemblyQualifiedName,
                                                ImplementationType = typeof(object).AssemblyQualifiedName
                                            }
                                    };

            var groupRegistrations = new List<Registration>
                                         {
                                             new Registration
                                                 {
                                                     ContractType = typeof(IBar).AssemblyQualifiedName,
                                                     ImplementationType = typeof(Bar).AssemblyQualifiedName
                                                 }
                                         };

            configuration.Registrations = globalRegistrations;
            configuration.RegistrationGroups = new List<RegistrationGroup>
                                                   {
                                                       new RegistrationGroup
                                                           {
                                                               Name = "Test",
                                                               Registrations = groupRegistrations
                                                           }
                                                   };

            var builder = new ContainerBuilder();

            RegistrationLoader.Instance.Register(builder, configuration);

            var container = builder.Build();

            var objectInstance = container.Resolve<object>();
            var barInstance = container.Resolve<IBar>();

            Assert.NotNull(objectInstance);
            Assert.NotNull(barInstance);
        }