あ、Indicatorという親クラスのテストやってましたね。
./check/indicator_check.rbですが、
内容は、
具体的な子クラスをダミーで用意する。
newでコンストラクタが呼ばれますが、Indicatorは引数にStockを要求する。
ダミーでは使わないので、nilを敢えて渡している。
ダミーでは、配列を返すだけという実装をcalculate_indicatorに施す。
Indicatorのcalculateメソッドを呼び出すと、
ダミーのcalculate_indicatorがチャント実行されたか確認。
例外処理を確認。
配列の要素がnilのときno_valueのエラー発生するか、
[3..5]というような部分配列指定は可能か。
親クラスIndicatorのテストですから、
Indicatorで実装されてる部分をテストしている。
ワタクシ、若干勘違いしてました。
[3..5]というような部分配列指定は、[-1]などと違って有効なのですね。
Rubyの内部では数値かつ正の値と判断されるようです。
で、ついでに
[-1]がチャントエラーになるか確かめてみる。
catch(:no_value) do
p my_indicator[-1]
end
を追加してみると、
何も表示されないので、有効に機能してます。
ワタクシちょっと勘違いしてました。
catchは他の言語であるような、try/catch構文かと思ってましたが、
違いました。
throwされたら、catchに飛ぶというだけでした。
goto文みたいなものでした。
誤解を招くような単語なんで使うんだろう、ますますRubyが嫌いです。
try/catch構文に当てはめて言うと、
tryがbeginで、
catchがrescueで、
finallyがensureで、
throwがraiseに対応するようです。
ああ、面倒くさい。
とにかく、これで次回からは具体的なインジケータに進める。
質問コーナー、お問い合わせは、sanpome.net@gmail.com まで。