@@ -14,11 +14,11 @@ import (
14
14
func TestNewWindow (t * testing.T ) {
15
15
t .Run ("normal offset" , func (t * testing.T ) {
16
16
want := execute.Window {
17
- Every : values .ConvertDuration (time .Minute ),
18
- Period : values .ConvertDuration (time .Minute ),
19
- Offset : values .ConvertDuration (time .Second ),
17
+ Every : values .ConvertDurationNsecs (time .Minute ),
18
+ Period : values .ConvertDurationNsecs (time .Minute ),
19
+ Offset : values .ConvertDurationNsecs (time .Second ),
20
20
}
21
- got := MustWindow (values .ConvertDuration (time .Minute ), values .ConvertDuration (time .Minute ), values .ConvertDuration (time .Second ))
21
+ got := MustWindow (values .ConvertDurationNsecs (time .Minute ), values .ConvertDurationNsecs (time .Minute ), values .ConvertDurationNsecs (time .Second ), false )
22
22
if ! cmp .Equal (want , got ) {
23
23
t .Errorf ("window different; -want/+got:\n %v\n " , cmp .Diff (want , got ))
24
24
}
@@ -27,14 +27,14 @@ func TestNewWindow(t *testing.T) {
27
27
// offset larger than "every" duration will be normalized
28
28
t .Run ("larger offset" , func (t * testing.T ) {
29
29
want := execute.Window {
30
- Every : values .ConvertDuration (time .Minute ),
31
- Period : values .ConvertDuration (time .Minute ),
32
- Offset : values .ConvertDuration (30 * time .Second ),
30
+ Every : values .ConvertDurationNsecs (time .Minute ),
31
+ Period : values .ConvertDurationNsecs (time .Minute ),
32
+ Offset : values .ConvertDurationNsecs (30 * time .Second ),
33
33
}
34
34
got := MustWindow (
35
- values .ConvertDuration (time .Minute ),
36
- values .ConvertDuration (time .Minute ),
37
- values .ConvertDuration (2 * time .Minute + 30 * time .Second ))
35
+ values .ConvertDurationNsecs (time .Minute ),
36
+ values .ConvertDurationNsecs (time .Minute ),
37
+ values .ConvertDurationNsecs (2 * time .Minute + 30 * time .Second ), false )
38
38
if ! cmp .Equal (want , got ) {
39
39
t .Errorf ("window different; -want/+got:\n %v\n " , cmp .Diff (want , got ))
40
40
}
@@ -43,14 +43,14 @@ func TestNewWindow(t *testing.T) {
43
43
// Negative offset will be normalized
44
44
t .Run ("negative offset" , func (t * testing.T ) {
45
45
want := execute.Window {
46
- Every : values .ConvertDuration (time .Minute ),
47
- Period : values .ConvertDuration (time .Minute ),
48
- Offset : values .ConvertDuration (30 * time .Second ),
46
+ Every : values .ConvertDurationNsecs (time .Minute ),
47
+ Period : values .ConvertDurationNsecs (time .Minute ),
48
+ Offset : values .ConvertDurationNsecs (30 * time .Second ),
49
49
}
50
50
got := MustWindow (
51
- values .ConvertDuration (time .Minute ),
52
- values .ConvertDuration (time .Minute ),
53
- values .ConvertDuration (- 2 * time .Minute + 30 * time .Second ))
51
+ values .ConvertDurationNsecs (time .Minute ),
52
+ values .ConvertDurationNsecs (time .Minute ),
53
+ values .ConvertDurationNsecs (- 2 * time .Minute + 30 * time .Second ), false )
54
54
if ! cmp .Equal (want , got ) {
55
55
t .Errorf ("window different; -want/+got:\n %v\n " , cmp .Diff (want , got ))
56
56
}
@@ -63,7 +63,7 @@ func TestNewWindow(t *testing.T) {
63
63
mustParseDuration ("1mo2w" ),
64
64
mustParseDuration ("1mo2w" ),
65
65
values.Duration {},
66
- )
66
+ false )
67
67
if want , got := errAsString (wantErr ), errAsString (gotErr ); want != got {
68
68
t .Errorf ("window error different; -want/+got:\n %v\n " , cmp .Diff (want , got ))
69
69
}
@@ -76,7 +76,7 @@ func TestNewWindow(t *testing.T) {
76
76
values.Duration {},
77
77
values.Duration {},
78
78
values.Duration {},
79
- )
79
+ false )
80
80
if want , got := errAsString (wantErr ), errAsString (gotErr ); want != got {
81
81
t .Errorf ("window error different; -want/+got:\n %v\n " , cmp .Diff (want , got ))
82
82
}
@@ -93,9 +93,9 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
93
93
{
94
94
name : "simple" ,
95
95
w : MustWindow (
96
- values .ConvertDuration (5 * time .Minute ),
97
- values .ConvertDuration (5 * time .Minute ),
98
- values .ConvertDuration (0 )),
96
+ values .ConvertDurationNsecs (5 * time .Minute ),
97
+ values .ConvertDurationNsecs (5 * time .Minute ),
98
+ values .ConvertDurationNsecs (0 ), false ),
99
99
t : execute .Time (6 * time .Minute ),
100
100
want : execute.Bounds {
101
101
Start : execute .Time (5 * time .Minute ),
@@ -105,21 +105,45 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
105
105
{
106
106
name : "simple with offset" ,
107
107
w : MustWindow (
108
- values .ConvertDuration (5 * time .Minute ),
109
- values .ConvertDuration (5 * time .Minute ),
110
- values .ConvertDuration (30 * time .Second )),
108
+ values .ConvertDurationNsecs (5 * time .Minute ),
109
+ values .ConvertDurationNsecs (5 * time .Minute ),
110
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
111
111
t : execute .Time (5 * time .Minute ),
112
112
want : execute.Bounds {
113
113
Start : execute .Time (30 * time .Second ),
114
114
Stop : execute .Time (5 * time .Minute + 30 * time .Second ),
115
115
},
116
116
},
117
+ {
118
+ name : "simple months" ,
119
+ w : MustWindow (
120
+ values .ConvertDurationMonths (5 ),
121
+ values .ConvertDurationMonths (5 ),
122
+ values .ConvertDurationMonths (0 ), true ),
123
+ t : values .ConvertTime (time .Date (1970 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )),
124
+ want : execute.Bounds {
125
+ Start : values .ConvertTime (time .Date (1970 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )),
126
+ Stop : values .ConvertTime (time .Date (1970 , time .June , 1 , 0 , 0 , 0 , 0 , time .UTC )),
127
+ },
128
+ },
129
+ {
130
+ name : "simple months with offset" ,
131
+ w : MustWindow (
132
+ values .ConvertDurationMonths (3 ),
133
+ values .ConvertDurationMonths (3 ),
134
+ values .ConvertDurationMonths (1 ), true ),
135
+ t : values .ConvertTime (time .Date (1970 , time .January , 1 , 0 , 0 , 0 , 0 , time .UTC )),
136
+ want : execute.Bounds {
137
+ Start : values .ConvertTime (time .Date (1969 , time .November , 1 , 0 , 0 , 0 , 0 , time .UTC )),
138
+ Stop : values .ConvertTime (time .Date (1970 , time .February , 1 , 0 , 0 , 0 , 0 , time .UTC )),
139
+ },
140
+ },
117
141
{
118
142
name : "underlapping" ,
119
143
w : MustWindow (
120
- values .ConvertDuration (2 * time .Minute ),
121
- values .ConvertDuration (1 * time .Minute ),
122
- values .ConvertDuration (30 * time .Second )),
144
+ values .ConvertDurationNsecs (2 * time .Minute ),
145
+ values .ConvertDurationNsecs (1 * time .Minute ),
146
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
123
147
t : execute .Time (3 * time .Minute ),
124
148
want : execute.Bounds {
125
149
Start : execute .Time (3 * time .Minute + 30 * time .Second ),
@@ -129,9 +153,9 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
129
153
{
130
154
name : "underlapping not contained" ,
131
155
w : MustWindow (
132
- values .ConvertDuration (2 * time .Minute ),
133
- values .ConvertDuration (1 * time .Minute ),
134
- values .ConvertDuration (30 * time .Second )),
156
+ values .ConvertDurationNsecs (2 * time .Minute ),
157
+ values .ConvertDurationNsecs (1 * time .Minute ),
158
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
135
159
t : execute .Time (2 * time .Minute + 45 * time .Second ),
136
160
want : execute.Bounds {
137
161
Start : execute .Time (3 * time .Minute + 30 * time .Second ),
@@ -141,9 +165,9 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
141
165
{
142
166
name : "overlapping" ,
143
167
w : MustWindow (
144
- values .ConvertDuration (1 * time .Minute ),
145
- values .ConvertDuration (2 * time .Minute ),
146
- values .ConvertDuration (30 * time .Second )),
168
+ values .ConvertDurationNsecs (1 * time .Minute ),
169
+ values .ConvertDurationNsecs (2 * time .Minute ),
170
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
147
171
t : execute .Time (30 * time .Second ),
148
172
want : execute.Bounds {
149
173
Start : execute .Time (- 30 * time .Second ),
@@ -153,9 +177,9 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
153
177
{
154
178
name : "partially overlapping" ,
155
179
w : MustWindow (
156
- values .ConvertDuration (1 * time .Minute ),
157
- values .ConvertDuration (3 * time .Minute + 30 * time .Second ),
158
- values .ConvertDuration (30 * time .Second )),
180
+ values .ConvertDurationNsecs (1 * time .Minute ),
181
+ values .ConvertDurationNsecs (3 * time .Minute + 30 * time .Second ),
182
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
159
183
t : execute .Time (5 * time .Minute + 45 * time .Second ),
160
184
want : execute.Bounds {
161
185
Start : execute .Time (3 * time .Minute ),
@@ -165,9 +189,9 @@ func TestWindow_GetEarliestBounds(t *testing.T) {
165
189
{
166
190
name : "partially overlapping (t on boundary)" ,
167
191
w : MustWindow (
168
- values .ConvertDuration (1 * time .Minute ),
169
- values .ConvertDuration (3 * time .Minute + 30 * time .Second ),
170
- values .ConvertDuration (30 * time .Second )),
192
+ values .ConvertDurationNsecs (1 * time .Minute ),
193
+ values .ConvertDurationNsecs (3 * time .Minute + 30 * time .Second ),
194
+ values .ConvertDurationNsecs (30 * time .Second ), false ),
171
195
t : execute .Time (5 * time .Minute ),
172
196
want : execute.Bounds {
173
197
Start : execute .Time (2 * time .Minute ),
@@ -198,8 +222,8 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
198
222
{
199
223
name : "simple" ,
200
224
w : execute.Window {
201
- Every : values .ConvertDuration (time .Minute ),
202
- Period : values .ConvertDuration (time .Minute ),
225
+ Every : values .ConvertDurationNsecs (time .Minute ),
226
+ Period : values .ConvertDurationNsecs (time .Minute ),
203
227
},
204
228
b : execute.Bounds {
205
229
Start : execute .Time (5 * time .Minute ),
@@ -214,9 +238,9 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
214
238
{
215
239
name : "simple with offset" ,
216
240
w : execute.Window {
217
- Every : values .ConvertDuration (time .Minute ),
218
- Period : values .ConvertDuration (time .Minute ),
219
- Offset : values .ConvertDuration (15 * time .Second ),
241
+ Every : values .ConvertDurationNsecs (time .Minute ),
242
+ Period : values .ConvertDurationNsecs (time .Minute ),
243
+ Offset : values .ConvertDurationNsecs (15 * time .Second ),
220
244
},
221
245
b : execute.Bounds {
222
246
Start : execute .Time (5 * time .Minute ),
@@ -240,8 +264,8 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
240
264
{
241
265
name : "underlapping, bounds in gap" ,
242
266
w : execute.Window {
243
- Every : values .ConvertDuration (2 * time .Minute ),
244
- Period : values .ConvertDuration (time .Minute ),
267
+ Every : values .ConvertDurationNsecs (2 * time .Minute ),
268
+ Period : values .ConvertDurationNsecs (time .Minute ),
245
269
},
246
270
b : execute.Bounds {
247
271
Start : execute .Time (30 * time .Second ),
@@ -252,9 +276,9 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
252
276
{
253
277
name : "underlapping" ,
254
278
w : execute.Window {
255
- Every : values .ConvertDuration (2 * time .Minute ),
256
- Period : values .ConvertDuration (time .Minute ),
257
- Offset : values .ConvertDuration (30 * time .Second ),
279
+ Every : values .ConvertDurationNsecs (2 * time .Minute ),
280
+ Period : values .ConvertDurationNsecs (time .Minute ),
281
+ Offset : values .ConvertDurationNsecs (30 * time .Second ),
258
282
},
259
283
b : execute.Bounds {
260
284
Start : execute .Time (time .Minute + 45 * time .Second ),
@@ -274,8 +298,8 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
274
298
{
275
299
name : "overlapping" ,
276
300
w : execute.Window {
277
- Every : values .ConvertDuration (1 * time .Minute ),
278
- Period : values .ConvertDuration (2 * time .Minute + 15 * time .Second ),
301
+ Every : values .ConvertDurationNsecs (1 * time .Minute ),
302
+ Period : values .ConvertDurationNsecs (2 * time .Minute + 15 * time .Second ),
279
303
},
280
304
b : execute.Bounds {
281
305
Start : execute .Time (10 * time .Minute ),
@@ -385,8 +409,8 @@ func TestWindow_GetOverlappingBounds(t *testing.T) {
385
409
}
386
410
}
387
411
388
- func MustWindow (every , period , offset execute.Duration ) execute.Window {
389
- w , err := execute .NewWindow (every , period , offset )
412
+ func MustWindow (every , period , offset execute.Duration , months bool ) execute.Window {
413
+ w , err := execute .NewWindow (every , period , offset , months )
390
414
if err != nil {
391
415
panic (err )
392
416
}
0 commit comments