Skip to content

Commit f8ec029

Browse files
committed
add coverage calculators to CoverageSummary class
1 parent 623c51c commit f8ec029

File tree

1 file changed

+130
-0
lines changed

1 file changed

+130
-0
lines changed

src/coverlet.core/CoverageSummary.cs

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
15
namespace Coverlet.Core
26
{
37
public class CoverageSummary
@@ -37,5 +41,131 @@ public CoverageSummaryResult CalculateSummary()
3741

3842
return result;
3943
}
44+
45+
public double CalculateLineCoverage(KeyValuePair<string, Lines> method)
46+
{
47+
double coverage = 0, totalLines = 0, linesCovered = 0;
48+
foreach (var line in method.Value)
49+
{
50+
totalLines++;
51+
if (line.Value.Hits > 0)
52+
linesCovered++;
53+
}
54+
55+
coverage = totalLines == 0 ? totalLines : linesCovered / totalLines;
56+
return Math.Round(coverage, 1);
57+
}
58+
59+
public double CalculateLineCoverage(KeyValuePair<string, Methods> @class)
60+
{
61+
double total = 0, average = 0;
62+
foreach (var method in @class.Value)
63+
total += CalculateLineCoverage(method);
64+
65+
average = total / @class.Value.Count;
66+
return Math.Round(average, 1);
67+
}
68+
69+
public double CalculateLineCoverage(KeyValuePair<string, Classes> document)
70+
{
71+
double total = 0, average = 0;
72+
foreach (var @class in document.Value)
73+
total += CalculateLineCoverage(@class);
74+
75+
average = total / document.Value.Count;
76+
return Math.Round(average, 1);
77+
}
78+
79+
public double CalculateLineCoverage(KeyValuePair<string, Documents> module)
80+
{
81+
double total = 0, average = 0;
82+
foreach (var document in module.Value)
83+
total += CalculateLineCoverage(document);
84+
85+
average = total / module.Value.Count;
86+
return Math.Round(average, 1);
87+
}
88+
89+
public double CalculateBranchCoverage(KeyValuePair<string, Lines> method)
90+
{
91+
double coverage = 0, totalLines = 0, linesCovered = 0;
92+
foreach (var line in method.Value)
93+
{
94+
totalLines++;
95+
if (line.Value.Hits > 0 && line.Value.IsBranchPoint)
96+
linesCovered++;
97+
}
98+
99+
coverage = totalLines == 0 ? totalLines : linesCovered / totalLines;
100+
return Math.Round(coverage, 1);
101+
}
102+
103+
public double CalculateBranchCoverage(KeyValuePair<string, Methods> @class)
104+
{
105+
double total = 0, average = 0;
106+
foreach (var method in @class.Value)
107+
total += CalculateBranchCoverage(method);
108+
109+
average = total / @class.Value.Count;
110+
return Math.Round(average, 1);
111+
}
112+
113+
public double CalculateBranchCoverage(KeyValuePair<string, Classes> document)
114+
{
115+
double total = 0, average = 0;
116+
foreach (var @class in document.Value)
117+
total += CalculateBranchCoverage(@class);
118+
119+
average = total / document.Value.Count;
120+
return Math.Round(average, 1);
121+
}
122+
123+
public double CalculateBranchCoverage(KeyValuePair<string, Documents> module)
124+
{
125+
double total = 0, average = 0;
126+
foreach (var document in module.Value)
127+
total += CalculateBranchCoverage(document);
128+
129+
average = total / module.Value.Count;
130+
return Math.Round(average, 1);
131+
}
132+
133+
public double CalculateMethodCoverage(KeyValuePair<string, Lines> method)
134+
{
135+
if (method.Value.Any(l => l.Value.Hits > 0))
136+
return 1;
137+
138+
return 0;
139+
}
140+
141+
public double CalculateMethodCoverage(KeyValuePair<string, Methods> @class)
142+
{
143+
double total = 0, average = 0;
144+
foreach (var method in @class.Value)
145+
total += CalculateMethodCoverage(method);
146+
147+
average = total / @class.Value.Count;
148+
return Math.Round(average, 1);
149+
}
150+
151+
public double CalculateMethodCoverage(KeyValuePair<string, Classes> document)
152+
{
153+
double total = 0, average = 0;
154+
foreach (var @class in document.Value)
155+
total += CalculateMethodCoverage(@class);
156+
157+
average = total / document.Value.Count;
158+
return Math.Round(average, 1);
159+
}
160+
161+
public double CalculateMethodCoverage(KeyValuePair<string, Documents> module)
162+
{
163+
double total = 0, average = 0;
164+
foreach (var document in module.Value)
165+
total += CalculateMethodCoverage(document);
166+
167+
average = total / module.Value.Count;
168+
return Math.Round(average, 1);
169+
}
40170
}
41171
}

0 commit comments

Comments
 (0)