public ThresholdTypeFlags GetThresholdTypesBelowThreshold(CoverageSummary summary, Dictionary <ThresholdTypeFlags, double> thresholdTypeFlagValues, ThresholdStatistic thresholdStat) { var thresholdTypeFlags = ThresholdTypeFlags.None; switch (thresholdStat) { case ThresholdStatistic.Minimum: { foreach (var module in Modules) { double line = summary.CalculateLineCoverage(module.Value).Percent; double branch = summary.CalculateBranchCoverage(module.Value).Percent; double method = summary.CalculateMethodCoverage(module.Value).Percent; if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Line, out var lineThresholdValue) && lineThresholdValue > line) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Branch, out var branchThresholdValue) && branchThresholdValue > branch) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Method, out var methodThresholdValue) && methodThresholdValue > method) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } } break; case ThresholdStatistic.Average: { double line = summary.CalculateLineCoverage(Modules).AverageModulePercent; double branch = summary.CalculateBranchCoverage(Modules).AverageModulePercent; double method = summary.CalculateMethodCoverage(Modules).AverageModulePercent; if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Line, out var lineThresholdValue) && lineThresholdValue > line) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Branch, out var branchThresholdValue) && branchThresholdValue > branch) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Method, out var methodThresholdValue) && methodThresholdValue > method) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } break; case ThresholdStatistic.Total: { double line = summary.CalculateLineCoverage(Modules).Percent; double branch = summary.CalculateBranchCoverage(Modules).Percent; double method = summary.CalculateMethodCoverage(Modules).Percent; if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Line, out var lineThresholdValue) && lineThresholdValue > line) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Branch, out var branchThresholdValue) && branchThresholdValue > branch) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } if (thresholdTypeFlagValues.TryGetValue(ThresholdTypeFlags.Method, out var methodThresholdValue) && methodThresholdValue > method) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } break; } return(thresholdTypeFlags); }
public ThresholdTypeFlags GetThresholdTypesBelowThreshold(CoverageSummary summary, double threshold, ThresholdTypeFlags thresholdTypes, ThresholdStatistic thresholdStat) { var thresholdTypeFlags = ThresholdTypeFlags.None; switch (thresholdStat) { case ThresholdStatistic.Minimum: { foreach (var module in Modules) { double line = summary.CalculateLineCoverage(module.Value).Percent; double branch = summary.CalculateBranchCoverage(module.Value).Percent; double method = summary.CalculateMethodCoverage(module.Value).Percent; if ((thresholdTypes & ThresholdTypeFlags.Line) != ThresholdTypeFlags.None) { if (line < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } } if ((thresholdTypes & ThresholdTypeFlags.Branch) != ThresholdTypeFlags.None) { if (branch < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } } if ((thresholdTypes & ThresholdTypeFlags.Method) != ThresholdTypeFlags.None) { if (method < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } } } break; case ThresholdStatistic.Average: { double line = summary.CalculateLineCoverage(Modules).AverageModulePercent; double branch = summary.CalculateBranchCoverage(Modules).AverageModulePercent; double method = summary.CalculateMethodCoverage(Modules).AverageModulePercent; if ((thresholdTypes & ThresholdTypeFlags.Line) != ThresholdTypeFlags.None) { if (line < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } } if ((thresholdTypes & ThresholdTypeFlags.Branch) != ThresholdTypeFlags.None) { if (branch < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } } if ((thresholdTypes & ThresholdTypeFlags.Method) != ThresholdTypeFlags.None) { if (method < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } } break; case ThresholdStatistic.Total: { double line = summary.CalculateLineCoverage(Modules).Percent; double branch = summary.CalculateBranchCoverage(Modules).Percent; double method = summary.CalculateMethodCoverage(Modules).Percent; if ((thresholdTypes & ThresholdTypeFlags.Line) != ThresholdTypeFlags.None) { if (line < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Line; } } if ((thresholdTypes & ThresholdTypeFlags.Branch) != ThresholdTypeFlags.None) { if (branch < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Branch; } } if ((thresholdTypes & ThresholdTypeFlags.Method) != ThresholdTypeFlags.None) { if (method < threshold) { thresholdTypeFlags |= ThresholdTypeFlags.Method; } } } break; } return(thresholdTypeFlags); }