Beispiel #1
0
        /// <summary>
        /// Ensures that every parameter is referenced at least once in a coverage group. If
        /// not, it adds coverage groups for those that are unused to the specification.
        /// Returns true if successful.
        /// </summary>
        private bool NormalizeCoverage()
        {
            IDictionary <string, bool> parametersCovered = new Dictionary <string, bool>();

            foreach (string parameter in InputParameters.Keys)
            {
                parametersCovered.Add(parameter, false);
            }

            if (CoverageGroups == null)
            {
                CoverageGroups = new List <CoverageGroup>();
            }

            foreach (CoverageGroup coverageGroup in CoverageGroups)
            {
                foreach (string parameter in coverageGroup.Parameters)
                {
                    parametersCovered[parameter] = true;
                }
            }

            foreach (string parameter in parametersCovered.Keys.Where(x => !parametersCovered[x]))
            {
                CoverageGroup coverageGroup = new CoverageGroup();
                coverageGroup.Set($"Singleton-{parameter}", new List <string> {
                    parameter
                });
                CoverageGroups.Add(coverageGroup);
            }

            return(true);
        }
Beispiel #2
0
        /// <summary>
        /// Returns the list of coverage group names.
        /// </summary>
        public IList <string> CoverageGroupNames()
        {
            if ((CoverageGroups == null) || !CoverageGroups.Any())
            {
                return(new List <string>());
            }

            return(CoverageGroups.Select(x => x.Name).ToList());
        }
Beispiel #3
0
        /// <summary>
        /// Removes any "singleton" coverage groups.
        /// </summary>
        private bool ClearCoverage()
        {
            if (CoverageGroups == null)
            {
                return(true);
            }

            IList <CoverageGroup> filteredCoverageGroups = new List <CoverageGroup>();

            foreach (CoverageGroup coverageGroup in CoverageGroups.Where(x => !x.Name.StartsWith("Singleton-")))
            {
                filteredCoverageGroups.Add(coverageGroup);
            }

            CoverageGroups = filteredCoverageGroups;
            return(true);
        }
Beispiel #4
0
        /// <summary>
        /// Validates the test specification and returns true if successful; otherwise false
        /// and returns an informative error message.
        /// </summary>
        public bool Validate(IList <string> errors)
        {
            bool validated = true;

            if ((InputParameters == null) || !InputParameters.Any())
            {
                errors.Add($"specification {Name} has no input parameters");
                validated = false;
            }
            else
            {
                foreach (InputParameter parameter in InputParameters.Values)
                {
                    validated = parameter.Validate(errors) && validated;
                }
            }

            if ((ExpectedResults == null) || !ExpectedResults.Any())
            {
                errors.Add($"specification {Name} has no expected results");
                validated = false;
            }
            else
            {
                foreach (ExpectedResult expectedResult in ExpectedResults.Values)
                {
                    validated = expectedResult.Validate(errors) && validated;
                }
            }

            if ((CoverageGroups == null) || !CoverageGroups.Any())
            {
                errors.Add($"specification {Name} has no coverage groups");
                validated = false;
            }
            else
            {
                foreach (CoverageGroup coverageGroup in CoverageGroups)
                {
                    validated = coverageGroup.Validate(errors) && validated;
                }
            }

            return(validated && (errors.Count == 0));
        }