/// <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); }
/// <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()); }
/// <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); }
/// <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)); }