From: Masaki Suketa Date: 2000-05-21T11:30:37+09:00 Subject: [ruby-list:22767] Re: assert with iterator 助田です。 In message "[ruby-list:22760] Re: assert with iterator" on 00/05/20, "NAKAMURA, Hiroshi" writes: > exceptionにしろblockにしろ,あんまり複雑になってくると, > なにをassertしているのかよくわかりづらくなると思います. 私もそう思います。 > 「事前条件は,とある条件で例外があがること」(exception) > それは正しい例外の使い方なんだろうか,という疑問と, でもこれは結構あるような気がするんですよ。 例えば、Math.sqrt は負の値を渡すと例外が発生するように なっています。 これをテストしようと思うとちょっと面倒なんですね。 exception_raised = false begin Math.sqrt(-1) rescue ArgumentError exception_raised = true rescue exception_raised = false end assert(exception_raised) で、これは assert_exception(ArgumentError) { Math.sqrt(-1) } と書けた方がわかりやすいかなあと。 > blockを使うような複雑な処理は混乱を招くだろう,という予感があります. こっちは私も同意見です。 私(なひさん)が納得できるような block の使用例があると 導入しやすいんですが。 assert_no_exception の方もまだどうしようかと迷ってます。 石橋さんの例は for i in 2 ... fib.size assert(fib[i] == fib[i-1] + fib[i-2]) end と書いた方がわかりやすい気がするし。