1;;;; srfi-31.test --- Test suite for Guile's SRFI-31 functions. -*- scheme -*- 2;;;; 3;;;; Copyright (C) 2004, 2006, 2010, 2012 Free Software Foundation, Inc. 4;;;; 5;;;; This library is free software; you can redistribute it and/or 6;;;; modify it under the terms of the GNU Lesser General Public 7;;;; License as published by the Free Software Foundation; either 8;;;; version 3 of the License, or (at your option) any later version. 9;;;; 10;;;; This library 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 GNU 13;;;; Lesser General Public License for more details. 14;;;; 15;;;; You should have received a copy of the GNU Lesser General Public 16;;;; License along with this library; if not, write to the Free Software 17;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 19(define-module (test-suite test-srfi-31) 20 #:use-module (test-suite lib) 21 #:use-module (srfi srfi-31)) 22 23(with-test-prefix "rec special form" 24 25 (pass-if-exception "bogus variable" 26 exception:syntax-pattern-unmatched 27 (eval '(rec #:foo) (current-module))) 28 29 (pass-if "rec expressions" 30 (let ((ones-list (rec ones (cons 1 (delay ones))))) 31 (and (= 1 (car ones-list)) 32 (= 1 (car (force (cdr ones-list))))))) 33 34 (pass-if "rec functions" 35 (let ((test-func (rec (add-upto n) 36 (if (positive? n) 37 (+ n (add-upto (- n 1))) 38 0)))) 39 (= 15 (test-func 5))))) 40