...
1
16
17 package calculation
18
19 import (
20 "path"
21 "strings"
22 )
23
24
25 type CoverageList struct {
26 *Coverage
27 Group []Coverage
28 }
29
30
31 func newCoverageList(name string) *CoverageList {
32 return &CoverageList{
33 Coverage: &Coverage{Name: name},
34 Group: []Coverage{},
35 }
36 }
37
38
39 func (covList *CoverageList) Ratio() float32 {
40 covList.summarize()
41 return covList.Coverage.Ratio()
42 }
43
44
45 func (covList *CoverageList) summarize() {
46 covList.NumCoveredStmts = 0
47 covList.NumAllStmts = 0
48 for _, item := range covList.Group {
49 covList.NumCoveredStmts += item.NumCoveredStmts
50 covList.NumAllStmts += item.NumAllStmts
51 }
52 }
53
54
55 func (covList *CoverageList) Subset(prefix string) *CoverageList {
56 s := newCoverageList("Filtered Summary: " + prefix)
57 for _, c := range covList.Group {
58 if strings.HasPrefix(c.Name, prefix) {
59 s.Group = append(s.Group, c)
60 }
61 }
62 return s
63 }
64
65
66 func (covList CoverageList) ListDirectories() []string {
67 dirSet := map[string]bool{}
68 for _, cov := range covList.Group {
69 dirSet[path.Dir(cov.Name)] = true
70 }
71 var result []string
72 for key := range dirSet {
73 result = append(result, key)
74 }
75 return result
76 }
77
View as plain text