syndicate-rkt/OLD-syndicate/test/core/responsibility-transfer-1.rkt

37 lines
1.4 KiB
Racket
Raw Normal View History

2021-06-04 13:56:03 +00:00
;;; SPDX-License-Identifier: LGPL-3.0-or-later
;;; SPDX-FileCopyrightText: Copyright © 2010-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
2020-04-27 18:27:48 +00:00
#lang syndicate/test-implementation
2018-04-29 10:55:32 +00:00
;; See .../syndicate/examples/actor/example-responsibility-transfer-1.rkt
(test-case
[(spawn #:name 'demand-watcher
(during/spawn 'demand
#:name (gensym 'intermediate-demand-asserter)
(assert 'intermediate-demand)))
(spawn #:name 'intermediate-demand-watcher
(during/spawn 'intermediate-demand
#:name (gensym 'supply-asserter)
(assert 'supply)))
(spawn* #:name 'driver
(react (on (asserted 'supply) (displayln "Supply asserted."))
(on (retracted 'supply) (displayln "Supply retracted.")))
(until (asserted (observe 'demand)))
(displayln "Asserting demand.")
(assert! 'demand)
(until (asserted 'supply))
(displayln "Glitching demand.")
(retract! 'demand)
(flush!)
(assert! 'demand)
(displayln "Demand now steady."))]
no-crashes
(expected-output (list "Asserting demand."
"Supply asserted."
"Glitching demand."
"Demand now steady."
"Supply retracted."
"Supply asserted.")))