Implement .cancel_call_later() in MockClock

This commit is contained in:
Paul "LeoNerd" Evans 2014-12-10 19:26:52 +00:00
parent 38da9884e7
commit 4551afc6d2
2 changed files with 23 additions and 2 deletions

View file

@ -50,3 +50,21 @@ class MockClockTestCase(unittest.TestCase):
self.clock.advance_time(5) self.clock.advance_time(5)
self.assertTrue(invoked[1]) self.assertTrue(invoked[1])
def test_cancel_later(self):
invoked = [0, 0]
def _cb0():
invoked[0] = 1
t0 = self.clock.call_later(10, _cb0)
def _cb1():
invoked[1] = 1
t1 = self.clock.call_later(20, _cb1)
self.clock.cancel_call_later(t0)
self.clock.advance_time(30)
self.assertFalse(invoked[0])
self.assertTrue(invoked[1])

View file

@ -152,10 +152,13 @@ class MockClock(object):
def wrapped_callback(): def wrapped_callback():
LoggingContext.thread_local.current_context = current_context LoggingContext.thread_local.current_context = current_context
callback() callback()
self.timers.append((self.now + delay, wrapped_callback))
t = (self.now + delay, wrapped_callback)
self.timers.append(t)
return t
def cancel_call_later(self, timer): def cancel_call_later(self, timer):
raise NotImplementedError("Oopsie") self.timers = [t for t in self.timers if t != timer]
# For unit testing # For unit testing
def advance_time(self, secs): def advance_time(self, secs):