e3e052b7f5e8721a386d1f47cc7b63b0960993a7
[mes.git] / tests / gc-2.test
1 #! /bin/sh
2 # -*-scheme-*-
3 MES=${MES-$(dirname $0)/../scripts/mes}
4 echo ' ()' | cat $(dirname $0)/../module/mes/base-0.mes $0 /dev/stdin | $MES $MES_FLAGS "$@"
5 #paredit:||
6 exit $?
7 !#
8
9 ;;; -*-scheme-*-
10
11 ;;; Mes --- Maxwell Equations of Software
12 ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
13 ;;;
14 ;;; This file is part of Mes.
15 ;;;
16 ;;; Mes is free software; you can redistribute it and/or modify it
17 ;;; under the terms of the GNU General Public License as published by
18 ;;; the Free Software Foundation; either version 3 of the License, or (at
19 ;;; your option) any later version.
20 ;;;
21 ;;; Mes is distributed in the hope that it will be useful, but
22 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
23 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 ;;; GNU General Public License for more details.
25 ;;;
26 ;;; You should have received a copy of the GNU General Public License
27 ;;; along with Mes.  If not, see <http://www.gnu.org/licenses/>.
28
29 ;; (define *top-define-a* '*top-define-a*)
30 ;; (display (eq? *top-define-a* '*top-define-a*))
31 ;; (newline)
32 ;; (begin (define *top-begin-define-a* '*top-begin-define-a*))
33 ;; (display (eq? *top-begin-define-a* '*top-begin-define-a*))
34 ;; (newline)
35
36 (display 'HALLO) (newline)
37 (define (result r)
38   (display 'result:) (display r) (newline))
39
40 (define (cadr x) (car (cdr x)))
41 (define (simple-map f l)
42   (if (null? l) '()
43       (cons (f (car l)) (simple-map f (cdr l)))))
44
45 (define-macro (simple-let bindings . rest)
46   (cons (cons 'lambda (cons (simple-map car bindings) rest))
47         (simple-map cadr bindings)))
48
49 (define-macro (let bindings . rest)
50   (cons 'simple-let (cons bindings rest)))
51
52 (define blub? #t)
53 ;; (define result
54 ;;   (let ((pass 0)
55 ;;         (fail 0))
56 ;;     (lambda (. t)
57 ;;       (display 'result:) (display t) (newline)
58 ;;       (set! pass (+ pass 1)))))
59
60 (display "OKAY\n")
61
62 (define-macro (or . x)
63   (if (null? x) #f
64       (if (null? (cdr x)) (car x)
65           (list 'if (car x) (car x)
66                 (cons 'or (cdr x))))))
67
68 (define-macro (cond . clauses)
69   (list 'if (null? clauses) *unspecified*
70         (if (null? (cdr clauses))
71            (list 'if (car (car clauses))
72                  (list (cons 'lambda (cons '() (cons (car (car clauses)) (cdr (car clauses))))))
73                  *unspecified*)
74            (if (eq? (car (cadr clauses)) 'else)
75                (list 'if (car (car clauses))
76                    (list (cons 'lambda (cons '() (car clauses))))
77                    (list (cons 'lambda (cons '() (cons *unspecified* (cdr (cadr clauses)))))))
78                (list 'if (car (car clauses))
79                    (list (cons 'lambda (cons '() (car clauses))))
80                    (cons 'cond (cdr clauses)))))))
81
82 (define result
83   (let ((pass 0)
84         (fail 0))
85     (lambda (. t)
86       (display 'result:) (display t) (newline)
87       (set! pass (+ pass 1)))))
88
89 (define result
90   (let ((pass 0)
91         (fail 0))
92     (lambda (. t)
93       (cond ((or (null? t) (eq? (car t) result)) (list pass fail))
94             ((eq? (car t) 'report)
95              (newline)
96              (display "passed: ") (display pass) (newline)
97              (display "failed: ") (display fail) (newline)
98              (display "total: ") (display (+ pass fail)) (newline)
99              ;;(exit fail)
100              )
101             ((car t)
102              #t
103              #t
104              #t
105              ;;(blaat)
106              (display ": pass")
107              ;;(newline)
108              ;;(set! pass (+ pass 1))
109              #t
110              )
111             (#t (display ": fail") (newline) (set! fail (+ fail 1)))))))
112
113 (define-macro (pass-if name t)
114   (list
115    'begin
116    (list display ''xxxtest:) (list display name)
117    (list result t)))
118
119 (display 'foo-test:) (newline)
120 (display 1)(newline)
121 (display 2)(newline)
122 (display 3)(newline)
123 (display 4)(newline)
124 (display 5)(newline)
125 (display 6)(newline)
126 (display 7)(newline)
127 (display 8)(newline)
128 (display 9)(newline)
129
130 (pass-if "if" (eq? (if #t 'true) 'true))
131 (pass-if "if 2" (eq? (if #f #f) *unspecified*))
132 (pass-if "if 3" (eq? (if (eq? 0 '0) 'true 'false) 'true))
133 (pass-if "if 4" (eq? (if (= 1 2) 'true 'false) 'false))
134
135 (display 10)(newline)
136 (display 11)(newline)
137 (display 12)(newline)
138 (display 13)(newline)
139 (display 14)(newline)
140 (display 15)(newline)
141 (display 16)(newline)
142 (display 17)(newline)
143 (display 18)(newline)
144 (display 19)(newline)
145
146 (display 14)(newline)
147 (display 15)(newline)
148 (display 16)(newline)
149 (display 17)(newline)
150 (display 18)(newline)
151 (display 19)(newline)
152
153 (define (m x) (* 2 x))
154 (display 'multiply:)
155 (display (m 1)) (newline)
156 (display (m 2)) (newline)
157 (display (m 3)) (newline)
158 (display (m 4)) (newline)
159
160 ;; (define (result r)
161 ;;   (display 'result:) (display r) (newline))
162
163 (define-macro (pass-if name t)
164   (list
165    'begin
166    (list display ''xxxtest:) (list display name)
167    (list result t)))
168
169 (pass-if 'first-dummy: #t)
170
171 (display 20)(newline)
172 (display 21)(newline)
173 (display 22)(newline)
174 (display 23)(newline)
175 (display 24)(newline)
176 (display 25)(newline)
177 (display 26)(newline)
178 (display 27)(newline)
179 (display 28)(newline)
180 (display 29)(newline)
181 (display 30)(newline)
182
183 (define *top-define-a* '*top-define-a*)
184 (display (eq? *top-define-a* '*top-define-a*))
185 (newline)
186 (begin (define *top-begin-define-a* '*top-begin-define-a*))
187 (display (eq? *top-begin-define-a* '*top-begin-define-a*))
188 (newline)
189
190 (display 31)(newline)
191 (display 32)(newline)
192 (display 33)(newline)
193 (display 34)(newline)
194 (display 35)(newline)
195 (display 36)(newline)
196 (display 37)(newline)
197 (display 38)(newline)
198 (display 39)(newline)
199 (display 40)(newline)
200
201 ;; (display 41)(newline)
202 ;; (display 42)(newline)
203 ;; (display 43)(newline)
204 ;; (display 44)(newline)
205 ;; (display 45)(newline)
206 ;; (display 46)(newline)
207 ;; (display 47)(newline)
208 ;; (display 48)(newline)
209 ;; (display 49)(newline)
210 ;; (display 50)(newline)
211 ;; (display 51)(newline)
212 ;; (display 52)(newline)
213 ;; (display 53)(newline)
214 ;; (display 54)(newline)
215 ;; (display 55)(newline)
216 ;; (display 56)(newline)
217 ;; (display 57)(newline)
218 ;; (display 58)(newline)
219 ;; (display 59)(newline)
220 ;; (display 60)(newline)
221 ;; (display 61)(newline)
222 ;; (display 62)(newline)
223 ;; (display 63)(newline)
224 ;; (display 64)(newline)
225 ;; (display 65)(newline)
226 ;; (display 66)(newline)
227 ;; (display 67)(newline)
228 ;; (display 68)(newline)
229 ;; (display 69)(newline)
230 ;; (display 70)(newline)
231 ;; (display 71)(newline)
232 ;; (display 72)(newline)
233 ;; (display 73)(newline)
234 ;; (display 74)(newline)
235 ;; (display 75)(newline)
236 ;; (display 76)(newline)
237 ;; (display 77)(newline)
238 ;; (display 78)(newline)
239 ;; (display 79)(newline)
240 ;; (display 80)(newline)
241 ;; (display 81)(newline)
242 ;; (display 82)(newline)
243 ;; (display 83)(newline)
244 ;; (display 84)(newline)
245 ;; (display 85)(newline)
246 ;; (display 86)(newline)
247 ;; (display 87)(newline)
248 ;; (display 88)(newline)
249 ;; (display 89)(newline)
250 ;; (display 90)(newline)
251 ;; (display 91)(newline)
252 ;; (display 92)(newline)
253 ;; (display 93)(newline)
254 ;; (display 94)(newline)
255 ;; (display 95)(newline)
256 ;; (display 96)(newline)
257 ;; (display 97)(newline)
258 ;; (display 98)(newline)
259 ;; (display 99)(newline)
260 ;; (display 100)(newline)
261 ;; (display 101)(newline)
262 ;; (display 102)(newline)
263 ;; (display 103)(newline)
264 ;; (display 104)(newline)
265 ;; (display 105)(newline)
266 ;; (display 106)(newline)
267 ;; (display 107)(newline)
268 ;; (display 108)(newline)
269 ;; (display 109)(newline)
270 ;; (display 110)(newline)
271 ;; (display 111)(newline)
272 ;; (display 112)(newline)
273 ;; (display 113)(newline)
274 ;; (display 114)(newline)
275 ;; (display 115)(newline)
276 ;; (display 116)(newline)
277 ;; (display 117)(newline)
278 ;; (display 118)(newline)
279 ;; (display 119)(newline)
280 ;; (display 120)(newline)
281 ;; (display 121)(newline)
282 ;; (display 122)(newline)
283 ;; (display 123)(newline)
284 ;; (display 124)(newline)
285 ;; (display 125)(newline)
286 ;; (display 126)(newline)
287 ;; (display 127)(newline)
288 ;; (display 128)(newline)
289 ;; (display 129)(newline)
290 ;; (display 130)(newline)
291 ;; (display 131)(newline)
292 ;; (display 132)(newline)
293 ;; (display 133)(newline)
294 ;; (display 134)(newline)
295 ;; (display 135)(newline)
296 ;; (display 136)(newline)
297 ;; (display 137)(newline)
298 ;; (display 138)(newline)
299 ;; (display 139)(newline)
300 ;; (display 140)(newline)
301 ;; (display 141)(newline)
302 ;; (display 142)(newline)
303 ;; (display 143)(newline)
304 ;; (display 144)(newline)
305 ;; (display 145)(newline)
306 ;; (display 146)(newline)
307 ;; (display 147)(newline)
308 ;; (display 148)(newline)
309 ;; (display 149)(newline)
310 ;; (display 150)(newline)
311 ;; (display 151)(newline)
312 ;; (display 152)(newline)
313 ;; (display 153)(newline)
314 ;; (display 154)(newline)
315 ;; (display 155)(newline)
316 ;; (display 156)(newline)
317 ;; (display 157)(newline)
318 ;; (display 158)(newline)
319 ;; (display 159)(newline)
320 ;; (display 160)(newline)
321 ;; (display 161)(newline)
322 ;; (display 162)(newline)
323 ;; (display 163)(newline)
324 ;; (display 164)(newline)
325 ;; (display 165)(newline)
326 ;; (display 166)(newline)
327 ;; (display 167)(newline)
328 ;; (display 168)(newline)
329 ;; (display 169)(newline)
330 ;; (display 170)(newline)
331 ;; (display 171)(newline)
332 ;; (display 172)(newline)
333 ;; (display 173)(newline)
334 ;; (display 174)(newline)
335 ;; (display 175)(newline)
336 ;; (display 176)(newline)
337 ;; (display 177)(newline)
338 ;; (display 178)(newline)
339 ;; (display 179)(newline)
340 ;; (display 180)(newline)
341 ;; (display 181)(newline)
342 ;; (display 182)(newline)
343 ;; (display 183)(newline)
344 ;; (display 184)(newline)
345 ;; (display 185)(newline)
346 ;; (display 186)(newline)
347 ;; (display 187)(newline)
348 ;; (display 188)(newline)
349 ;; (display 189)(newline)
350 ;; (display 190)(newline)
351 ;; (display 191)(newline)
352 ;; (display 192)(newline)
353 ;; (display 193)(newline)
354 ;; (display 194)(newline)
355 ;; (display 195)(newline)
356 ;; (display 196)(newline)
357 ;; (display 197)(newline)
358 ;; (display 198)(newline)
359 ;; (display 199)(newline)
360 ;; (display 200)(newline)