Formulate destructors properly
[scheme.git] / tests.scm
index 4e50dc61908cee17c4d1c1ada96c57282abf5830..30d23f61ed6375c786574a1d18056eb0278b398a 100644 (file)
--- a/tests.scm
+++ b/tests.scm
   (let ((str (read-file "/tmp/test-output.txt")))
     (test str output)))
 
+(test (data-tors '(data A
+                       (foo Int Bool)
+                       (bar Bool)))
+      '((foo . (abs Int (abs Bool A)))
+       (foo~0 . (abs A Int))
+       (foo~1 . (abs A Bool))
+       (bar . (abs Bool A))
+       (bar~0 . (abs A Bool))))
+
 (test-types (typecheck '((lambda (x) (+ ((lambda (y) (x y 3)) 5) 2))))
            '(abs (abs Int (abs Int Int)) Int))
 
                           (go p 1)))])
              (pow 4 2))
           16)
+
+(test-prog-stdout '(let ([f (lambda (n)
+                             (if (= n 0)
+                                 0
+                                 (let ()
+                                   (print "a")
+                                   (g (- n 1)))))]
+                        [g (lambda (m)
+                             (let ()
+                               (print "b")
+                                (f (- m 1))))])
+                        (f 10)) "ababababab")