1 ;;;; srfi-11.test --- exercise SRFI-11 let-values
3 ;;;; Copyright 2004, 2006 Free Software Foundation, Inc.
5 ;;;; This program is free software; you can redistribute it and/or modify
6 ;;;; it under the terms of the GNU General Public License as published by
7 ;;;; the Free Software Foundation; either version 2, or (at your option)
8 ;;;; any later version.
10 ;;;; This program is distributed in the hope that it will be useful,
11 ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ;;;; GNU General Public License for more details.
15 ;;;; You should have received a copy of the GNU General Public License
16 ;;;; along with this software; see the file COPYING. If not, write to
17 ;;;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 ;;;; Boston, MA 02110-1301 USA
20 (define-module (test-suite test-srfi-11)
21 #:use-module (test-suite lib)
22 #:use-module (srfi srfi-11))
29 (with-test-prefix "let-values"
31 (with-test-prefix "no exprs"
37 (with-test-prefix "one expr"
40 (let-values ((() (values)))
44 (let-values (((x) (values 1)))
47 (pass-if "one value as rest"
48 (let-values ((x (values 1)))
52 (let-values (((x y) (values 1 2)))
56 (with-test-prefix "two exprs"
58 (pass-if "no values each"
59 (let-values ((() (values))
63 (pass-if "one value / no values"
64 (let-values (((x) (values 1))
68 (pass-if "one value each"
69 (let-values (((x) (values 1))
74 (pass-if-exception "first binding invisible to second expr"
75 '(unbound-variable . ".*")
76 (let-values (((x) (values 1))
77 ((y) (values (1+ x))))
84 (with-test-prefix "let*-values"
86 (with-test-prefix "no exprs"
92 (with-test-prefix "one expr"
95 (let*-values ((() (values)))
99 (let*-values (((x) (values 1)))
102 (pass-if "one value as rest"
103 (let-values ((x (values 1)))
106 (pass-if "two values"
107 (let*-values (((x y) (values 1 2)))
111 (with-test-prefix "two exprs"
113 (pass-if "no values each"
114 (let*-values ((() (values))
118 (pass-if "one value / no values"
119 (let*-values (((x) (values 1))
123 (pass-if "one value each"
124 (let*-values (((x) (values 1))
129 (pass-if "first binding visible to second expr"
130 (let*-values (((x) (values 1))
131 ((y) (values (1+ x))))