Gaucheでまとめてテスト

1個1個に分かれてると、どうもモジュール感がないので、どか~んとまとめてとテストしたい。

#!/usr/bin/gosh

(use gauche.test)

(test-start "test**-test-start!!")

(define (test** title list)
  (test-section title)
  (for-each
    (lambda (l)
      (test*
        (cadr l)
        (eval (car l) '())
        (eval (cadr l) '())))
    list))

(define test-data '(1 2 3))

(test**
  "test**-test"
  '((1            (car test-data))
    ('(2 3)       (cdr test-data))
    (#t           (list? test-data))
    (test-data    test-data)
    (*test-error* (hoge test-data))))

(test-end)

実行すると、

% ./test.scm
Testing test**-test-start!! ...
<test**-test>------------------------------------------------------------------
test (car test-data), expects 1 ==> ok
test (cdr test-data), expects (2 3) ==> ok
test (list? test-data), expects #t ==> ok
test test-data, expects (1 2 3) ==> ok
test (hoge test-data), expects #<error> ==> ok
passed.

evalいいかんじ。マクロの制御がイマイチわからん。