-
Notifications
You must be signed in to change notification settings - Fork 1
/
types_test.go
81 lines (76 loc) · 1.71 KB
/
types_test.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
package main
import "testing"
func TestMetricTypeByChannels(t *testing.T) {
var testCases = []struct {
chs []string
typ MetricType
}{
{[]string{}, -1},
{[]string{"xyz"}, -1},
{[]string{"avg"}, Averager},
{[]string{"avg", "xyz"}, -1},
{[]string{"avg", "counter"}, -1},
{[]string{"avg", "avg-cnt"}, Averager},
{[]string{"avg", "avg-cnt", "counter"}, -1},
}
for _, tc := range testCases {
mt, err := metricTypeByChannels(tc.chs)
if tc.typ == -1 {
if mt != -1 {
t.Error("Should have failed:", tc.chs)
} else if err == nil {
t.Error("nil error:", tc.chs)
}
} else {
if mt == -1 {
t.Error("Shouldn't have failed:", tc.chs)
t.Error("Error:", err)
t.Error("Expected:", tc.typ)
} else if mt != tc.typ {
t.Error("Incorrect result:", tc.chs)
t.Error("Expected:", tc.typ)
t.Error("Result:", mt)
} else if err != nil {
t.Error("Non-nil error:", tc.chs)
t.Error("Error:", err)
}
}
if t.Failed() {
return
}
}
}
func TestGetChannelIndex(t *testing.T) {
var testCases = []struct {
typ MetricType
ch string
ok bool
}{
{Counter, "counter", true},
{Timer, "timer-min", true},
{Gauge, "gauge", true},
{Averager, "avg", true},
{Accumulator, "acc", true},
{Counter, "xyz", false},
{Counter, "timer-min", false},
}
for _, tc := range testCases {
i := getChannelIndex(tc.typ, tc.ch)
if tc.ok {
if i == -1 {
t.Error("Shouldn't have failed:", tc.typ, tc.ch)
} else if metricTypes[tc.typ].channels[i] != tc.ch {
t.Error("Incorrect result:", tc.typ, tc.ch)
t.Error("Result:", i)
}
} else {
if i != -1 {
t.Error("Should have failed:", tc.typ, tc.ch)
t.Error("Result:", i)
}
}
if t.Failed() {
return
}
}
}