#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
