def test_add_remove_one(self): obj = Object() def callback(*args): pass handle = add_callback(obj, callback) self.assertIsInstance(obj._callbacks, Node) remove_callback(obj, handle) self.assertIs(obj._callbacks, None)
def test_has_callback(self): obj = Object() def callback(): pass n1 = add_callback(obj, callback) self.assertTrue(has_callback(obj, n1)) n2 = add_callback(obj, callback) self.assertTrue(has_callback(obj, n2)) remove_callback(obj, n2) self.assertFalse(has_callback(obj, n2)) remove_callback(obj, n1) self.assertFalse(has_callback(obj, n1))
def test_add_remove_multiple(self): obj = Object() def callback(*args): pass handles = [] for i in range(5): handles.append(add_callback(obj, callback)) self.assertIsInstance(obj._callbacks, dllist) for i in range(5): self.assertEqual(len(obj._callbacks), 5-i) remove_callback(obj, handles[i]) self.assertIsNone(obj._callbacks) handles = [] for i in range(5): handles.append(add_callback(obj, callback, (1, 2))) self.assertIsInstance(obj._callbacks, dllist) for i in range(5): self.assertEqual(len(obj._callbacks), 5-i) remove_callback(obj, handles[i]) self.assertIsNone(obj._callbacks)
def test_add_remove_multiple(self): obj = Object() def callback(*args): pass handles = [] for i in range(5): handles.append(add_callback(obj, callback)) self.assertIsInstance(obj._callbacks, dllist) for i in range(5): self.assertEqual(len(obj._callbacks), 5 - i) remove_callback(obj, handles[i]) self.assertIsNone(obj._callbacks) handles = [] for i in range(5): handles.append(add_callback(obj, callback, (1, 2))) self.assertIsInstance(obj._callbacks, dllist) for i in range(5): self.assertEqual(len(obj._callbacks), 5 - i) remove_callback(obj, handles[i]) self.assertIsNone(obj._callbacks)