예제 #1
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);
        }
예제 #2
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();
        }
예제 #3
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);
        }
예제 #4
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));
        }
예제 #5
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);
        }
예제 #6
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);
            }
        }
        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);
            }
        }