Skip to content

Commit c744581

Browse files
committed
Test the grouping-by-key feature of the LatestValueCache
Signed-off-by: Sahas Subramanian <[email protected]>
1 parent 7757126 commit c744581

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

tests/test_latest_value_cache_integration.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,52 @@ async def test_latest_value_cache() -> None:
4343
await asyncio.sleep(0)
4444

4545
assert cache.get() == 19
46+
47+
48+
@pytest.mark.integration
49+
async def test_latest_value_cache_key() -> None:
50+
"""Ensure LatestValueCache works with keys."""
51+
channel = Broadcast[tuple[int, str]](name="lvc_test")
52+
53+
cache = LatestValueCache(channel.new_receiver(), key=lambda x: x[0])
54+
sender = channel.new_sender()
55+
56+
assert not cache.has_value()
57+
with pytest.raises(ValueError, match="No value has been received yet."):
58+
cache.get()
59+
with pytest.raises(ValueError, match="No value received for key: 0"):
60+
cache.get(0)
61+
62+
await sender.send((5, "a"))
63+
await sender.send((6, "b"))
64+
await sender.send((5, "c"))
65+
await asyncio.sleep(0)
66+
67+
assert cache.has_value()
68+
assert cache.has_value(5)
69+
assert cache.has_value(6)
70+
assert not cache.has_value(7)
71+
72+
assert cache.get() == (5, "c")
73+
assert cache.get(5) == (5, "c")
74+
assert cache.get(6) == (6, "b")
75+
76+
with pytest.raises(ValueError, match="No value received for key: 7"):
77+
cache.get(7)
78+
79+
await sender.send((12, "d"))
80+
await asyncio.sleep(0)
81+
82+
assert cache.get() == (12, "d")
83+
assert cache.get() == (12, "d")
84+
assert cache.get(12) == (12, "d")
85+
assert cache.get(12) == (12, "d")
86+
assert cache.get(5) == (5, "c")
87+
assert cache.get(6) == (6, "b")
88+
89+
await sender.send((6, "e"))
90+
await sender.send((6, "f"))
91+
await sender.send((6, "g"))
92+
await asyncio.sleep(0)
93+
94+
assert cache.get(6) == (6, "g")

0 commit comments

Comments
 (0)