forked from wolph/python-progressbar
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_samples.py
More file actions
112 lines (82 loc) · 3.59 KB
/
test_samples.py
File metadata and controls
112 lines (82 loc) · 3.59 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
import time
from datetime import datetime, timedelta
from python_utils.containers import SliceableDeque
import progressbar
from progressbar import widgets
def test_numeric_samples() -> None:
samples = 5
samples_widget = widgets.SamplesMixin(samples=samples)
bar = progressbar.ProgressBar(widgets=[samples_widget])
# Force updates in all cases
samples_widget.INTERVAL = timedelta(0)
start = datetime(2000, 1, 1)
bar.value = 1
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (None, None)
for i in range(2, 6):
bar.value = i
bar.last_update_time = start + timedelta(seconds=i)
assert samples_widget(bar, None, True) == (timedelta(0, i - 1), i - 1)
bar.value = 8
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 6), 6)
bar.value = 10
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 7), 7)
bar.value = 20
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 16), 16)
assert samples_widget(bar, None)[1] == SliceableDeque(
[4, 5, 8, 10, 20],
)
def test_timedelta_samples() -> None:
samples = timedelta(seconds=5)
samples_widget = widgets.SamplesMixin(samples=samples)
bar = progressbar.ProgressBar(widgets=[samples_widget])
# Force updates in all cases
samples_widget.INTERVAL = timedelta(0)
start = datetime(2000, 1, 1)
bar.value = 1
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (None, None)
for i in range(2, 6):
time.sleep(1)
bar.value = i
bar.last_update_time = start + timedelta(seconds=i)
assert samples_widget(bar, None, True) == (timedelta(0, i - 1), i - 1)
bar.value = 8
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 6), 6)
bar.last_update_time = start + timedelta(seconds=bar.value)
bar.value = 8
assert samples_widget(bar, None, True) == (timedelta(0, 6), 6)
bar.value = 10
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 6), 6)
bar.value = 20
bar.last_update_time = start + timedelta(seconds=bar.value)
assert samples_widget(bar, None, True) == (timedelta(0, 10), 10)
assert samples_widget(bar, None)[1] == [10, 20]
def test_timedelta_no_update() -> None:
samples = timedelta(seconds=0.1)
samples_widget = widgets.SamplesMixin(samples=samples)
bar = progressbar.ProgressBar(widgets=[samples_widget])
bar.update()
assert samples_widget(bar, None, True) == (None, None)
assert samples_widget(bar, None, False)[1] == [0]
assert samples_widget(bar, None, True) == (None, None)
assert samples_widget(bar, None, False)[1] == [0]
time.sleep(1)
assert samples_widget(bar, None, True) == (None, None)
assert samples_widget(bar, None, False)[1] == [0]
bar.update(1)
assert samples_widget(bar, None, True) == (timedelta(0, 1), 1)
assert samples_widget(bar, None, False)[1] == [0, 1]
time.sleep(1)
bar.update(2)
assert samples_widget(bar, None, True) == (timedelta(0, 1), 1)
assert samples_widget(bar, None, False)[1] == [1, 2]
time.sleep(0.01)
bar.update(3)
assert samples_widget(bar, None, True) == (timedelta(0, 1), 1)
assert samples_widget(bar, None, False)[1] == [1, 2]