public void BuilderTest_FeatureWithStrategiesSameOrder_ValidateThrows()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(context => context.AddFeature<FeatureWithSameOrderStrategy>());

            Assert.Throws<ConfigurationErrorsException>(() => container.ValidateConfiguration());
        }
        public void ConfigureFeatureSwitch(IAppBuilder app)
        {
            var builder = new FeatureSetBuilder(new StructureMapDependencyContainer());
            builder.Build();

            app.MapFeatureSwitch(); //.WithRoles("Administrators");
        }
        public void BuilderTest_2ndLevelInheritance_NonAddedFeatureNotFound()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(context => context.AddFeature<MySample2ndLevelFeature>());

            Assert.Null(container.GetFeature<MySample1stLevelFeature>(false));
        }
        public void BuilderTest_2ndLevelInheritance_NonAddedFeatureNotFound()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(context => context.AddFeature <MySample2ndLevelFeature>());

            Assert.Null(container.GetFeature <MySample1stLevelFeature>(false));
        }
        public void BuilderTest_FeatureWithReadOnlyStrategy_FailedEnable()
        {
            var builder = new FeatureSetBuilder();
            builder.Build(ctx => ctx.AddFeature<MySampleFeature>());

            Assert.Throws<InvalidOperationException>(() => FeatureContext.Enable<MySampleFeature>());
        }
        public void ConfigureContainer(ServiceConfigurationContext context)
        {
            var builder = new FeatureSetBuilder(new StructureMapDependencyContainer(context.Container));

            builder.Build(ctx => { ctx.AutoDiscoverFeatures = true; })
            .ValidateConfiguration();
        }
        public void BuilderTest_FeatureWithStrategiesSameOrder_ValidateThrows()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(context => context.AddFeature <FeatureWithSameOrderStrategy>());

            Assert.Throws <ConfigurationErrorsException>(() => container.ValidateConfiguration());
        }
        public void BuilderTest_BuildContextWithDiscovery_DiscoveredFeatureFound()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build();

            Assert.NotNull(container.GetFeature<MySampleDiscoveredFeature>());
            Assert.True(container.IsEnabled<MySampleDiscoveredFeature>());
        }
        public void TestQueryStringStrategy_Success(Type feature, bool expectedState)
        {
            var builder = new FeatureSetBuilder();

            var container = builder.Build(context => context.AddFeature(feature));

            Assert.True(container.IsEnabled(feature) == expectedState);
        }
Exemple #10
0
        public void TestHttpSession_Success()
        {
            var builder = new FeatureSetBuilder();

            var container = builder.Build(context => context.AddFeature <FeatureWithSessionStorage>());

            Assert.False(container.IsEnabled <FeatureWithSessionStorage>());
        }
        public void BuilderTest_FeatureWithReadOnlyStrategy_FailedEnable()
        {
            var builder = new FeatureSetBuilder();

            builder.Build(ctx => ctx.AddFeature <MySampleFeature>());

            Assert.Throws <InvalidOperationException>(() => FeatureContext.Enable <MySampleFeature>());
        }
        public void BuilderTest_BuildContextWithDiscovery_DiscoveredFeatureFound()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build();

            Assert.NotNull(container.GetFeature <MySampleDiscoveredFeature>());
            Assert.True(container.IsEnabled <MySampleDiscoveredFeature>());
        }
        public void TestHttpSession_Success()
        {
            var builder = new FeatureSetBuilder();

            var container = builder.Build(context => context.AddFeature<FeatureWithSessionStorage>());

            Assert.False(container.IsEnabled<FeatureWithSessionStorage>());
        }
        public void TestQueryStringStrategy_Success(Type feature, bool expectedState)
        {
            var builder = new FeatureSetBuilder();

            var container = builder.Build(context => context.AddFeature(feature));

            Assert.True(container.IsEnabled(feature) == expectedState);
        }
        public void ConfigureFeatureSwitch(IAppBuilder app)
        {
            var builder = new FeatureSetBuilder(new StructureMapDependencyContainer());

            builder.Build();

            app.MapFeatureSwitch(); //.WithRoles("Administrators");
        }
 public void BuilderTest_OneFeatureOneStrategy_Success()
 {
     var builder = new FeatureSetBuilder();
     var container = builder.Build(ctx =>
     {
         ctx.AddFeature<MySampleFeature>();
         ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
     });
 }
        public void BuilderTest_NoDependencyContainer_UsesDefaultImplementations()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx => ctx.AddFeature<MySampleFeature>());

            var isEnabled = container.IsEnabled<MySampleFeature>();

            Assert.True(isEnabled);
        }
