が便利だった。ソースはこちら。
(define-syntax eqt
(syntax-rules ()
((_ a b)
(test* (quote b) a b))))
こいつを定義しておけば、
(test* "(tree->list-2 mytree)" '(1 2 3 4 5 6 7) (tree->list-2 mytree))
↑のように書いていたテストを、
(eqt '(1 2 3 4 5 6 7) (tree->list-2 mytree))
このように表現できるようになる。なるほど便利。テストのタイトル変更したのにテストコード変更してなかったー!とか防止できる。
テスト例
tree->list-2
(define (tree->list-2 tree)
(define (copy-to-list tree result-list)
(if (null? tree)
result-list
(copy-to-list (left-branch tree)
(cons (entry tree)
(copy-to-list (right-branch tree)
result-list)))))
(copy-to-list tree '()))
mytree
(define mytree
(make-tree 4
(make-tree 2
(make-tree 1 '() '())
(make-tree 3 '() '()))
(make-tree 6
(make-tree 5 '() '())
(make-tree 7 '() '()))))
gosh
gosh> mytree
(4 (2 (1 () ()) (3 () ())) (6 (5 () ()) (7 () ())))
gosh
gosh> (eqt '(1 2 3 4 5 6 7) (tree->list-2 mytree))
test (tree->list-2 mytree), expects (1 2 3 4 5 6 7) ==> ok
#<undef>