-
Notifications
You must be signed in to change notification settings - Fork 4
/
delay_test.go
67 lines (49 loc) · 1.47 KB
/
delay_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
package delay
import (
"testing"
"time"
)
func TestDelaySetAndGet(t *testing.T) {
initialValue := 1000 * time.Millisecond
modifiedValue := 2000 * time.Millisecond
deviation := 1000 * time.Millisecond
fixed := Fixed(initialValue)
variableNormal := VariableNormal(initialValue, deviation, nil)
variableUniform := VariableUniform(initialValue, deviation, nil)
if fixed.Get().Seconds() != 1 {
t.Fatal("Fixed delay not initialized correctly")
}
if variableNormal.Get().Seconds() != 1 {
t.Fatal("Normalized variable delay not initialized correctly")
}
if variableUniform.Get().Seconds() != 1 {
t.Fatal("Uniform variable delay not initialized correctly")
}
fixed.Set(modifiedValue)
if fixed.Get().Seconds() != 2 {
t.Fatal("Fixed delay not set correctly")
}
variableNormal.Set(modifiedValue)
if variableNormal.Get().Seconds() != 2 {
t.Fatal("Normalized variable delay not set correctly")
}
variableUniform.Set(modifiedValue)
if variableUniform.Get().Seconds() != 2 {
t.Fatal("Uniform variable delay not initialized correctly")
}
}
type fixedAdd struct {
toAdd time.Duration
}
func (fa *fixedAdd) NextWaitTime(t time.Duration) time.Duration {
return t + fa.toAdd
}
func TestDelaySleep(t *testing.T) {
initialValue := 1000 * time.Millisecond
toAdd := 500 * time.Millisecond
generator := &fixedAdd{toAdd: toAdd}
delay := Delay(initialValue, generator)
if delay.NextWaitTime() != initialValue+toAdd {
t.Fatal("NextWaitTime should call the generator")
}
}