]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/metacircular2-test.rkt
add tests for unless
[sicp.git] / src / sicp / metacircular2-test.rkt
index a4c23ea231a8d1b9c1a63be0801d997f84710202..aa167f8b01649bca91727b90cf3f343cfedc53d9 100644 (file)
                 (even? x)))
            env1)
      (check-equal? (eval '(f1 2) env1) true "internal definitions")
-     (check-equal? (eval '(f1 3) env1) false "internal definitions"))))
+     (check-equal? (eval '(f1 3) env1) false "internal definitions")
+     (eval '(define (fib n)
+              (let fib-iter ((a 1)
+                             (b 0)
+                             (count n))
+                (if (= count 0)
+                    b
+                    (fib-iter (+ a b) a (- count 1)))))
+           env1)
+     (check-equal? (eval '(fib 10) env1) 55 "named let")
+     (eval '(define (factorial n)
+              (if (= n 1)
+                  1
+                  (* (factorial (- n 1)) n)))
+           env1)
+     (check-equal? (eval '(factorial 10) env1) 3628800 "factorial test")
+     (check-equal? (eval '(unless true "true" "false") env1) "false" "unless test 1")
+     (check-equal? (eval '(unless false "true" "false") env1) "true" "unless test 2"))))
 
 
 (run-tests metacircular2-tests)
\ No newline at end of file