92
95
patched_time.sleep.assert_called_once_with(1.0)
98
class EventDelayTests(TestCase):
100
def test_mocked_event_delayer_contextmanager(self):
101
event_delayer = EventDelay()
102
with event_delayer.mocked():
103
# The first call of delay() only stores the last time
104
# stamp, it is only the second call where the delay
105
# actually happens. So we call delay() twice here to
106
# ensure mocking is working as expected.
107
event_delayer.delay(duration=0)
108
event_delayer.delay(duration=3)
109
self.assertAlmostEqual(sleep.total_time_slept(), 3, places=1)
111
def test_last_event_start_at_zero(self):
112
event_delayer = EventDelay()
113
self.assertThat(event_delayer.last_event_time(), Equals(0.0))
115
def test_last_event_delay_counter_updates_on_first_call(self):
116
event_delayer = EventDelay()
117
event_delayer.delay(duration=1.0, current_time=lambda: 10)
119
self.assertThat(event_delayer._last_event, Equals(10.0))
121
def test_first_call_to_delay_causes_no_sleep(self):
122
event_delayer = EventDelay()
123
with sleep.mocked() as mocked_sleep:
124
event_delayer.delay(duration=0.0)
125
self.assertThat(mocked_sleep.total_time_slept(), Equals(0.0))
127
def test_second_call_to_delay_causes_sleep(self):
128
event_delayer = EventDelay()
129
with sleep.mocked() as mocked_sleep:
130
event_delayer.delay(duration=0, current_time=lambda: 100)
131
event_delayer.delay(duration=10, current_time=lambda: 105)
132
self.assertThat(mocked_sleep.total_time_slept(), Equals(5.0))
134
def test_no_delay_if_time_jumps_since_last_event(self):
135
event_delayer = EventDelay()
136
with sleep.mocked() as mocked_sleep:
137
event_delayer.delay(duration=2, current_time=lambda: 100)
138
event_delayer.delay(duration=2, current_time=lambda: 110)
139
self.assertThat(mocked_sleep.total_time_slept(), Equals(0.0))
141
def test_no_delay_if_given_delay_time_negative(self):
142
event_delayer = EventDelay()
143
with sleep.mocked() as mocked_sleep:
144
event_delayer.delay(duration=-2, current_time=lambda: 100)
145
event_delayer.delay(duration=-2, current_time=lambda: 101)
146
self.assertThat(mocked_sleep.total_time_slept(), Equals(0.0))
148
def test_sleep_delta_calculator_returns_zero_if_time_delta_negative(self):
149
result = _sleep_for_calculated_delta(100, 97, 2)
150
self.assertThat(result, Equals(0.0))
152
def test_sleep_delta_calculator_doesnt_sleep_if_time_delta_negative(self):
153
with sleep.mocked() as mocked_sleep:
154
_sleep_for_calculated_delta(100, 97, 2)
155
self.assertThat(mocked_sleep.total_time_slept(), Equals(0.0))
157
def test_sleep_delta_calculator_returns_zero_if_time_delta_zero(self):
158
result = _sleep_for_calculated_delta(100, 98, 2)
159
self.assertThat(result, Equals(0.0))
161
def test_sleep_delta_calculator_doesnt_sleep_if_time_delta_zero(self):
162
with sleep.mocked() as mocked_sleep:
163
_sleep_for_calculated_delta(100, 98, 2)
164
self.assertThat(mocked_sleep.total_time_slept(), Equals(0.0))
166
def test_sleep_delta_calculator_returns_non_zero_if_delta_not_zero(self):
168
result = _sleep_for_calculated_delta(101, 100, 2)
169
self.assertThat(result, Equals(1.0))
171
def test_sleep_delta_calc_returns_zero_if_gap_duration_negative(self):
172
result = _sleep_for_calculated_delta(100, 99, -2)
173
self.assertEquals(result, 0.0)
175
def test_sleep_delta_calc_raises_if_last_event_ahead_current_time(self):
178
_sleep_for_calculated_delta,
184
def test_sleep_delta_calc_raises_if_last_event_equals_current_time(self):
187
_sleep_for_calculated_delta,
193
def test_sleep_delta_calc_raises_if_current_time_negative(self):
196
_sleep_for_calculated_delta,
202
def test_time_sanity_checker_raises_if_time_smaller_than_last_event(self):
205
_raise_if_time_delta_not_sane,
210
def test_time_sanity_checker_raises_if_time_equal_last_event_time(self):
213
_raise_if_time_delta_not_sane,
218
def test_time_sanity_checker_raises_if_time_negative_last_event_not(self):
221
_raise_if_time_delta_not_sane,
95
227
class CompatibleReprTests(TestCase):
97
229
def test_py3_unicode_is_untouched(self):