-
Notifications
You must be signed in to change notification settings - Fork 392
Changed to calculate based on the average coverage of the modules #479
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
c7f0179
4c1b6a0
2744f8e
492ecf8
91e5a3c
6522779
be3a72b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -196,33 +196,26 @@ public ThresholdTypeFlags GetThresholdTypesBelowThreshold(CoverageSummary summar | |
| break; | ||
| case ThresholdStatistic.Average: | ||
| { | ||
| double line = 0; | ||
| double branch = 0; | ||
| double method = 0; | ||
| var line = summary.CalculateLineCoverage(Modules).AverageModulePercent; | ||
|
||
| var branch = summary.CalculateBranchCoverage(Modules).AverageModulePercent; | ||
| var method = summary.CalculateMethodCoverage(Modules).AverageModulePercent; | ||
| int numModules = Modules.Count; | ||
|
|
||
| foreach (var module in Modules) | ||
| { | ||
| line += summary.CalculateLineCoverage(module.Value).Percent; | ||
| branch += summary.CalculateBranchCoverage(module.Value).Percent; | ||
| method += summary.CalculateMethodCoverage(module.Value).Percent; | ||
| } | ||
|
|
||
| if ((thresholdTypes & ThresholdTypeFlags.Line) != ThresholdTypeFlags.None) | ||
| { | ||
| if ((line / numModules) < threshold) | ||
| if (line < threshold) | ||
MarcoRossignoli marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| thresholdTypeFlags |= ThresholdTypeFlags.Line; | ||
| } | ||
|
|
||
| if ((thresholdTypes & ThresholdTypeFlags.Branch) != ThresholdTypeFlags.None) | ||
| { | ||
| if ((branch / numModules) < threshold) | ||
| if (branch < threshold) | ||
| thresholdTypeFlags |= ThresholdTypeFlags.Branch; | ||
| } | ||
|
|
||
| if ((thresholdTypes & ThresholdTypeFlags.Method) != ThresholdTypeFlags.None) | ||
| { | ||
| if ((method / numModules) < threshold) | ||
| if (method < threshold) | ||
| thresholdTypeFlags |= ThresholdTypeFlags.Method; | ||
| } | ||
| } | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -10,12 +10,14 @@ namespace Coverlet.Core.Tests | |
| { | ||
| public class CoverageSummaryTests | ||
| { | ||
| private Modules _modules; | ||
| private Modules _averageCalculationSingleModule; | ||
| private Modules _averageCalculationMultiModule; | ||
| private Modules _moduleArithmeticPrecision; | ||
|
|
||
| public CoverageSummaryTests() | ||
| { | ||
| SetupData(); | ||
| SetupDataSingleModule(); | ||
| SetupDataMultipleModule(); | ||
| SetupDataForArithmeticPrecision(); | ||
| } | ||
|
|
||
|
|
@@ -50,7 +52,7 @@ private void SetupDataForArithmeticPrecision() | |
| _moduleArithmeticPrecision.Add("module", documents); | ||
| } | ||
|
|
||
| private void SetupData() | ||
| private void SetupDataSingleModule() | ||
| { | ||
| Lines lines = new Lines(); | ||
| lines.Add(1, 1); | ||
|
|
@@ -71,58 +73,148 @@ private void SetupData() | |
| Documents documents = new Documents(); | ||
| documents.Add("doc.cs", classes); | ||
|
|
||
| _modules = new Modules(); | ||
| _modules.Add("module", documents); | ||
| _averageCalculationSingleModule = new Modules(); | ||
| _averageCalculationSingleModule.Add("module", documents); | ||
| } | ||
|
|
||
| private void SetupDataMultipleModule() | ||
| { | ||
| Lines lines = new Lines | ||
| { | ||
| { 1, 1 },//covered | ||
| { 2, 0 },//not covered | ||
| { 3, 0 }//not covered | ||
| }; | ||
|
|
||
| Branches branches = new Branches | ||
| { | ||
| new BranchInfo { Line = 1, Hits = 1, Offset = 1, Path = 0, Ordinal = 1 },//covered | ||
|
||
| new BranchInfo { Line = 1, Hits = 1, Offset = 1, Path = 1, Ordinal = 2 },//covered | ||
| new BranchInfo { Line = 1, Hits = 0, Offset = 1, Path = 1, Ordinal = 2 }//not covered | ||
| }; | ||
|
|
||
| Methods methods = new Methods(); | ||
| string[] methodString = { | ||
| "System.Void Coverlet.Core.Tests.CoverageSummaryTests::TestCalculateSummary()",//covered | ||
| "System.Void Coverlet.Core.Tests.CoverageSummaryTests::TestAditionalCalculateSummary()"//not covered | ||
| }; | ||
| methods.Add(methodString[0], new Method()); | ||
| methods[methodString[0]].Lines = lines; | ||
| methods[methodString[0]].Branches = branches; | ||
|
|
||
| methods.Add(methodString[1], new Method()); | ||
| methods[methodString[1]].Lines = new Lines | ||
| { | ||
| { 1, 0 }//not covered | ||
| }; | ||
|
|
||
| Classes classes = new Classes | ||
| { | ||
| { "Coverlet.Core.Tests.CoverageSummaryTests", methods } | ||
| }; | ||
|
|
||
| Documents documents = new Documents | ||
| { | ||
| { "doc.cs", classes } | ||
| }; | ||
|
|
||
| _averageCalculationMultiModule = new Modules | ||
| { | ||
| { "module", _averageCalculationSingleModule["module"] }, | ||
| { "aditionalModule", documents } | ||
| }; | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateLineCoverage() | ||
| public void TestCalculateLineCoverage_SingleModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
|
|
||
| var module = _modules.First(); | ||
| var module = _averageCalculationSingleModule.First(); | ||
| var document = module.Value.First(); | ||
| var @class = document.Value.First(); | ||
| var method = @class.Value.First(); | ||
|
|
||
| Assert.Equal(50, summary.CalculateLineCoverage(_averageCalculationSingleModule).AverageModulePercent); | ||
| Assert.Equal(50, summary.CalculateLineCoverage(module.Value).Percent); | ||
| Assert.Equal(50, summary.CalculateLineCoverage(document.Value).Percent); | ||
| Assert.Equal(50, summary.CalculateLineCoverage(@class.Value).Percent); | ||
| Assert.Equal(50, summary.CalculateLineCoverage(method.Value.Lines).Percent); | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateBranchCoverage() | ||
| public void TestCalculateLineCoverage_MultiModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
| var documentsFirstModule = _averageCalculationMultiModule["module"]; | ||
| var documentsSecondModule = _averageCalculationMultiModule["aditionalModule"]; | ||
|
|
||
| Assert.Equal(37.5, summary.CalculateLineCoverage(_averageCalculationMultiModule).AverageModulePercent); | ||
| Assert.Equal(50, summary.CalculateLineCoverage(documentsFirstModule.First().Value).Percent); | ||
|
|
||
| Assert.Equal(33.33, summary.CalculateLineCoverage(documentsSecondModule.First().Value.First().Value.ElementAt(0).Value.Lines).Percent);//covered 1 of 3 | ||
| Assert.Equal(0, summary.CalculateLineCoverage(documentsSecondModule.First().Value.First().Value.ElementAt(1).Value.Lines).Percent);//covered 0 of 1 | ||
| Assert.Equal(25, summary.CalculateLineCoverage(documentsSecondModule.First().Value).Percent);//covered 1 of 4 lines | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateBranchCoverage_SingleModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
|
|
||
| var module = _modules.First(); | ||
| var module = _averageCalculationSingleModule.First(); | ||
| var document = module.Value.First(); | ||
| var @class = document.Value.First(); | ||
| var method = @class.Value.First(); | ||
|
|
||
| Assert.Equal(100, summary.CalculateBranchCoverage(_averageCalculationSingleModule).AverageModulePercent); | ||
| Assert.Equal(100, summary.CalculateBranchCoverage(module.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateBranchCoverage(document.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateBranchCoverage(@class.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateBranchCoverage(method.Value.Branches).Percent); | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateMethodCoverage() | ||
| public void TestCalculateBranchCoverage_MultiModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
| var documentsFirstModule = _averageCalculationMultiModule["module"]; | ||
| var documentsSecondModule = _averageCalculationMultiModule["aditionalModule"]; | ||
|
|
||
| var module = _modules.First(); | ||
| Assert.Equal(83.33, summary.CalculateBranchCoverage(_averageCalculationMultiModule).AverageModulePercent); | ||
| Assert.Equal(100, summary.CalculateBranchCoverage(documentsFirstModule.First().Value).Percent); | ||
| Assert.Equal(66.66, summary.CalculateBranchCoverage(documentsSecondModule.First().Value).Percent); | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateMethodCoverage_SingleModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
|
|
||
| var module = _averageCalculationSingleModule.First(); | ||
| var document = module.Value.First(); | ||
| var @class = document.Value.First(); | ||
| var method = @class.Value.First(); | ||
|
|
||
| Assert.Equal(100, summary.CalculateMethodCoverage(_averageCalculationSingleModule).AverageModulePercent); | ||
| Assert.Equal(100, summary.CalculateMethodCoverage(module.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateMethodCoverage(document.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateMethodCoverage(@class.Value).Percent); | ||
| Assert.Equal(100, summary.CalculateMethodCoverage(method.Value.Lines).Percent); | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateMethodCoverage_MultiModule() | ||
| { | ||
| CoverageSummary summary = new CoverageSummary(); | ||
| var documentsFirstModule = _averageCalculationMultiModule["module"]; | ||
| var documentsSecondModule = _averageCalculationMultiModule["aditionalModule"]; | ||
|
|
||
| Assert.Equal(75, summary.CalculateMethodCoverage(_averageCalculationMultiModule).AverageModulePercent); | ||
| Assert.Equal(100, summary.CalculateMethodCoverage(documentsFirstModule.First().Value).Percent); | ||
| Assert.Equal(50, summary.CalculateMethodCoverage(documentsSecondModule.First().Value).Percent); | ||
| } | ||
|
|
||
| [Fact] | ||
| public void TestCalculateLineCoveragePercentage_ArithmeticPrecisionCheck() | ||
| { | ||
|
|
@@ -133,6 +225,7 @@ public void TestCalculateLineCoveragePercentage_ArithmeticPrecisionCheck() | |
| var @class = document.Value.First(); | ||
| var method = @class.Value.First(); | ||
|
|
||
| Assert.Equal(16.66, summary.CalculateLineCoverage(_moduleArithmeticPrecision).AverageModulePercent); | ||
| Assert.Equal(16.66, summary.CalculateLineCoverage(module.Value).Percent); | ||
| Assert.Equal(16.66, summary.CalculateLineCoverage(document.Value).Percent); | ||
| Assert.Equal(16.66, summary.CalculateLineCoverage(@class.Value).Percent); | ||
|
|
@@ -149,6 +242,7 @@ public void TestCalculateBranchCoveragePercentage_ArithmeticPrecisionCheck() | |
| var @class = document.Value.First(); | ||
| var method = @class.Value.First(); | ||
|
|
||
| Assert.Equal(16.66, summary.CalculateBranchCoverage(_moduleArithmeticPrecision).AverageModulePercent); | ||
| Assert.Equal(16.66, summary.CalculateBranchCoverage(module.Value).Percent); | ||
| Assert.Equal(16.66, summary.CalculateBranchCoverage(document.Value).Percent); | ||
| Assert.Equal(16.66, summary.CalculateBranchCoverage(@class.Value).Percent); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: move this field on top of class and change in
_averageModulePercentThere was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done