Exemple #18
0
        public void BuilderTest_NoDependencyContainerDisabledFeature_UsesDefaultImplementations()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx => ctx.AddFeature <MySampleDisabledFeature>());

            var isEnabled = container.IsEnabled <MySampleDisabledFeature>();

            Assert.False(isEnabled);
        }
        public void BuilderTest_NoDependencyContainerFeatureWithNoKey_UsesDefaultImplementations()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx => ctx.AddFeature<MySampleNonExistingKeyFeature>());

            var isEnabled = container.IsEnabled<MySampleNonExistingKeyFeature>();

            Assert.False(isEnabled);
        }
Exemple #20
0
 public void BuilderTest_OneFeatureOneStrategy_Success()
 {
     var builder   = new FeatureSetBuilder();
     var container = builder.Build(ctx =>
     {
         ctx.AddFeature <MySampleFeature>();
         ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
     });
 }
Exemple #21
0
        public void BuilderTest_CustomStrategyWithConstructorParameters_ThrowsExceptionWithSimpleContainer()
        {
            var builder = new FeatureSetBuilder();

            Assert.Throws <MissingMethodException>(() => builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeatureWithConstructorParameterStrategy>();
                ctx.ForStrategy <StrategyWithConstructorParameter>().Use <StrategyWithConstructorParameterReader>();
            }));
        }
        public void BuilderTest_CustomStrategyWithConstructorParameters_ThrowsExceptionWithSimpleContainer()
        {
            var builder = new FeatureSetBuilder();

            Assert.Throws<MissingMethodException>(() => builder.Build(ctx =>
                          {
                              ctx.AddFeature<MySampleFeatureWithConstructorParameterStrategy>();
                              ctx.ForStrategy<StrategyWithConstructorParameter>().Use<StrategyWithConstructorParameterReader>();
                          }));
        }
        public void BuilderTest_MultipleStrategies_SwapedDefaultStrategy()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                                          {
                                              ctx.AddFeature<MyFeatureDisabledWithMultipleStrategies>();
                                              ctx.ForStrategy<AlwaysFalse>().Use<AlwaysTrueStrategyImpl>();
                                          });

            Assert.True(container.IsStrategyEnabled(typeof(AlwaysTrueStrategyImpl)));
        }
        public void BuilderTest_MultipleStrategies_SwapedDefaultStrategy()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyFeatureDisabledWithMultipleStrategies>();
                ctx.ForStrategy <AlwaysFalse>().Use <AlwaysTrueStrategyImpl>();
            });

            Assert.True(container.IsStrategyEnabled(typeof(AlwaysTrueStrategyImpl)));
        }
        public void BuilderTest_MultipleStrategies_FeatureEnabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyFeatureDisabledWithMultipleStrategies>();
                ctx.ForStrategy <AppSettings>().Use <AlwaysFalseStrategyImpl>();
            });

            Assert.False(container.IsEnabled <MyFeatureDisabledWithMultipleStrategies>());
        }
        public void BuilderTest_MultipleStrategies_FeatureEnabled()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                                          {
                                              ctx.AddFeature<MyFeatureDisabledWithMultipleStrategies>();
                                              ctx.ForStrategy<AppSettings>().Use<AlwaysFalseStrategyImpl>();
                                          });

            Assert.False(container.IsEnabled<MyFeatureDisabledWithMultipleStrategies>());
        }
        public void BuilderTest_AddFeatureWithoutStrategy_ReturnsNothing()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MySampleFeatureWithoutStrategy>();
            });

            var enabledStrategies = container.GetEnabledStateStrategiesForFeature<MySampleFeatureWithoutStrategy>();

            Assert.False(enabledStrategies.Any());
        }
        public void SingleFeature_SingleStrategy_TestForEnabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();

                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
            });

            Assert.True(container.IsStrategyEnabled(typeof(AlwaysTrueStrategyImpl)));
        }
        public void BuilderTest_2ndLevelInheritance_AllFeaturesFound()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(context =>
            {
                context.AddFeature<MySample2ndLevelFeature>();
                context.AutoDiscoverFeatures = true;
            });

            Assert.NotNull(container.GetFeature<MySample2ndLevelFeature>());
            Assert.NotNull(container.GetFeature<MySample1stLevelFeature>());
        }
        public void SingleFeature_SingleStrategy_TestForEnabled()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MySampleFeature>();

                ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
            });

            Assert.True(container.IsStrategyEnabled(typeof(AlwaysTrueStrategyImpl)));
        }
        public void BuilderTest_2ndLevelInheritance_AllFeaturesFound()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(context =>
            {
                context.AddFeature <MySample2ndLevelFeature>();
                context.AutoDiscoverFeatures = true;
            });

            Assert.NotNull(container.GetFeature <MySample2ndLevelFeature>());
            Assert.NotNull(container.GetFeature <MySample1stLevelFeature>());
        }
