~ chicken-core (chicken-5) /tests/multiple-values.scm


 1(define-syntax assert-fail
 2  (syntax-rules ()
 3    ((_ exp)
 4     (assert (handle-exceptions ex #t exp #f)))))
 5
 6(define (f x) #t)
 7
 8;; Relaxed cases
 9(assert (f (values 1 2 3)))
10(assert-fail (call/cc (lambda (k) (k 1 2 3)))) ; For now it should fail, see #1601
11
12;; Strict cases
13(assert-fail (call-with-values (lambda () (values 1 2 3)) f))
14(assert-fail
15  (call-with-values
16    (lambda () (call/cc (lambda (k) (k 1 2 3))))
17    f))
18
19;; Sanity check for strict cases with correct argument count
20(assert (call-with-values (lambda () (values 1)) f))
21(assert (call-with-values (lambda () 1) f))
22(assert (call-with-values (lambda () (call/cc (lambda (k) (k 1)))) f))
Trap