* Remove redundant test name prefix.
[bpt/guile.git] / test-suite / tests / eval.test
CommitLineData
141443d7
DH
1;;;; eval.test --- tests guile's evaluator -*- scheme -*-
2;;;; Copyright (C) 2000 Free Software Foundation, Inc.
3;;;;
4;;;; This program is free software; you can redistribute it and/or modify
5;;;; it under the terms of the GNU General Public License as published by
6;;;; the Free Software Foundation; either version 2, or (at your option)
7;;;; any later version.
8;;;;
9;;;; This program 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
12;;;; GNU General Public License for more details.
13;;;;
14;;;; You should have received a copy of the GNU General Public License
15;;;; along with this software; see the file COPYING. If not, write to
16;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
17;;;; Boston, MA 02111-1307 USA
18;;;;
19;;;; As a special exception, the Free Software Foundation gives permission
20;;;; for additional uses of the text contained in its release of GUILE.
21;;;;
22;;;; The exception is that, if you link the GUILE library with other files
23;;;; to produce an executable, this does not by itself cause the
24;;;; resulting executable to be covered by the GNU General Public License.
25;;;; Your use of that executable is in no way restricted on account of
26;;;; linking the GUILE library code into it.
27;;;;
28;;;; This exception does not however invalidate any other reasons why
29;;;; the executable file might be covered by the GNU General Public License.
30;;;;
31;;;; This exception applies only to the code released by the
32;;;; Free Software Foundation under the name GUILE. If you copy
33;;;; code from other Free Software Foundation releases into a copy of
34;;;; GUILE, as the General Public License permits, the exception does
35;;;; not apply to the code that you add in this way. To avoid misleading
36;;;; anyone as to the status of such modified files, you must delete
37;;;; this exception notice from them.
38;;;;
39;;;; If you write modifications of your own for GUILE, it is your choice
40;;;; whether to permit this exception to apply to your modifications.
41;;;; If you do not wish that, delete this exception notice.
42
43(use-modules (ice-9 documentation))
44
45
46;;;
47;;; miscellaneous
48;;;
49
50
51(define (documented? object)
5c96bc39 52 (not (not (object-documentation object))))
141443d7
DH
53
54
55;;;
56;;; eval
57;;;
58
59(with-test-prefix "evaluator"
60
61 (with-test-prefix "parameter error"
62
63 ;; This is currently a bug in guile:
64 ;; Macros are accepted as function parameters.
65 ;; Functions that 'apply' macros are rewritten!!!
66
67 (expect-fail "macro as argument"
68 (let ((f (lambda (p a b) (p a b))))
69 (catch 'wrong-type-arg
70 (lambda ()
71 (f and #t #t)
72 #f)
73 (lambda (key . args)
74 #t))))
75
76 (expect-fail "application of macro"
77 (let ((f (lambda (p a b) (p a b))))
78 (catch 'wrong-type-arg
79 (lambda ()
80 (let ((foo (procedure-source f)))
81 (f and #t #t)
82 (equal? (procedure-source f) foo)))
83 (lambda (key . args)
84 #t))))
85
86 ))
87
88;;;
89;;; map
90;;;
91
92(with-test-prefix "map"
93
94 ;; Is documentation available?
95
96 (expect-fail "documented?"
6ad9007a 97 (documented? map))
141443d7
DH
98
99 (with-test-prefix "argument error"
100
101 (with-test-prefix "non list argument"
102 #t)
103
104 (with-test-prefix "different length lists"
105
106 (pass-if "first list empty"
107 (catch 'out-of-range
108 (lambda ()
109 (map + '() '(1))
110 #f)
111 (lambda (key . args)
112 #t)))
113
114 (pass-if "second list empty"
115 (catch 'out-of-range
116 (lambda ()
117 (map + '(1) '())
118 #f)
119 (lambda (key . args)
120 #t)))
121
122 (pass-if "first list shorter"
123 (catch 'out-of-range
124 (lambda ()
125 (map + '(1) '(2 3))
126 #f)
127 (lambda (key . args)
128 #t)))
129
130 (pass-if "second list shorter"
131 (catch 'out-of-range
132 (lambda ()
133 (map + '(1 2) '(3))
134 #f)
135 (lambda (key . args)
136 #t)))
137 )))