def test_calls(self): """Tests actually emitting signals.""" def called(**kwargs): called.last = kwargs def callsig(res_type, **kwargs): if res_type not in ('succ', 'warn', 'fail'): raise TypeError called.last = None with warnings.catch_warnings(record=True) as w: warnings.resetwarnings() sig(**kwargs) if res_type == 'fail' or res_type == 'warn': self.assertEqual(len(w), 1) if res_type == 'succ' or res_type == 'warn': self.assertEqual(called.last, kwargs) sig = Signal(['a', 'b'], new_args=['c'], old_args=['d']) sig.subscribe(called) callsig('succ', a=1, b=2) callsig('succ', a=1, b=2, c=3) callsig('fail', a=1) callsig('warn', a=1, b=2, d=3)
def test_subscription(self): """Tests subscribe() and unsubscribe().""" def foo(info): pass sig = Signal() sig.subscribe(foo) with self.assertRaises(TypeError): sig.subscribe(object()) with self.assertRaises(TypeError): sig.subscribe(2) sig.unsubscribe(4) self.assertEqual(sig._listeners, set([foo])) sig.unsubscribe(foo) self.assertFalse(sig._listeners)