-> 07 { 01 / 17 }
Re: Test::Base で例外
http://moonrock.jp:23000/articles/2007/01/16/tests-the-exception-generating-by-using-test-base
む、どんなテストを想定しているのかよくわからないんですが、自分なら下記のように書きます。
でも確かに block をそのまんま Test::Base の構文として欲しいし、フィルタ内部(この場合は eval フィルタ)で exception が起きたら ApplyFilterError になるのはどうなんじゃろとか思ったり。ruby の block を生かせないと、イテレータの処理がうまくフィルタだけじゃ行えないしなぁ。うーん。
$LOAD_PATH << 'lib' require 'test/base' class ExceptionHandlingTest < Test::Base filters :o => %w(eval), :raise => %w(eval) def run_test(block) if block[:raise] assert_raise(block[:raise]) do eval block[:i] end else assert_equal eval(block[:i].eval), block[:o] end end end __END__ === ただの equal --- i 'foo' --- o 'foo' === もし例外が起きたらその1 --- i raise RuntimeError --- raise RuntimeError === もし例外が起きたらその2 --- i 'aaa --- raise SyntaxError
トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20070117
あと想定していたのは、文法エラーで例外が発生するRDtoolのようなライブラリ(まんまText::RDって名前ですが)のテストです。parserのテストで、正常なデータと異常な(文法エラーを含む)テキストを同じテスト中で与えたかったのです。