public void FeatureSwitcherRegistrationExtensions_Lifecycle_DisposeTransient_Test()
        {
            var mockBehaviour = new MockBooleanBehaviour(false);

            FeatureSwitcher.Configuration.Features.Are.ConfiguredBy.Custom(mockBehaviour.Behaviour);

            WindsorContainer container = new WindsorContainer();

            container.AddFacility <FeatureSwitcherFacility>();

            container.Kernel.Register(
                Component.For <ServiceConsumer>()
                .LifestyleTransient(),
                FeatureSwitch.For <IService>()
                .UsingFeature <TestFeature>()
                .ImplementedBy <ServiceEnabled, ServiceDisabled>()
                .Configure(c => c.LifestyleTransient()));

            var actualConsumer = container.Resolve <ServiceConsumer>();

            container.Release(actualConsumer);

            Assert.True(actualConsumer.Disposed);
            Assert.True(actualConsumer.Service.Disposed);
        }
        private IService Test(bool enabled)
        {
            var mockBehaviour = new MockBooleanBehaviour(enabled);
            FeatureSwitcher.Configuration.Features.Are.ConfiguredBy.Custom(mockBehaviour.Behaviour);

            WindsorContainer container = new WindsorContainer();
            container.AddFacility<FeatureSwitcherFacility>();

            container.Kernel.Register(
                FeatureSwitch.For<IService>()
                    .UsingFeature<TestFeature>()
                    .ImplementedBy<ServiceEnabled, ServiceDisabled>()
                    .Configure(c => c.LifestyleTransient()));

            var actualService = container.Resolve<IService>();
            return actualService;
        }
        private IService Test(bool enabled)
        {
            var mockBehaviour = new MockBooleanBehaviour(enabled);

            FeatureSwitcher.Configuration.Features.Are.ConfiguredBy.Custom(mockBehaviour.Behaviour);

            WindsorContainer container = new WindsorContainer();

            container.AddFacility <FeatureSwitcherFacility>();

            container.Kernel.Register(
                FeatureSwitch.For <IService>()
                .UsingFeature <TestFeature>()
                .ImplementedBy <ServiceEnabled, ServiceDisabled>()
                .Configure(c => c.LifestyleTransient()));

            var actualService = container.Resolve <IService>();

            return(actualService);
        }
        public void FeatureSwitcherRegistrationExtensions_Lifecycle_DoNotDisposeSingleton_Test()
        {
            var mockBehaviour = new MockBooleanBehaviour(false);
            FeatureSwitcher.Configuration.Features.Are.ConfiguredBy.Custom(mockBehaviour.Behaviour);

            WindsorContainer container = new WindsorContainer();
            container.AddFacility<FeatureSwitcherFacility>();

            container.Kernel.Register(
                Component.For<ServiceConsumer>()
                    .LifestyleTransient(),
                FeatureSwitch.For<IService>()
                    .UsingFeature<TestFeature>()
                    .ImplementedBy<ServiceEnabled, ServiceDisabled>());

            var actualConsumer = container.Resolve<ServiceConsumer>();
            container.Release(actualConsumer);

            Assert.True(actualConsumer.Disposed);
            Assert.False(actualConsumer.Service.Disposed);
        }