トップ «前の日記(2008-07-16) 最新 次の日記(2008-07-19)» 編集

Route 477



2008-07-17

[scheme][idea] RSpecのScheme版とかどうだろう

RubyにはDSLを利用して読みやすいテストを書けるRSpecというライブラリがありますが、DSL最強であるLispで実装したらどうなるだろう?

http://rspec.info/

;; 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")

とか、どうよ?

本日のツッコミ(全1件) [ツッコミを入れる]
かくたに (2008-07-17 20:17)

PerlのTest::Moreっぽいかんじでしょうか?(あんまりよくしらない)