summaryrefslogtreecommitdiffstats
path: root/lang/python/python-blinker/test.sh
blob: 18d2efbfb1361242cde931526363ca310932e288 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh

[ "$1" = python3-blinker ] || exit 0

python3 - <<EOF
import sys
from blinker import Signal, signal

# Named signal
data_saved = signal("data-saved")
results = []
cb_named = lambda sender, **kw: results.append((sender, kw))
data_saved.connect(cb_named)
data_saved.send("db", value=42)
assert results == [("db", {"value": 42})], f"Unexpected: {results}"

# Anonymous signal, multiple subscribers
updated = Signal()
log = []
cb_a = lambda s, **kw: log.append("a")
cb_b = lambda s, **kw: log.append("b")
updated.connect(cb_a)
updated.connect(cb_b)
updated.send(None)
assert set(log) == {"a", "b"}, f"Unexpected: {log}"

# Disconnect
def handler(sender, **kw):
    log.append("handler")

updated.connect(handler)
updated.disconnect(handler)
updated.send(None)
assert "handler" not in log[2:], "handler should have been disconnected"

print("python-blinker OK")
EOF