Exemple #32
0
        public void BuilderTest_AddFeatureWithoutStrategy_ReturnsNothing()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeatureWithoutStrategy>();
            });

            var enabledStrategies = container.GetEnabledStateStrategiesForFeature <MySampleFeatureWithoutStrategy>();

            Assert.False(enabledStrategies.Any());
        }
        public void BuilderTest_AddFeature_ReturnsEnabledStrategies()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MySampleFeature>();
            });

            var enabledStrategies = container.GetEnabledStateStrategiesForFeature<MySampleFeature>().ToList();

            Assert.True(enabledStrategies.Any());
            Assert.Equal(typeof(AppSettingsStrategyImpl), enabledStrategies.First().GetType());
        }
        public void BuilderTest_CustomStrategy_FeatureIsEnabled()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                          {
                              ctx.AddFeature<MyFancyStrategySampleFeature>();
                              ctx.ForStrategy<UnitTestsAlwaysTrueStrategy>().Use<AlwaysTrueStrategyImpl>();
                          });

            var isEnabled = container.IsEnabled<MyFancyStrategySampleFeature>();

            Assert.True(isEnabled, "MyFancyStrategySampleFeature is not enabled");
        }
Exemple #35
0
        public void BuilderTest_SwapBuiltInStrategy_NoFailure()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
            });

            var isEnabled = container.IsEnabled <MySampleFeature>();

            Assert.True(isEnabled);
        }
        public void BuilderTest_OneFeatureOneStrategy_Success()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
            });

            var isEnabled = container.IsEnabled <MySampleFeature>();

            Assert.True(isEnabled, "MySampleFeature is not enabled");
        }
        public void BuilderTest_FeatureWithWritableStrategy_FeatureCanDisable()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyImpl>();
            });

            FeatureContext.Disable <MyWritableFeatureSingleStrategy>();

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
        }
        public void BuilderTest_OneFeatureOneStrategy_Success()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                                          {
                                              ctx.AddFeature<MySampleFeature>();
                                              ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
                                          });

            var isEnabled = container.IsEnabled<MySampleFeature>();

            Assert.True(isEnabled, "MySampleFeature is not enabled");
        }
Exemple #39
0
        public void BuilderTest_AddFeature_ReturnsEnabledStrategies()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
            });

            var enabledStrategies = container.GetEnabledStateStrategiesForFeature <MySampleFeature>().ToList();

            Assert.True(enabledStrategies.Any());
            Assert.Equal(typeof(AppSettingsStrategyImpl), enabledStrategies.First().GetType());
        }
        public void BuilderTest_RequestForNonRegisteredFeature_FeatureDisabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
            });

            var isEnabled = container.IsEnabled <MySampleFeatureWithoutStrategy>();

            Assert.False(isEnabled);
        }
