public void Discover_throws_TypeDiscoveryException_on_registrar_error()
        {
            using (var container = new UnityContainer())
            {
                void RegistrationAction(IUnityContainer c) => throw new Exception("Failed!");

                container.RegisterInstance((Action <IUnityContainer>)RegistrationAction);
                var discoverer = new IocRegistrarTypeDiscoverer();
                Assert.That(
                    () => discoverer.Discover(container),
                    Throws.Exception.TypeOf <TypeDiscoveryException>());
            }
        }
        public void Discover_runs_and_resolves_the_CallTrackingRegistrar_Register_method()
        {
            using (var container = new UnityContainer())
            {
                var callCount = 0;
                void RegistrationAction(IUnityContainer c) => callCount++;

                container.RegisterInstance((Action <IUnityContainer>)RegistrationAction);
                var discoverer = new IocRegistrarTypeDiscoverer();
                discoverer.Discover(container);

                Assert.That(CallTrackingRegistrar.RegisterCallCount, Is.GreaterThan(0));
            }
        }
        public void Discover_runs_and_resolves_the_ActionInvokingRegistrar_Register_method()
        {
            using (var container = new UnityContainer())
            {
                var callCount = 0;

                void RegistrationAction(IUnityContainer c)
                {
                    callCount++;
                    c.RegisterType <TestingNestedClass>();
                }

                container.RegisterInstance((Action <IUnityContainer>)RegistrationAction);
                var discoverer = new IocRegistrarTypeDiscoverer();
                discoverer.Discover(container);
                Assert.That(callCount, Is.EqualTo(1));
                Assert.That(
                    container.Registrations.Any(r => r.RegisteredType == typeof(TestingNestedClass)),
                    Is.True,
                    $"Expected the registration action to be called and have registered the {typeof(TestingNestedClass).FullName} type.");
            }
        }