-
Notifications
You must be signed in to change notification settings - Fork 0
/
result.go
120 lines (105 loc) · 3.22 KB
/
result.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
//Copyright (c) 2013, The Impendulo Authors
//All rights reserved.
//
//Redistribution and use in source and binary forms, with or without modification,
//are permitted provided that the following conditions are met:
//
// Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright notice, this
// list of conditions and the following disclaimer in the documentation and/or
// other materials provided with the distribution.
//
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
//ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
//ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
//ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package jacoco
import (
"github.com/godfried/impendulo/tool"
"github.com/godfried/impendulo/tool/result"
"github.com/godfried/impendulo/util"
"labix.org/v2/mgo/bson"
)
type (
Result struct {
Id bson.ObjectId `bson:"_id"`
FileId bson.ObjectId `bson:"fileid"`
TestId bson.ObjectId `bson:"testid"`
TestName string `bson:"name"`
Report *Report `bson:"report"`
GridFS bool `bson:"gridfs"`
Type string `bson:"type"`
}
)
//SetReport
func (r *Result) SetReport(n result.Reporter) {
if n == nil {
r.Report = nil
} else {
r.Report = n.(*Report)
}
}
//OnGridFS
func (r *Result) OnGridFS() bool {
return r.GridFS
}
//GetName
func (r *Result) GetName() string {
return r.TestName
}
//GetId
func (r *Result) GetId() bson.ObjectId {
return r.Id
}
//GetFileId
func (r *Result) GetFileId() bson.ObjectId {
return r.FileId
}
func (r *Result) GetTestId() bson.ObjectId {
return r.TestId
}
func (r *Result) Reporter() result.Reporter {
return r.Report
}
func (r *Result) Success() bool {
return r.Report != nil
}
func (r *Result) Template() string {
return "jacocoresult"
}
func (r *Result) GetType() string {
return r.Type
}
//ChartVals
func (r *Result) ChartVals() []*result.ChartVal {
v := make([]*result.ChartVal, len(r.Report.Counters))
for i, c := range r.Report.MainCounters {
p := util.Round(float64(c.Covered)/float64(c.Covered+c.Missed)*100.0, 2)
v[i] = &result.ChartVal{Name: util.Title(c.Type) + " Coverage", Y: p, FileId: r.FileId}
}
return v
}
func NewResult(fileId, testId bson.ObjectId, name string, xml, html []byte, target *tool.Target) (*Result, error) {
id := bson.NewObjectId()
r, e := NewReport(id, xml, html, target)
if e != nil {
return nil, e
}
return &Result{
Id: id,
FileId: fileId,
TestId: testId,
TestName: name,
GridFS: len(xml)+len(html) > tool.MAX_SIZE,
Report: r,
Type: NAME,
}, nil
}