Exemple #41
0
        public void BuilderTest_CustomStrategy_FeatureIsEnabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyFancyStrategySampleFeature>();
                ctx.ForStrategy <UnitTestsAlwaysTrueStrategy>().Use <AlwaysTrueStrategyImpl>();
            });

            var isEnabled = container.IsEnabled <MyFancyStrategySampleFeature>();

            Assert.True(isEnabled, "MyFancyStrategySampleFeature is not enabled");
        }
        public void BuilderTest_FeatureWithWritableStrategy_FeatureCanDisable()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy<WritableStrategy>().Use<WritableStrategyImpl>();
            });

            FeatureContext.Disable<MyWritableFeatureSingleStrategy>();

            Assert.False(container.IsEnabled<MyWritableFeatureSingleStrategy>());
        }
        public void BuilderTest_RequestForNonRegisteredFeature_FeatureDisabled()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                                          {
                                              ctx.AddFeature<MySampleFeature>();
                                              ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
                                          });

            var isEnabled = container.IsEnabled<MySampleFeatureWithoutStrategy>();

            Assert.False(isEnabled);
        }
        public void BuilderTest_FeatureWithWritableStrategy_FailToWrite_FeatureDoesNotChangeState()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy<WritableStrategy>().Use<WritableStrategyExceptionImpl>();
            });

            Assert.False(container.IsEnabled<MyWritableFeatureSingleStrategy>());
            FeatureContext.Enable<MyWritableFeatureSingleStrategy>();

            Assert.False(container.IsEnabled<MyWritableFeatureSingleStrategy>());
        }
Exemple #45
0
        public void BuilderTest_AddSameStrategyMultipleTimes_NoFailures()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.ForStrategy <UnitTestsAlwaysTrueStrategy>().Use <AlwaysTrueStrategyImpl>();
                ctx.ForStrategy <UnitTestsAlwaysTrueStrategy>().Use <AlwaysTrueStrategyImpl>();
            });

            var isEnabled = container.IsEnabled <MySampleFeature>();

            Assert.True(isEnabled);
        }
        public void BuilderTest_FeatureWithWritableStrategy_FailToWrite_FeatureDoesNotChangeState()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyExceptionImpl>();
            });

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
        }
        public void BuilderTest_AddSameStrategyMultipleTimes_NoFailures()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                          {
                              ctx.AddFeature<MySampleFeature>();
                              ctx.ForStrategy<UnitTestsAlwaysTrueStrategy>().Use<AlwaysTrueStrategyImpl>();
                              ctx.ForStrategy<UnitTestsAlwaysTrueStrategy>().Use<AlwaysTrueStrategyImpl>();
                          });

            var isEnabled = container.IsEnabled<MySampleFeature>();

            Assert.True(isEnabled);
        }
