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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 4
0
        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());
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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();
        }
Exemplo n.º 12
0
        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());
        }
Exemplo n.º 13
0
        public void Evaluate_Returns_False_If_Disabled()
        {
            var toggle = new DependencyToggle(new BooleanToggle(ToggleName, false), new IFeatureToggle[0]);

            Assert.IsFalse(toggle.IsEnabled());
        }
Exemplo n.º 14
0
        public void Construction_Saves_Name()
        {
            var toggle = new DependencyToggle(new BooleanToggle(ToggleName, true), new IFeatureToggle[0]);

            Assert.AreEqual(ToggleName, toggle.Name);
        }
Exemplo n.º 15
0
        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);
            }
        }