syndicate-rkt/syndicate/test/core/complex-pattern.rkt

27 lines
706 B
Racket

#lang imperative-syndicate/test-implementation
(test-case
[(message-struct b (v))
(message-struct c (v))
(spawn #:name 'respondent
(on (asserted ($ val (list _ (vector _) (b (c _)) (vector _) _)))
;; ^ exercises a corner-case in `extend-skeleton!`
;; that exposed why `(update-path path pop-count 0)`
;; was wrong, and `(update-path path 0 0)` was right.
(send! 'ok)))]
no-crashes)
;;
;; Trie steps:
;;
;; ·
;; - () must be list/5
;; pop 0, get 1
;; - (1) must be vector/1
;; pop 1, get 2
;; - (2) must be b/1
;; pop 0, get 0
;; - (2 0) must be c/1
;; pop 2, get 3
;; - (3) must be vector/1