2007-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
えいごぶろぐ
必要だよなぁ。vox で始めるのはちょうど良いのかもだけど、スーパーpre が使えないと技術系のブログ書くのめんどくさすぎるので typo になんのかなぁ。typo 謎エラーが時たまでて追っかける気が無いのがつらい。。