(module section-5-exceptions-1-tests mzscheme (require "section-5-exceptions-1.ss" "section-5-exceptions-base-tests.ss" "language-test-tools.ss") (provide tests) (define-tester test E) (define tests (test-suite "exceptions system 1" (basic-exceptions-test-suite test) (test-suite "exceptions" (test (handle (lambda (x : num) x) ((lambda (x : (num -> num)) x) (lambda (y : num) y))) (lambda (y : num) y)) (test (handle (lambda (x : num) x) ((lambda (z : num) z) (raise num "ML"))) "Type error") (test (handle 3 ((lambda (z : num) z) (raise num "ML"))) 3) (test (MSG (num -> num) (handle (lambda (x) x) (handle (lambda (x) (x x)) (wrong "user error")))) (lambda (y : num) (MSG num ((lambda (x) (x x)) (GSM num y))))) (test (+ 3 (raise num "ML error")) "ML error") (test (handle 3 (MSG num (wrong "user error"))) "user error") (test (MSG num (GSM num (raise num "ML error"))) "ML error") (test (handle 34 (MSG num (GSM num (MSG num (GSM num (raise num "ML")))))) 34) (test (MSG num (handle 200 (GSM num (handle 20 (MSG num (wrong "user error")))))) 200) (test (MSG num (handle 200 (GSM num (handle 20 (MSG num (GSM num (raise num "ML"))))))) 20) (test (handle 1 ((handle (lambda (x : num) (raise num "ML 1")) (raise (num -> num) "ML 2")) 2)) 1) (test (MSG num (+ 1 (lambda (x) x))) "non-number") (test (MSG num (2 3)) "non-procedure") (test (MSG num (handle 42 (+ 3 (GSM num (MSG num (3 12)))))) 42)))))