public void TestAdd()
        {
            // create registration
            var registration = new MultiRegistration(new[] { new DirectRegistration <DummyService>() });

            // assert that there is only a single item in the registration
            Assert.Single(registration.Registrations);

            // Add new registration
            registration.Add(new DirectRegistration <DummyService>());

            // assert that item count increased
            Assert.Equal(2, registration.Registrations.Count);
        }
        public void TestAddInconsistent()
        {
            // create registration
            var registration = new MultiRegistration(new[] {
                new DirectRegistration <DummyService>().AsTransient()
            });

            // assert that there is only a single item in the registration
            Assert.Single(registration.Registrations);

            // Add new registration
            Assert.Throws <InvalidOperationException>(
                () => registration.Add(new DirectRegistration <DummyService>().AsScoped()));

            // assert that there is only a single item in the registration
            Assert.Single(registration.Registrations);
        }
        public void TestAddRange()
        {
            // create registration
            var registration = new MultiRegistration(new[] { new DirectRegistration <DummyService>() });

            // assert that there is only a single item in the registration
            Assert.Single(registration.Registrations);

            // Add new registrations
            registration.AddRange((IEnumerable <IServiceRegistration>) new[] {
                new DirectRegistration <DummyService>(),
                new DirectRegistration <DummyService>()
            });

            // assert that item count increased
            Assert.Equal(3, registration.Registrations.Count);
        }
        public void TestInconsistenceAfterConstruction()
        {
            var registration1     = new DirectRegistration <DummyService>().AsSingleton();
            var registration2     = new DirectRegistration <DummyService>().AsSingleton();
            var registrations     = new IServiceRegistration[] { registration1, registration2 };
            var multiRegistration = new MultiRegistration(registrations);

            // change the lifetime of a service
            registration1.AsScoped();

            using (var container = new RootContainer())
            {
                container.Register <IDummyService>(multiRegistration);
                var enumerable = container.ResolveAll <IDummyService>();

                // create services
                Assert.Throws <InvalidOperationException>(enumerable.ToArray);
            }
        }