1;;;; curried-definitions.test -*- scheme -*- 2;;;; Copyright (C) 2010 Free Software Foundation, Inc. 3;;;; 4;;;; This library is free software; you can redistribute it and/or 5;;;; modify it under the terms of the GNU Lesser General Public 6;;;; License as published by the Free Software Foundation; either 7;;;; version 3 of the License, or (at your option) any later version. 8;;;; 9;;;; This library is distributed in the hope that it will be useful, 10;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of 11;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12;;;; Lesser General Public License for more details. 13;;;; 14;;;; You should have received a copy of the GNU Lesser General Public 15;;;; License along with this library; if not, write to the Free Software 16;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 18(define-module (test-suite test-curried-definitions) 19 #:use-module (test-suite lib) 20 #:use-module (ice-9 curried-definitions)) 21 22(with-test-prefix "define" 23 (pass-if "define works as usual" 24 (equal? 34 25 (primitive-eval '(let () 26 (define (foo) 27 34) 28 (foo))))) 29 (pass-if "define works as usual (2)" 30 (equal? 134 31 (primitive-eval '(let () 32 (define (foo x) 33 (+ x 34)) 34 (foo 100))))) 35 (pass-if "currying once" 36 (equal? 234 37 (primitive-eval '(let () 38 (define ((foo) x) 39 (+ x 34)) 40 ((foo) 200))))) 41 (pass-if "currying twice" 42 (equal? 334 43 (primitive-eval '(let () 44 (define (((foo)) x) 45 (+ x 34)) 46 (((foo)) 300))))) 47 48 (pass-if "just a value" 49 (equal? 444 50 (primitive-eval '(let () 51 (define foo 444) 52 foo))))) 53 54(with-test-prefix "define*" 55 (pass-if "define* works as usual" 56 (equal? 34 57 (primitive-eval '(let () 58 (define* (foo) 59 34) 60 (foo))))) 61 (pass-if "define* works as usual (2)" 62 (equal? 134 63 (primitive-eval '(let () 64 (define* (foo x) 65 (+ x 34)) 66 (foo 100))))) 67 (pass-if "currying once" 68 (equal? 234 69 (primitive-eval '(let () 70 (define* ((foo) x) 71 (+ x 34)) 72 ((foo) 200))))) 73 (pass-if "currying twice" 74 (equal? 334 75 (primitive-eval '(let () 76 (define* (((foo)) x) 77 (+ x 34)) 78 (((foo)) 300))))) 79 80 (pass-if "just a value" 81 (equal? 444 82 (primitive-eval '(let () 83 (define* foo 444) 84 foo))))) 85