Skip to content

Commit 70bc153

Browse files
committed
Test generic message type variance in Senders and Receivers
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent 92d0616 commit 70bc153

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

tests/test_broadcast.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66

77
import asyncio
8+
from dataclasses import dataclass
89

910
import pytest
1011

@@ -252,3 +253,27 @@ async def test_broadcast_receiver_drop() -> None:
252253

253254
assert len(chan._receivers) == 1
254255
# pylint: enable=protected-access
256+
257+
258+
async def test_type_variance() -> None:
259+
"""Ensure that the type variance of Broadcast is working."""
260+
261+
@dataclass
262+
class Broader:
263+
"""A broad class."""
264+
265+
value: int
266+
267+
class Actual(Broader):
268+
"""Actual class."""
269+
270+
class Narrower(Actual):
271+
"""A narrower class."""
272+
273+
chan = Broadcast[Actual](name="input-chan")
274+
275+
sender: Sender[Narrower] = chan.new_sender()
276+
receiver: Receiver[Broader] = chan.new_receiver()
277+
278+
await sender.send(Narrower(10))
279+
assert (await receiver.receive()).value == 10

0 commit comments

Comments
 (0)