Update recursive test to simpler example
[scheme.git] / tests.scm
index 65b99d9c5a3574e331228c21933528d1a3490e76..a198dd4ac5a00e4cd71e9a88f8ae32eefbca994c 100644 (file)
--- a/tests.scm
+++ b/tests.scm
 (define (test-prog prog exit-code)
   (display prog)
   (newline)
-  (compile-to-binary prog "/tmp/test-prog" 'darwin)
+  (compile-to-binary prog "/tmp/test-prog" host-os)
   (test (system "/tmp/test-prog") exit-code))
 
 (define (test-prog-stdout prog output)
   (display prog)
   (newline)
-  (compile-to-binary prog "/tmp/test-prog" 'darwin)
+  (compile-to-binary prog "/tmp/test-prog" host-os)
   (system "/tmp/test-prog > /tmp/test-output.txt")
   (let ((str (read-file "/tmp/test-output.txt")))
     (test str output)))
 (test-prog '((lambda (f) (f 3 3)) (lambda (x y) (bool->int (= x y)))) 1)
 (test-prog '(bool->int ((lambda (f) (! (f 2 3))) =)) 1)
 
-                                       ; recursion (hangs at typechecking)
-(test-prog '(let [(fac (lambda (f n x) (if (= n 0) x (f f (- n 1) (* x x)))))]
-             (fac fac 3 2))
-          8)
+                                       ; recursion
+(test-prog '(let [(inc (lambda (f n x)
+                        (if (= n 0)
+                            x
+                            (f f (- n 1) (+ x 1)))))]
+             (inc inc 3 2))
+          5)