Skip to content

Commit 4ce1b4e

Browse files
committed
update signatures of calculate coverage methods
1 parent 84ae051 commit 4ce1b4e

File tree

3 files changed

+88
-74
lines changed

3 files changed

+88
-74
lines changed

src/coverlet.core/CoverageSummary.cs

Lines changed: 75 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -6,132 +6,146 @@ namespace Coverlet.Core
66
{
77
public class CoverageSummary
88
{
9-
public double CalculateLineCoverage(KeyValuePair<string, Lines> method)
9+
public double CalculateLineCoverage(Lines lines)
1010
{
11-
double coverage = 0, totalLines = 0, linesCovered = 0;
12-
foreach (var line in method.Value)
13-
{
14-
totalLines++;
15-
if (line.Value.Hits > 0)
16-
linesCovered++;
17-
}
18-
19-
coverage = totalLines == 0 ? totalLines : linesCovered / totalLines;
11+
double linesCovered = lines.Where(l => l.Value.Hits > 0).Count();
12+
double coverage = lines.Count == 0 ? lines.Count : linesCovered / lines.Count;
2013
return Math.Round(coverage, 3);
2114
}
2215

23-
public double CalculateLineCoverage(KeyValuePair<string, Methods> @class)
16+
public double CalculateLineCoverage(Methods methods)
2417
{
2518
double total = 0, average = 0;
26-
foreach (var method in @class.Value)
27-
total += CalculateLineCoverage(method);
19+
foreach (var method in methods)
20+
total += CalculateLineCoverage(method.Value);
2821

29-
average = total / @class.Value.Count;
22+
average = total / methods.Count;
3023
return Math.Round(average, 3);
3124
}
3225

33-
public double CalculateLineCoverage(KeyValuePair<string, Classes> document)
26+
public double CalculateLineCoverage(Classes classes)
3427
{
3528
double total = 0, average = 0;
36-
foreach (var @class in document.Value)
37-
total += CalculateLineCoverage(@class);
29+
foreach (var @class in classes)
30+
total += CalculateLineCoverage(@class.Value);
3831

39-
average = total / document.Value.Count;
32+
average = total / classes.Count;
4033
return Math.Round(average, 3);
4134
}
4235

43-
public double CalculateLineCoverage(KeyValuePair<string, Documents> module)
36+
public double CalculateLineCoverage(Documents documents)
4437
{
4538
double total = 0, average = 0;
46-
foreach (var document in module.Value)
47-
total += CalculateLineCoverage(document);
39+
foreach (var document in documents)
40+
total += CalculateLineCoverage(document.Value);
4841

49-
average = total / module.Value.Count;
42+
average = total / documents.Count;
5043
return Math.Round(average, 3);
5144
}
5245

53-
public double CalculateBranchCoverage(KeyValuePair<string, Lines> method)
46+
public double CalculateLineCoverage(Modules modules)
5447
{
55-
double coverage = 0, totalPoints = 0, pointsCovered = 0;
56-
foreach (var line in method.Value)
57-
{
58-
if (line.Value.IsBranchPoint)
59-
{
60-
totalPoints++;
61-
if (line.Value.Hits > 0)
62-
pointsCovered++;
63-
}
64-
}
65-
66-
coverage = totalPoints == 0 ? totalPoints : pointsCovered / totalPoints;
48+
double total = 0, average = 0;
49+
foreach (var module in modules)
50+
total += CalculateLineCoverage(module.Value);
51+
52+
average = total / modules.Count;
53+
return Math.Round(average, 3);
54+
}
55+
56+
public double CalculateBranchCoverage(Lines lines)
57+
{
58+
double pointsCovered = lines.Where(l => l.Value.Hits > 0 && l.Value.IsBranchPoint).Count();
59+
double totalPoints = lines.Where(l => l.Value.IsBranchPoint).Count();
60+
double coverage = totalPoints == 0 ? totalPoints : pointsCovered / totalPoints;
6761
return Math.Round(coverage, 3);
6862
}
6963

70-
public double CalculateBranchCoverage(KeyValuePair<string, Methods> @class)
64+
public double CalculateBranchCoverage(Methods methods)
65+
{
66+
double total = 0, average = 0;
67+
foreach (var method in methods)
68+
total += CalculateBranchCoverage(method.Value);
69+
70+
average = total / methods.Count;
71+
return Math.Round(average, 3);
72+
}
73+
74+
public double CalculateBranchCoverage(Classes classes)
7175
{
7276
double total = 0, average = 0;
73-
foreach (var method in @class.Value)
74-
total += CalculateBranchCoverage(method);
77+
foreach (var @class in classes)
78+
total += CalculateBranchCoverage(@class.Value);
7579

76-
average = total / @class.Value.Count;
80+
average = total / classes.Count;
7781
return Math.Round(average, 3);
7882
}
7983

80-
public double CalculateBranchCoverage(KeyValuePair<string, Classes> document)
84+
public double CalculateBranchCoverage(Documents documents)
8185
{
8286
double total = 0, average = 0;
83-
foreach (var @class in document.Value)
84-
total += CalculateBranchCoverage(@class);
87+
foreach (var document in documents)
88+
total += CalculateBranchCoverage(document.Value);
8589

86-
average = total / document.Value.Count;
90+
average = total / documents.Count;
8791
return Math.Round(average, 3);
8892
}
8993

90-
public double CalculateBranchCoverage(KeyValuePair<string, Documents> module)
94+
public double CalculateBranchCoverage(Modules modules)
9195
{
9296
double total = 0, average = 0;
93-
foreach (var document in module.Value)
94-
total += CalculateBranchCoverage(document);
97+
foreach (var module in modules)
98+
total += CalculateBranchCoverage(module.Value);
9599

96-
average = total / module.Value.Count;
100+
average = total / modules.Count;
97101
return Math.Round(average, 3);
98102
}
99103

100-
public double CalculateMethodCoverage(KeyValuePair<string, Lines> method)
104+
public double CalculateMethodCoverage(Lines lines)
101105
{
102-
if (method.Value.Any(l => l.Value.Hits > 0))
106+
if (lines.Any(l => l.Value.Hits > 0))
103107
return 1;
104108

105109
return 0;
106110
}
107111

108-
public double CalculateMethodCoverage(KeyValuePair<string, Methods> @class)
112+
public double CalculateMethodCoverage(Methods methods)
113+
{
114+
double total = 0, average = 0;
115+
foreach (var method in methods)
116+
total += CalculateMethodCoverage(method.Value);
117+
118+
average = total / methods.Count;
119+
return Math.Round(average, 3);
120+
}
121+
122+
public double CalculateMethodCoverage(Classes classes)
109123
{
110124
double total = 0, average = 0;
111-
foreach (var method in @class.Value)
112-
total += CalculateMethodCoverage(method);
125+
foreach (var @class in classes)
126+
total += CalculateMethodCoverage(@class.Value);
113127

114-
average = total / @class.Value.Count;
128+
average = total / classes.Count;
115129
return Math.Round(average, 3);
116130
}
117131

118-
public double CalculateMethodCoverage(KeyValuePair<string, Classes> document)
132+
public double CalculateMethodCoverage(Documents documents)
119133
{
120134
double total = 0, average = 0;
121-
foreach (var @class in document.Value)
122-
total += CalculateMethodCoverage(@class);
135+
foreach (var document in documents)
136+
total += CalculateMethodCoverage(document.Value);
123137

124-
average = total / document.Value.Count;
138+
average = total / documents.Count;
125139
return Math.Round(average, 3);
126140
}
127141

128-
public double CalculateMethodCoverage(KeyValuePair<string, Documents> module)
142+
public double CalculateMethodCoverage(Modules modules)
129143
{
130144
double total = 0, average = 0;
131-
foreach (var document in module.Value)
132-
total += CalculateMethodCoverage(document);
145+
foreach (var module in modules)
146+
total += CalculateMethodCoverage(module.Value);
133147

134-
average = total / module.Value.Count;
148+
average = total / modules.Count;
135149
return Math.Round(average, 3);
136150
}
137151
}

src/coverlet.msbuild.tasks/CoverageResultTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public override bool Execute()
6363

6464
foreach (var module in result.Modules)
6565
{
66-
double percent = summary.CalculateLineCoverage(module) * 100;
66+
double percent = summary.CalculateLineCoverage(module.Value) * 100;
6767
table.AddRow(System.IO.Path.GetFileNameWithoutExtension(module.Key), $"{percent}%");
6868
total += percent;
6969
}

test/coverlet.core.tests/CoverageSummaryTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ public void TestCalculateLineCoverage()
4040
var @class = document.Value.First();
4141
var method = @class.Value.First();
4242

43-
Assert.Equal(0.5, summary.CalculateLineCoverage(module));
44-
Assert.Equal(0.5, summary.CalculateLineCoverage(document));
45-
Assert.Equal(0.5, summary.CalculateLineCoverage(@class));
46-
Assert.Equal(0.5, summary.CalculateLineCoverage(method));
43+
Assert.Equal(0.5, summary.CalculateLineCoverage(module.Value));
44+
Assert.Equal(0.5, summary.CalculateLineCoverage(document.Value));
45+
Assert.Equal(0.5, summary.CalculateLineCoverage(@class.Value));
46+
Assert.Equal(0.5, summary.CalculateLineCoverage(method.Value));
4747
}
4848

