-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathseries_test.go
More file actions
126 lines (96 loc) · 2.66 KB
/
Copy pathseries_test.go
File metadata and controls
126 lines (96 loc) · 2.66 KB
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
121
122
123
124
125
126
package margaid
import (
"testing"
"time"
"github.com/erkkah/margaid/xt"
)
func TestConstruction(t *testing.T) {
x := xt.X(t)
s := NewSeries()
s.Add(MakeValue(0, 1))
x.Equal(s.Size(), 1)
}
func TestCapBySize(t *testing.T) {
x := xt.X(t)
s := NewSeries(CappedBySize(3))
for i := 0; i < 10; i++ {
s.Add(MakeValue(float64(i*2), float64(i)))
}
x.Equal(s.Size(), 3)
}
func TestCapByTime(t *testing.T) {
x := xt.X(t)
now := time.Now()
reference := func() time.Time {
return now
}
s := NewSeries(CappedByAge(5*time.Millisecond, reference))
for i := 0; i < 10; i++ {
s.Add(MakeValue(SecondsFromTime(now.Add(-2*time.Duration(10-i)*time.Millisecond)), float64(i)))
}
x.Equal(s.Size(), 2)
x.Assert(TimeFromSeconds(s.MinX()).After(now.Add(-5 * time.Millisecond)))
}
func TestMinMax(t *testing.T) {
x := xt.X(t)
s := NewSeries()
s.Add(MakeValue(0, 1))
s.Add(MakeValue(1000, 2))
s.Add(MakeValue(-10, 3))
x.Equal(s.MinX(), -10.0)
x.Equal(s.MaxX(), 1000.0)
}
func TestAggregateAvg(t *testing.T) {
x := xt.X(t)
s := NewSeries(AggregatedBy(Avg, time.Second))
now := time.Now().Truncate(time.Second).Add(time.Millisecond * 50)
later := now.Add(time.Millisecond * 100)
tooLate := now.Add(time.Second)
s.Add(
MakeValue(SecondsFromTime(now), 10),
MakeValue(SecondsFromTime(later), 20),
MakeValue(SecondsFromTime(tooLate), 30),
)
values := s.Values()
x.True(values.Next())
v := values.Get()
x.Equal(v.Y, 15.0)
x.Equal(v.X, SecondsFromTime(now.Truncate(time.Second)))
x.False(values.Next(), "Series should be empty")
}
func TestAggregateSum(t *testing.T) {
x := xt.X(t)
s := NewSeries(AggregatedBy(Sum, time.Second))
now := time.Now().Truncate(time.Second).Add(time.Millisecond * 50)
later := now.Add(time.Millisecond * 100)
tooLate := now.Add(time.Second)
s.Add(
MakeValue(SecondsFromTime(now), 10),
MakeValue(SecondsFromTime(later), 20),
MakeValue(SecondsFromTime(tooLate), 30),
)
values := s.Values()
x.True(values.Next())
v := values.Get()
x.Equal(v.Y, 30.0)
x.Equal(v.X, SecondsFromTime(now.Truncate(time.Second)))
x.False(values.Next(), "Series should be empty")
}
func TestAggregateDelta(t *testing.T) {
x := xt.X(t)
s := NewSeries(AggregatedBy(Delta, time.Second))
now := time.Now().Truncate(time.Second).Add(time.Millisecond * 50)
later := now.Add(time.Millisecond * 100)
tooLate := now.Add(time.Second)
s.Add(
MakeValue(SecondsFromTime(now), 10),
MakeValue(SecondsFromTime(later), 20),
MakeValue(SecondsFromTime(tooLate), 30),
)
values := s.Values()
x.True(values.Next())
v := values.Get()
x.Equal(v.Y, 10.0)
x.Equal(v.X, SecondsFromTime(now.Truncate(time.Second)))
x.False(values.Next(), "Series should be empty")
}