summaryrefslogtreecommitdiff
path: root/tests/_test_async.py
diff options
context:
space:
mode:
authorYouri Ackx <youri@sugoi.be>2021-01-29 14:36:38 +0100
committerGitHub <noreply@github.com>2021-01-29 14:36:38 +0100
commitb5e9f0629200d2b2f62e13e595b802948bb4fefb (patch)
tree4741857fe53c5500487894c2e3c9ff9c4ee2ce3b /tests/_test_async.py
parent904d8d3803e84257c08526e9047474215aa1c976 (diff)
parentc7b83a18a54efa9e08a9446e2d16956ee5fe353b (diff)
downloadblinker-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.py43
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())