diff options
author | Youri Ackx <youri@sugoi.be> | 2021-01-29 14:36:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-29 14:36:38 +0100 |
commit | b5e9f0629200d2b2f62e13e595b802948bb4fefb (patch) | |
tree | 4741857fe53c5500487894c2e3c9ff9c4ee2ce3b /tests/_test_async.py | |
parent | 904d8d3803e84257c08526e9047474215aa1c976 (diff) | |
parent | c7b83a18a54efa9e08a9446e2d16956ee5fe353b (diff) | |
download | blinker-master.tar.gz |
Merge pull request #18 from jek/feature/send-asyncmaster
Adds Signal.send_async for asyncio
Author: @jek
Diffstat (limited to 'tests/_test_async.py')
-rw-r--r-- | tests/_test_async.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/_test_async.py b/tests/_test_async.py new file mode 100644 index 0000000..35f3ced --- /dev/null +++ b/tests/_test_async.py @@ -0,0 +1,43 @@ +import asyncio + +import blinker + + +def test_send_async(): + calls = [] + + @asyncio.coroutine + def receiver_a(sender): + calls.append(receiver_a) + return 'value a' + + @asyncio.coroutine + def receiver_b(sender): + calls.append(receiver_b) + return 'value b' + + def receiver_c(sender): + calls.append(receiver_c) + return 'value c' + + sig = blinker.Signal() + sig.connect(receiver_a) + sig.connect(receiver_b) + sig.connect(receiver_c) + + @asyncio.coroutine + def collect(): + return sig.send_async() + + loop = asyncio.get_event_loop() + results = loop.run_until_complete(collect()) + + expected = { + receiver_a: 'value a', + receiver_b: 'value b', + receiver_c: 'value c', + } + + assert set(calls) == set(expected.keys()) + collected_results = {v.result() for r, v in results} + assert collected_results == set(expected.values()) |