mirror of
https://github.com/janet-lang/janet
synced 2025-10-15 15:57:41 +00:00
Fix resumption values when closing a channel.
When suspended in `ev/give` or `ev/take`, closing the channel should cause the result of `ev/give` or `ev/take` to be `nil`. When suspended in `ev/select`, closing the channel should cause the result of `ev/select` to be `[:close ch]`. The results were flipped before.
This commit is contained in:
@@ -321,5 +321,25 @@
|
||||
(assert (= item1 "hello"))
|
||||
(assert (= item2 "world"))
|
||||
|
||||
# ev/take, suspended, channel closed
|
||||
(def ch (ev/chan))
|
||||
(ev/go |(ev/chan-close ch))
|
||||
(assert (= (ev/take ch) nil))
|
||||
|
||||
# ev/give, suspended, channel closed
|
||||
(def ch (ev/chan))
|
||||
(ev/go |(ev/chan-close ch))
|
||||
(assert (= (ev/give ch 1) nil))
|
||||
|
||||
# ev/select, suspended take operation, channel closed
|
||||
(def ch (ev/chan))
|
||||
(ev/go |(ev/chan-close ch))
|
||||
(assert (= (ev/select ch) [:close ch]))
|
||||
|
||||
# ev/select, suspended give operation, channel closed
|
||||
(def ch (ev/chan))
|
||||
(ev/go |(ev/chan-close ch))
|
||||
(assert (= (ev/select [ch 1]) [:close ch]))
|
||||
|
||||
(end-suite)
|
||||
|
||||
|
Reference in New Issue
Block a user