1 package progress
2
3 import (
4 "testing"
5 "time"
6
7 "github.com/stretchr/testify/assert"
8 )
9
10 func TestTracker_ETA(t *testing.T) {
11 timeDelayUnit := time.Millisecond
12 timeDelay := timeDelayUnit * 25
13
14 tracker := Tracker{}
15 assert.Equal(t, time.Duration(0), tracker.ETA())
16
17 tracker.Total = 100
18 tracker.start()
19 assert.Equal(t, time.Duration(0), tracker.ETA())
20 time.Sleep(timeDelay)
21 tracker.Increment(50)
22 assert.NotEqual(t, time.Duration(0), tracker.ETA())
23 tracker.Increment(50)
24 assert.Equal(t, time.Duration(0), tracker.ETA())
25
26 tracker = Tracker{Total: 100, ExpectedDuration: timeDelay}
27 tracker.start()
28 assert.True(t, tracker.ETA() <= tracker.ExpectedDuration)
29 time.Sleep(timeDelay)
30 tracker.Increment(50)
31 assert.NotEqual(t, time.Duration(0), tracker.ETA())
32 tracker.Increment(50)
33 assert.Equal(t, time.Duration(0), tracker.ETA())
34 }
35
36 func TestTracker_Increment(t *testing.T) {
37 tracker := Tracker{Total: 100}
38 assert.Equal(t, int64(0), tracker.value)
39 assert.Equal(t, int64(100), tracker.Total)
40
41 tracker.Increment(10)
42 assert.Equal(t, int64(10), tracker.value)
43 assert.Equal(t, int64(100), tracker.Total)
44
45 tracker.Increment(100)
46 assert.Equal(t, int64(110), tracker.value)
47 assert.Equal(t, int64(110), tracker.Total)
48 assert.False(t, tracker.timeStop.IsZero())
49 assert.True(t, tracker.IsDone())
50 }
51
52 func TestTracker_IncrementWithError(t *testing.T) {
53 tracker := Tracker{Total: 100}
54 assert.Equal(t, int64(0), tracker.value)
55 assert.Equal(t, int64(100), tracker.Total)
56 assert.False(t, tracker.IsErrored())
57
58 tracker.IncrementWithError(10)
59 assert.Equal(t, int64(10), tracker.value)
60 assert.Equal(t, int64(100), tracker.Total)
61 assert.True(t, tracker.IsErrored())
62
63 tracker.IncrementWithError(100)
64 assert.Equal(t, int64(110), tracker.value)
65 assert.Equal(t, int64(110), tracker.Total)
66 assert.False(t, tracker.timeStop.IsZero())
67 assert.True(t, tracker.IsErrored())
68 assert.True(t, tracker.IsDone())
69 }
70
71 func TestTracker_IsDone(t *testing.T) {
72 tracker := Tracker{Total: 10}
73 assert.False(t, tracker.IsDone())
74
75 tracker.Increment(10)
76 assert.True(t, tracker.IsDone())
77 }
78
79 func TestTracker_IsIndeterminate(t *testing.T) {
80 tracker := Tracker{Total: 10}
81 assert.False(t, tracker.IsIndeterminate())
82
83 tracker.Total = 0
84 assert.True(t, tracker.IsIndeterminate())
85 }
86
87 func TestTracker_MarkAsDone(t *testing.T) {
88 tracker := Tracker{}
89 assert.False(t, tracker.IsDone())
90 assert.False(t, tracker.IsErrored())
91 assert.True(t, tracker.timeStop.IsZero())
92
93 tracker.MarkAsDone()
94 assert.True(t, tracker.IsDone())
95 assert.False(t, tracker.IsErrored())
96 assert.False(t, tracker.timeStop.IsZero())
97
98 tracker.MarkAsErrored()
99 assert.True(t, tracker.IsDone())
100 assert.False(t, tracker.IsErrored())
101 assert.False(t, tracker.timeStop.IsZero())
102 }
103
104 func TestTracker_MarkAsError(t *testing.T) {
105 tracker := Tracker{}
106 assert.False(t, tracker.IsDone())
107 assert.False(t, tracker.IsErrored())
108 assert.True(t, tracker.timeStop.IsZero())
109
110 tracker.MarkAsErrored()
111 assert.True(t, tracker.IsDone())
112 assert.True(t, tracker.IsErrored())
113 assert.False(t, tracker.timeStop.IsZero())
114
115 tracker.MarkAsDone()
116 assert.True(t, tracker.IsDone())
117 assert.True(t, tracker.IsErrored())
118 assert.False(t, tracker.timeStop.IsZero())
119 }
120
121 func TestTracker_PercentDone(t *testing.T) {
122 tracker := Tracker{}
123 assert.Equal(t, 0.00, tracker.PercentDone())
124
125 tracker.Total = 100
126 assert.Equal(t, 0.00, tracker.PercentDone())
127
128 for idx := 1; idx <= 100; idx++ {
129 tracker.Increment(1)
130 assert.Equal(t, float64(idx), tracker.PercentDone())
131 }
132 }
133
134 func TestTracker_Reset(t *testing.T) {
135 tracker := Tracker{Total: 100}
136 assert.False(t, tracker.done)
137 assert.Equal(t, time.Time{}, tracker.timeStart)
138 assert.Equal(t, time.Time{}, tracker.timeStop)
139 assert.Equal(t, int64(0), tracker.value)
140
141 tracker.start()
142 tracker.Increment(tracker.Total)
143 tracker.stop()
144 assert.True(t, tracker.done)
145 assert.NotEqual(t, time.Time{}, tracker.timeStart)
146 assert.NotEqual(t, time.Time{}, tracker.timeStop)
147 assert.Equal(t, tracker.Total, tracker.value)
148
149 tracker.Reset()
150 assert.False(t, tracker.done)
151 assert.Equal(t, time.Time{}, tracker.timeStart)
152 assert.Equal(t, time.Time{}, tracker.timeStop)
153 assert.Equal(t, int64(0), tracker.value)
154 }
155
156 func TestTracker_SetValue(t *testing.T) {
157 tracker := Tracker{Total: 100}
158 assert.Equal(t, int64(0), tracker.value)
159 assert.False(t, tracker.done)
160
161 tracker.SetValue(5)
162 assert.Equal(t, int64(5), tracker.value)
163 assert.False(t, tracker.done)
164
165 tracker.SetValue(tracker.Total)
166 assert.Equal(t, tracker.Total, tracker.value)
167 assert.True(t, tracker.done)
168 }
169
170 func TestTracker_Value(t *testing.T) {
171 tracker := Tracker{}
172 assert.Equal(t, int64(0), tracker.value)
173 assert.Equal(t, int64(0), tracker.Value())
174
175 tracker.SetValue(5)
176 assert.Equal(t, int64(5), tracker.value)
177 assert.Equal(t, int64(5), tracker.Value())
178 }
179
180 func TestTracker_UpdateMessage(t *testing.T) {
181 tracker := Tracker{Message: "foo"}
182 assert.Equal(t, "foo", tracker.message())
183
184 tracker.UpdateMessage("bar")
185 assert.Equal(t, "bar", tracker.message())
186 }
187
View as plain text