internal void AddKnownCombination(
            ScenarioCombinationType combinationType,
            ScenarioKey scenarioKey)
        {
            var knownCombination = new KnownCombination(combinationType, scenarioKey);

            this.AddKnownCombination(knownCombination);
        }
        private KnownCombination ValidateKnownCombinationConfigurationBuilderValues(
            ScenarioCombinationType scenarioCombinationType,
            IDictionary <string, string> scenarioCombinationConfiguration)
        {
            var scenariosKeys       = new List <ScenarioKey>();
            var parentGroupsRegex   = string.Empty;
            var childrenGroupsRegex = string.Empty;

            this.ValidateScenarioCombinationConfigurationValues(
                scenarioCombinationConfiguration,
                (builderScenarioKey) =>
            {
                scenariosKeys.Add(builderScenarioKey);

                parentGroupsRegex += Keys.GetScenarioContextKeyValueRegexValue(
                    builderScenarioKey.ContextIndex,
                    builderScenarioKey.ScenarioName);

                childrenGroupsRegex += Keys.GetScenarioContextKeyValueRegexValue(
                    builderScenarioKey.ContextIndex,
                    builderScenarioKey.ScenarioName,
                    false);
            },
                (index) =>
            {
                childrenGroupsRegex += Keys.GetScenarioContextKeyValueRegexValue(
                    index);
            });

            var knownCombination = new KnownCombination(
                scenarioCombinationType,
                scenariosKeys.ToArray());

            this.ValidateParentKnownScenarioCombinationConfiguration(
                knownCombination.CombinationKey,
                parentGroupsRegex);

            if (scenarioCombinationType != ScenarioCombinationType.Unknown)
            {
                this.ValidateChildrenKnownScenarioCombinationConfiguration(
                    childrenGroupsRegex);
            }

            return(knownCombination);
        }
        private void AddKnownCombination(
            KnownCombination knownCombination)
        {
            this.knownCombinations.Add(
                knownCombination.CombinationKey,
                knownCombination);

            if (knownCombination.CombinationType == ScenarioCombinationType.AlwaysValid &&
                !this.HasAlwaysValidKnownScenario)
            {
                this.HasAlwaysValidKnownScenario = true;
            }

            if (knownCombination.CombinationType == ScenarioCombinationType.AlwaysInvalid &&
                !this.HasAlwaysInvalidKnownScenario)
            {
                this.HasAlwaysInvalidKnownScenario = true;
            }
        }