~ chicken-core (chicken-5) /tests/records-and-setters-test.scm
Trap1;;;; records-and-setters-test.scm234;;; define-record-type with setters56(define-record-type foo7 (make-foo x y z t)8 foo?9 (x get-x)10 (y get-y set-y)11 (z get-z (setter get-z))12 (t get-t (setter make-foo)))1314(let ((f (make-foo 1 2 3 4)))15 (assert (foo? f))16 (assert (= 1 (get-x f)))17 (assert (= 2 (get-y f)))18 (set-y f 99)19 (assert (= 99 (get-y f)))20 (set! (get-z f) 100)21 (assert (= 100 (get-z f)))22 (set! (make-foo f) 1000)23 (assert (= 1000 (get-t f))))2425(define-record bar26 a27 (setter b))2829(let ((b (make-bar 1 2)))30 (assert (bar? b))31 (bar-a-set! b 3)32 (assert (= 3 (bar-a b)))33 (setter bar-b)34 (set! (bar-b b) 4)35 (assert (= (bar-b b) 4)))