summaryrefslogtreecommitdiff
path: root/vendor/github.com/onsi/ginkgo/internal/leafnodes/measure_node.go
blob: 3ab9a6d5524b4f39635f400d7d9462f41e0227c2 (plain)
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
package leafnodes

import (
	"reflect"

	"github.com/onsi/ginkgo/internal/failer"
	"github.com/onsi/ginkgo/types"
)

type MeasureNode struct {
	runner *runner

	text        string
	flag        types.FlagType
	samples     int
	benchmarker *benchmarker
}

func NewMeasureNode(text string, body interface{}, flag types.FlagType, codeLocation types.CodeLocation, samples int, failer *failer.Failer, componentIndex int) *MeasureNode {
	benchmarker := newBenchmarker()

	wrappedBody := func() {
		reflect.ValueOf(body).Call([]reflect.Value{reflect.ValueOf(benchmarker)})
	}

	return &MeasureNode{
		runner: newRunner(wrappedBody, codeLocation, 0, failer, types.SpecComponentTypeMeasure, componentIndex),

		text:        text,
		flag:        flag,
		samples:     samples,
		benchmarker: benchmarker,
	}
}

func (node *MeasureNode) Run() (outcome types.SpecState, failure types.SpecFailure) {
	return node.runner.run()
}

func (node *MeasureNode) MeasurementsReport() map[string]*types.SpecMeasurement {
	return node.benchmarker.measurementsReport()
}

func (node *MeasureNode) Type() types.SpecComponentType {
	return types.SpecComponentTypeMeasure
}

func (node *MeasureNode) Text() string {
	return node.text
}

func (node *MeasureNode) Flag() types.FlagType {
	return node.flag
}

func (node *MeasureNode) CodeLocation() types.CodeLocation {
	return node.runner.codeLocation
}

func (node *MeasureNode) Samples() int {
	return node.samples
}