2008-07-17
■ [scheme][idea] RSpecのScheme版とかどうだろう
RubyにはDSLを利用して読みやすいテストを書けるRSpecというライブラリがありますが、DSL最強であるLispで実装したらどうなるだろう?
;; bowling_spec.scm (use bowling) (describe Bowling (before :each (define *bowling* (make <Bowling>))) (it "should score 0 for gutter game" (dotimes (_ 10) (bowling-hit *bowling* 0)) (should (bowling-score *bowling*) = 0)))
うーん、どうだろう。
(should x be_#t) (should y be_#f) (shoudl z be_nil)
Lispだと語順が変わってしまって、Rspecの売りである「そのまま読み下せる」という特徴があんまり生かされないなぁ。てか、疑問形っぽい(笑)。
じゃあ、逆に考えて。
(assert x is #t) ; eq?による比較 (assert y == 2)
もしくは、動詞を変えて
(expect z has 3 items) (expect ls includes "foo")
とか、どうよ?
PerlのTest::Moreっぽいかんじでしょうか?(あんまりよくしらない)