public void DoIt() { IFeatureConfiguration features = new FeatureConfiguration { new BooleanToggle("Feature1", true), new DateRangeToggle( "Feature2", true, DateTime.Now.AddDays(-2), DateTime.Now.AddDays(3)), new EstablishedFeatureToggle("establishedFeature") }; var mainFeature = new BooleanToggle("mainFeature", true); var subFeature1 = new BooleanToggle("subFeature1", true); var subFeature2 = new BooleanToggle("subFeature2", true); var dependency1 = new DependencyToggle(subFeature1, mainFeature); var dependency2 = new DependencyToggle(subFeature2, mainFeature); features.Add(dependency1); features.Add(dependency2); features.Add(new EstablishedFeatureToggle("establishedFeature")); Console.WriteLine(features.WhatDoIHave()); }
public void Freeze_Freezes_Toggle() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); toggle1.Freeze(); Assert.IsTrue(toggle1.IsFrozen); }
public void DoIt() { IFeatureConfiguration features = new FeatureConfiguration { new BooleanToggle("Feature1", true), new DateRangeToggle( "Feature2", true, DateTime.Now.AddDays(-2), DateTime.Now.AddDays(3)), new EstablishedFeatureToggle("establishedFeature") }; var mainFeature = new BooleanToggle("mainFeature", true); var subFeature1 = new BooleanToggle("subFeature1", true); var subFeature2 = new BooleanToggle("subFeature2", true); var dependency1 = new DependencyToggle(subFeature1, mainFeature); var dependency2 = new DependencyToggle(subFeature2, mainFeature); features.Add(dependency1); features.Add(dependency2); features.Add(new EstablishedFeatureToggle("establishedFeature")); Console.WriteLine(features.WhatDoIHave()); }
public void Evaluate_Returns_True_If_Dependencies_Not_Disabled() { var toggles = new IFeatureToggle[] { new BooleanToggle("a", true), new BooleanToggle("b", true) }; var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), toggles); Assert.IsTrue(toggle.IsEnabled()); }
public void Construction_Saves_Dependencies() { var toggles = new IFeatureToggle[] { new BooleanToggle("a", true), new BooleanToggle("b", true) }; var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), toggles); CollectionAssert.AreEquivalent(toggles, toggle.Dependencies); }
public void AssertConfigurationIsValid_Throws_For_CircularDependency() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle2 = new DependencyToggle(new BooleanToggle(ToggleName, true)); toggle1.AddDependency(toggle2); toggle2.AddDependency(toggle1); Assert.Throws <CircularDependencyException>(toggle1.AssertConfigurationIsValid); }
public void AddDependency_Throws_If_Object_Is_Frozen() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true)); toggle.Freeze(); var dependency = new BooleanToggle("a", true); Assert.Throws <ToggleFrozenException>(() => toggle.AddDependency(dependency)); }
public void Can_Add_Dependencies_To_Toggle() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true)); Assert.IsFalse(toggle.Dependencies.Any()); var dependency = new BooleanToggle("a", true); toggle.AddDependency(dependency); Assert.IsTrue(toggle.Dependencies.Any()); Assert.AreSame(toggle.Dependencies.Single(), dependency); }
public void AssertConfigurationIsValid_Returns_False_For_Non_Circular_Dpendency() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle2 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle3 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var toggle4 = new BooleanToggle(ToggleName, true); toggle1.AddDependency(toggle2); toggle2.AddDependency(toggle3); toggle2.AddDependency(toggle4); toggle3.AddDependency(toggle4); Assert.DoesNotThrow(toggle1.AssertConfigurationIsValid); }
private void BuildDependencies(DependencyToggle dependencyToggle, Dictionary <string, KeyValuePair <ToggleConfig, IFeatureToggle> > toggles, IEnumerable <string> dependencyNames) { foreach (var dependencyName in dependencyNames) { string cleanName = dependencyName.Trim(); if (!toggles.TryGetValue(cleanName, out var dependency)) { throw new ConfigurationErrorsException("Could not find dependency with name \"" + cleanName + "\"."); } dependencyToggle.AddDependency(dependency.Value); } }
public void Freeze_Freezes_Dependencies() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); var dependency1 = new Mock <IFeatureToggle>(); var dependency2 = new Mock <IFeatureToggle>(); toggle1.AddDependency(dependency1.Object); toggle1.AddDependency(dependency2.Object); dependency1.Setup(x => x.Freeze()); dependency2.Setup(x => x.Freeze()); toggle1.Freeze(); Assert.IsTrue(toggle1.IsFrozen); dependency1.VerifyAll(); dependency2.VerifyAll(); }
public void Evaluate_Returns_True_If_Enabled_With_No_Dependencies() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), new IFeatureToggle[0]); Assert.IsTrue(toggle.IsEnabled()); }
public void Evaluate_Returns_False_If_Disabled() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, false), new IFeatureToggle[0]); Assert.IsFalse(toggle.IsEnabled()); }
public void Construction_Saves_Name() { var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), new IFeatureToggle[0]); Assert.AreEqual(ToggleName, toggle.Name); }
public void Toggle_Is_Unfrozen_By_Default() { var toggle1 = new DependencyToggle(new BooleanToggle(ToggleName, true)); Assert.IsFalse(toggle1.IsFrozen); }
private void BuildDependencies(DependencyToggle dependencyToggle, Dictionary<string, KeyValuePair<ToggleConfig, IFeatureToggle>> toggles, IEnumerable<string> dependencyNames) { foreach (var dependencyName in dependencyNames) { string cleanName = dependencyName.Trim(); KeyValuePair<ToggleConfig, IFeatureToggle> dependency; if (!toggles.TryGetValue(cleanName, out dependency)) { throw new ConfigurationErrorsException("Could not find dependency with name \"" + cleanName + "\"."); } dependencyToggle.AddDependency(dependency.Value); } }