小宮です。

From: Masaki Suketa <CQN02273 / nifty.ne.jp>
Subject: [ruby-ext:01468] Re: RUNIT::Assert#assert_test
Date: Sun, 24 Dec 2000 10:29:13 +0900 (JST)

> 助田です。
> 
> In message "[ruby-ext:01465] Re: RUNIT::Assert#assert_test"
>     on 00/12/24, Kenichi Komiya <kom / mail1.accsnet.ne.jp> writes:
> 
> > その線でassert_equalにも同様の事が行えるようするというのはどうでしょうか?
> > 
> > こんな感じで・・・
> > 
> >     assert          ary1, :empty?
> >     assert          ary2, :include?, 1
> > 
> >     assert_not      ary1, :include?, 1
> >     assert_equal 4, ary2, :size
> > 
> > 引数の型で振舞いが変るのはあんまりrubyらしくないとは思いますが、コードの
> > 読みやすさは犠牲になっていないと思います。
> 
> これって
> 
>   assert_xxx expected, object, :mesage, *arg
> 
> ってのがあれば用は足りますか?
> (xxxは、それらしい名前にしないといけないとは思います。)

機能として同等な事は分るのですが、用が足りるか?というとちょっと違う気が
します。

もともと私は

  assert ary.include?(foo), "not include #{foo}"

などと冗長なメッセージを書くのが面倒なのでほとんど書いていないのですが、
デフォルトのメッセージにもう少し情報があって欲しいなとは思っていました。

で、

  assert ary, :include?, foo

の様に書いたら、コードから自動的にメッセージが生成されれば便利かなという
のが私の提案の主旨だったわけです。

なので、(名前はともかく)assertはあくまでassertであってassert_equal相当
のインタフェースになってもらっては嬉しさ半減だと思います。真偽判定と真偽
値との比較って同じ事なんでしょうけど、気分的に・・・


> 既存のassert_equalメソッドに機能を追加するより別の名前の
> assert_xxxメソッドを用意した方がいいように思います。

やっぱり(^^; 薄々そうは思ってたのですが、良い名前が思いつかなかったので、
そのまま提案してしまいました。

knuさんの提案されていたassert_testで良いと思うのですが、否定バージョンと
か、assert_equalバージョンとかさらにその否定バージョンとか、
assert_equal_floatバージョンとかにも名前を考えないとけないのかなぁ・・・
と思ってしまったので。


> もうちょっと考えさせて下さい。

よろしくお願いします。

-----
小宮 健一