From bc105baff078995e64b5fb5aa44ecf99bbda6221 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 7 Sep 2005 21:22:38 +0000 Subject: [PATCH] better testing svn: r790 --- collects/tests/plai/all.scm | 2 +- collects/tests/plai/hof-subst.scm | 2 +- collects/tests/plai/test.ss | 34 ++++++++++++++++++++++++++----- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/collects/tests/plai/all.scm b/collects/tests/plai/all.scm index dc938c200c..4cf4c1af05 100644 --- a/collects/tests/plai/all.scm +++ b/collects/tests/plai/all.scm @@ -24,7 +24,7 @@ (define (parse sexp) (cond [(number? sexp) (num sexp)] - [(list? sexp) + [(cons? sexp) (case (first sexp) [(+) (add (parse (second sexp)) (parse (third sexp)))] diff --git a/collects/tests/plai/hof-subst.scm b/collects/tests/plai/hof-subst.scm index c5ebf0ea8d..999faa7f2f 100644 --- a/collects/tests/plai/hof-subst.scm +++ b/collects/tests/plai/hof-subst.scm @@ -115,7 +115,7 @@ (test (interp (parse expr)) (num ans))) (define (interp-test-error expr expected-exception-msg) - (test-exn (lambda () (interp (parse expr))) expected-exception-msg)) + (test/exn (lambda () (interp (parse expr))) expected-exception-msg)) (interp-test '5 5) (interp-test '{+ 5 5} 10) diff --git a/collects/tests/plai/test.ss b/collects/tests/plai/test.ss index 424b5d7f37..675d56f098 100644 --- a/collects/tests/plai/test.ss +++ b/collects/tests/plai/test.ss @@ -1,6 +1,30 @@ -(load "all.scm") -(load "arith-interp.scm") -(load "hof-env-buggy.scm") -(load "hof-subst.scm") -(load "subst.scm") +(define (run-one-test lang src mod-only?) + (printf "Trying ~a ~a\n" lang src) + (let ([prog (with-input-from-file src + (lambda () + (let loop () + (let ([v (read)]) + (if (eof-object? v) + null + (cons v (loop)))))))]) + (parameterize ([current-namespace (make-namespace)]) + (eval `(module m (lib ,lang "plai") + ,@prog)) + (eval `(require m))) + (unless mod-only? + (let ([n (current-namespace)]) + (parameterize ([current-namespace (make-namespace 'empty)]) + (namespace-attach-module n 'mzscheme) + (namespace-require `(lib ,lang "plai")) + (for-each (lambda (v) (printf "~e\n" (eval v))) prog)))))) + +(run-one-test "plai-beginner.ss" "arith-interp.scm" #t) +(run-one-test "plai-intermediate.ss" "arith-interp.scm" #f) +(for-each (lambda (src) + (run-one-test "plai-advanced.ss" src #f)) + '("all.scm" + "arith-interp.scm" + "hof-env-buggy.scm" + "hof-subst.scm" + "subst.scm"))