Exemple #48
0
        public void BuilderTest_SwapBuiltInStrategy_ContainerHasSwappedStrategy()
        {
            var builder = new FeatureSetBuilder();

            builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
            });

            var strategy = builder.GetStrategyImplementation <AppSettings>();

            Assert.IsAssignableFrom(typeof(AlwaysTrueStrategyImpl), strategy);
        }
        public void BuilderTest_CustomStrategyWithConstructorParameters_ThrowsExceptionWithSimpleContainer()
        {
            var dependencyContainer = new StructureMapDependencyContainer();
            dependencyContainer.Configure(expression => expression.For<ISampleInjectedInterface>().Use<SampleInjectedInterface>());

            var builder = new FeatureSetBuilder(dependencyContainer);
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MySampleFeatureWithConstructorParameterStrategy>();
                ctx.ForStrategy<StrategyWithConstructorParameter>().Use<StrategyWithConstructorParameterReader>();
            });

            Assert.True(container.IsEnabled<MySampleFeatureWithConstructorParameterStrategy>());
            Assert.NotNull(((StrategyWithConstructorParameterReader)builder.GetStrategyImplementation<StrategyWithConstructorParameter>()).Dependency);
        }
        public void BuilderTest_FeatureWithWritableStrategy_FeatureCanBeEnabled()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyImpl>();
            });

            Assert.False(container.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.True(container.GetFeature <MyWritableFeatureSingleStrategy>().CanModify, "Feature is not modifiable");

            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();

            Assert.True(container.IsEnabled <MyWritableFeatureSingleStrategy>());
        }
        public void BuilderTest_FeatureWithWritableStrategy_FeatureCanBeEnabled()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MyWritableFeatureSingleStrategy>();
                ctx.ForStrategy<WritableStrategy>().Use<WritableStrategyImpl>();
            });

            Assert.False(container.IsEnabled<MyWritableFeatureSingleStrategy>());
            Assert.True(container.GetFeature<MyWritableFeatureSingleStrategy>().CanModify, "Feature is not modifiable");

            FeatureContext.Enable<MyWritableFeatureSingleStrategy>();

            Assert.True(container.IsEnabled<MyWritableFeatureSingleStrategy>());
        }
        public void BuilderTest_CustomStrategyWithConstructorParameters_ThrowsExceptionWithSimpleContainer()
        {
            var dependencyContainer = new StructureMapDependencyContainer();

            dependencyContainer.Configure(expression => expression.For <ISampleInjectedInterface>().Use <SampleInjectedInterface>());

            var builder   = new FeatureSetBuilder(dependencyContainer);
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeatureWithConstructorParameterStrategy>();
                ctx.ForStrategy <StrategyWithConstructorParameter>().Use <StrategyWithConstructorParameterReader>();
            });

            Assert.True(container.IsEnabled <MySampleFeatureWithConstructorParameterStrategy>());
            Assert.NotNull(((StrategyWithConstructorParameterReader)builder.GetStrategyImplementation <StrategyWithConstructorParameter>()).Dependency);
        }
        public void BuilderTest_AddMoreFeature_Success()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeature>();
                ctx.AddFeature <MySampleFeatureWithoutStrategy>();
                ctx.AddFeature <MyFancyStrategySampleFeature>();

                ctx.ForStrategy <AppSettings>().Use <AlwaysTrueStrategyImpl>();
                ctx.ForStrategy <UnitTestsAlwaysTrueStrategy>().Use <AlwaysTrueStrategyImpl>();
            });

            Assert.True(container.IsEnabled <MySampleFeature>(), "MySampleFeature is not enabled");
            Assert.False(container.IsEnabled <MySampleFeatureWithoutStrategy>(), "MySampleFeatureWithoutStrategy is not enabled");
            Assert.True(container.IsEnabled <MyFancyStrategySampleFeature>(), "MyFancyStrategySampleFeature is not enabled");
        }
        public void BuilderTest_AddMoreFeature_Success()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                                          {
                                              ctx.AddFeature<MySampleFeature>();
                                              ctx.AddFeature<MySampleFeatureWithoutStrategy>();
                                              ctx.AddFeature<MyFancyStrategySampleFeature>();

                                              ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
                                              ctx.ForStrategy<UnitTestsAlwaysTrueStrategy>().Use<AlwaysTrueStrategyImpl>();
                                          });

            Assert.True(container.IsEnabled<MySampleFeature>(), "MySampleFeature is not enabled");
            Assert.False(container.IsEnabled<MySampleFeatureWithoutStrategy>(), "MySampleFeatureWithoutStrategy is not enabled");
            Assert.True(container.IsEnabled<MyFancyStrategySampleFeature>(), "MyFancyStrategySampleFeature is not enabled");
        }