4949
[Fact]
@@ -56,10 +56,10 @@ public void TestCalculateBranchCoverage()
5656
var @class = document.Value.First();
5757
var method = @class.Value.First();
5858

59-
Assert.Equal(1, summary.CalculateBranchCoverage(module));
60-
Assert.Equal(1, summary.CalculateBranchCoverage(document));
61-
Assert.Equal(1, summary.CalculateBranchCoverage(@class));
62-
Assert.Equal(1, summary.CalculateBranchCoverage(method));
59+
Assert.Equal(1, summary.CalculateBranchCoverage(module.Value));
60+
Assert.Equal(1, summary.CalculateBranchCoverage(document.Value));
61+
Assert.Equal(1, summary.CalculateBranchCoverage(@class.Value));
62+
Assert.Equal(1, summary.CalculateBranchCoverage(method.Value));
6363
}
6464

6565
[Fact]
@@ -72,10 +72,10 @@ public void TestCalculateMethodCoverage()
7272
var @class = document.Value.First();
7373
var method = @class.Value.First();
7474

75-
Assert.Equal(1, summary.CalculateMethodCoverage(module));
76-
Assert.Equal(1, summary.CalculateMethodCoverage(document));
77-
Assert.Equal(1, summary.CalculateMethodCoverage(@class));
78-
Assert.Equal(1, summary.CalculateMethodCoverage(method));
75+
Assert.Equal(1, summary.CalculateMethodCoverage(module.Value));
76+
Assert.Equal(1, summary.CalculateMethodCoverage(document.Value));
77+
Assert.Equal(1, summary.CalculateMethodCoverage(@class.Value));
78+
Assert.Equal(1, summary.CalculateMethodCoverage(method.Value));
7979
}
8080
}
8181
}

0 commit comments

Comments
 (0)