22 lines
796 B
Racket
22 lines
796 B
Racket
#lang syndicate/test
|
|
|
|
(spawn (field [balance 0])
|
|
(assert (list "account" (balance)))
|
|
(on (message (list "deposit" $amount))
|
|
(balance (+ (balance) amount))))
|
|
|
|
(spawn (on (asserted (list "account" $balance))
|
|
(printf "Balance changed to ~a\n" balance))
|
|
(stop-when (asserted (list "account" 70))
|
|
(printf "bye\n"))
|
|
(on-stop (printf "good.\n")))
|
|
|
|
(spawn (stop-when (asserted (observe (list "deposit" _)))
|
|
(send! (list "deposit" +100))
|
|
(send! (list "deposit" -30))))
|
|
|
|
(trace (assertion-added '("account" 0))
|
|
(and (assertion-added '("account" 100))
|
|
(assertion-removed '("account" 0)))
|
|
(and (assertion-added '("account" 70))
|
|
(assertion-removed '("account" 100)))) |