diff options
Diffstat (limited to 'tests/test_signals.py')
-rw-r--r-- | tests/test_signals.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/test_signals.py b/tests/test_signals.py index e6142fb..c6076f9 100644 --- a/tests/test_signals.py +++ b/tests/test_signals.py @@ -180,6 +180,38 @@ def test_signal_signals_weak_sender(): assert len(sentinel) == 1 +def test_empty_bucket_growth(): + sentinel = Sentinel() + sig = blinker.Signal() + senders = lambda: (len(sig._by_sender), + sum(len(i) for i in sig._by_sender.values())) + receivers = lambda: (len(sig._by_receiver), + sum(len(i) for i in sig._by_receiver.values())) + + receiver1 = sentinel.make_receiver('receiver1') + receiver2 = sentinel.make_receiver('receiver2') + + class Sender(object): + """A weakref-able object.""" + + sender = Sender() + sig.connect(receiver1, sender=sender) + sig.connect(receiver2, sender=sender) + + assert senders() == (1, 2) + assert receivers() == (2, 2) + + sig.disconnect(receiver1, sender=sender) + + assert senders() == (1, 1) + assert receivers() == (2, 1) + + sig.disconnect(receiver2, sender=sender) + + assert senders() == (1, 0) + assert receivers() == (2, 0) + + def test_meta_connect_failure(): def meta_received(sender, **kw): raise TypeError('boom') |