Exemple #55
0
        public void ChangeState_AllWritableStrategiesSynced()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MySampleFeatureWithMultipleWritableStrategies>();

                ctx.ForStrategy <WritableHashMapStrategyAttribute>().Use <WritableHashtableStrategy>();
                ctx.ForStrategy <WritableHashMapStrategy2Attribute>().Use <WritableHashtable2Strategy>();
            });

            FeatureContext.Enable <MySampleFeatureWithMultipleWritableStrategies>();

            Assert.True(FeatureContext.IsEnabled <MySampleFeatureWithMultipleWritableStrategies>());

            // TODO:
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtableStrategy)));
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtable2Strategy)));
        }
        public void ChangeState_AllWritableStrategiesSynced()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MySampleFeatureWithMultipleWritableStrategies>();

                ctx.ForStrategy<WritableHashMapStrategyAttribute>().Use<WritableHashtableStrategy>();
                ctx.ForStrategy<WritableHashMapStrategy2Attribute>().Use<WritableHashtable2Strategy>();
            });

            FeatureContext.Enable<MySampleFeatureWithMultipleWritableStrategies>();

            Assert.True(FeatureContext.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>());

            // TODO:
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtableStrategy)));
            //Assert.True(container.IsEnabled<MySampleFeatureWithMultipleWritableStrategies>(typeof(WritableHashtable2Strategy)));
        }
        public void BuilderTest_MultipleFeaturesSameStrategy_NoCollisionsInState()
        {
            var builder   = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature <MyWritableFeatureSingleStrategy>();
                ctx.AddFeature <MyWritableAnotherFeatureSingleStrategy>();
                ctx.ForStrategy <WritableStrategy>().Use <WritableStrategyImpl>();
            });

            FeatureContext.Enable <MyWritableAnotherFeatureSingleStrategy>();

            Assert.False(FeatureContext.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.True(FeatureContext.IsEnabled <MyWritableAnotherFeatureSingleStrategy>());

            FeatureContext.Enable <MyWritableFeatureSingleStrategy>();
            FeatureContext.Disable <MyWritableAnotherFeatureSingleStrategy>();

            Assert.True(FeatureContext.IsEnabled <MyWritableFeatureSingleStrategy>());
            Assert.False(FeatureContext.IsEnabled <MyWritableAnotherFeatureSingleStrategy>());
        }
        public void BuilderTest_MultipleFeaturesSameStrategy_NoCollisionsInState()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
            {
                ctx.AddFeature<MyWritableFeatureSingleStrategy>();
                ctx.AddFeature<MyWritableAnotherFeatureSingleStrategy>();
                ctx.ForStrategy<WritableStrategy>().Use<WritableStrategyImpl>();
            });

            FeatureContext.Enable<MyWritableAnotherFeatureSingleStrategy>();

            Assert.False(FeatureContext.IsEnabled<MyWritableFeatureSingleStrategy>());
            Assert.True(FeatureContext.IsEnabled<MyWritableAnotherFeatureSingleStrategy>());

            FeatureContext.Enable<MyWritableFeatureSingleStrategy>();
            FeatureContext.Disable<MyWritableAnotherFeatureSingleStrategy>();

            Assert.True(FeatureContext.IsEnabled<MyWritableFeatureSingleStrategy>());
            Assert.False(FeatureContext.IsEnabled<MyWritableAnotherFeatureSingleStrategy>());
        }
        public void BuilderTest_SwapBuiltInStrategy_ContainerHasSwappedStrategy()
        {
            var builder = new FeatureSetBuilder();
            builder.Build(ctx =>
                          {
                              ctx.AddFeature<MySampleFeature>();
                              ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
                          });

            var strategy = builder.GetStrategyImplementation<AppSettings>();
            Assert.IsAssignableFrom(typeof(AlwaysTrueStrategyImpl), strategy);
        }
        public void BuilderTest_SwapBuiltInStrategy_NoFailure()
        {
            var builder = new FeatureSetBuilder();
            var container = builder.Build(ctx =>
                          {
                              ctx.AddFeature<MySampleFeature>();
                              ctx.ForStrategy<AppSettings>().Use<AlwaysTrueStrategyImpl>();
                          });

            var isEnabled = container.IsEnabled<MySampleFeature>();

            Assert.True(isEnabled);
        }