@@ -183,3 +183,48 @@ func TestParseIntervalStringToTimeDuration(t *testing.T) {
183
183
})
184
184
}
185
185
}
186
+
187
+ func TestRoundInterval (t * testing.T ) {
188
+ tcs := []struct {
189
+ input time.Duration
190
+ expected time.Duration
191
+ }{
192
+ {input : 9 * time .Millisecond , expected : time .Millisecond * 1 },
193
+ {input : 14 * time .Millisecond , expected : time .Millisecond * 10 },
194
+ {input : 34 * time .Millisecond , expected : time .Millisecond * 20 },
195
+ {input : 74 * time .Millisecond , expected : time .Millisecond * 50 },
196
+ {input : 140 * time .Millisecond , expected : time .Millisecond * 100 },
197
+ {input : 320 * time .Millisecond , expected : time .Millisecond * 200 },
198
+ {input : 740 * time .Millisecond , expected : time .Millisecond * 500 },
199
+ {input : 1400 * time .Millisecond , expected : time .Millisecond * 1000 },
200
+ {input : 3200 * time .Millisecond , expected : time .Millisecond * 2000 },
201
+ {input : 7400 * time .Millisecond , expected : time .Millisecond * 5000 },
202
+ {input : 12400 * time .Millisecond , expected : time .Millisecond * 10000 },
203
+ {input : 17250 * time .Millisecond , expected : time .Millisecond * 15000 },
204
+ {input : 23000 * time .Millisecond , expected : time .Millisecond * 20000 },
205
+ {input : 42000 * time .Millisecond , expected : time .Millisecond * 30000 },
206
+ {input : 85000 * time .Millisecond , expected : time .Millisecond * 60000 },
207
+ {input : 200000 * time .Millisecond , expected : time .Millisecond * 120000 },
208
+ {input : 420000 * time .Millisecond , expected : time .Millisecond * 300000 },
209
+ {input : 720000 * time .Millisecond , expected : time .Millisecond * 600000 },
210
+ {input : 1000000 * time .Millisecond , expected : time .Millisecond * 900000 },
211
+ {input : 1250000 * time .Millisecond , expected : time .Millisecond * 1200000 },
212
+ {input : 2500000 * time .Millisecond , expected : time .Millisecond * 1800000 },
213
+ {input : 5200000 * time .Millisecond , expected : time .Millisecond * 3600000 },
214
+ {input : 8500000 * time .Millisecond , expected : time .Millisecond * 7200000 },
215
+ {input : 15000000 * time .Millisecond , expected : time .Millisecond * 10800000 },
216
+ {input : 30000000 * time .Millisecond , expected : time .Millisecond * 21600000 },
217
+ {input : 85000000 * time .Millisecond , expected : time .Millisecond * 43200000 },
218
+ {input : 150000000 * time .Millisecond , expected : time .Millisecond * 86400000 },
219
+ {input : 600000000 * time .Millisecond , expected : time .Millisecond * 86400000 },
220
+ {input : 1500000000 * time .Millisecond , expected : time .Millisecond * 604800000 },
221
+ {input : 3500000000 * time .Millisecond , expected : time .Millisecond * 2592000000 },
222
+ {input : 40000000000 * time .Millisecond , expected : time .Millisecond * 31536000000 },
223
+ }
224
+ for i , tc := range tcs {
225
+ t .Run (fmt .Sprintf ("testcase %d" , i ), func (t * testing.T ) {
226
+ res := RoundInterval (tc .input )
227
+ require .Equal (t , tc .expected , res , "input %q" , tc .input )
228
+ })
229
+ }
230
+ }
0 commit comments