Next: srfi.98 - 環境変数へのアクセス, Previous: srfi.74 - オクテットを単位とするバイナリブロック, Up: ライブラリモジュール - SRFI [Contents][Index]
srfi.78 - 軽量なテストこのsrfiは、テストを書くためのマクロcheckとcheck-ec、
およびいくつかの補助手続きを定義します。
特に、check-ecはSRFI-42スタイルの内包表記で
パラメータを様々に変えてテストしたい式を評価することができます。
Gaucheでは、このモジュールはgauche.testとうまく協働するようになっています
(gauche.test - 単体テスト参照)。
gauche.testがアクティブ (つまりtest-startとtest-endの間)に
checkマクロが呼ばれた場合、それはgauche.testのtestマクロの
ラッパーとなり、テストの結果はgauche.test側でまとめられて報告されます。
このモジュールがgauche.testと一緒ではなく、単独で使われた場合は、
結果報告も含めsrfiで述べられている通りに動きます。つまり、このsrfiで書かれた
テストは2通りの方法で実行できるということです。それ単独でロードされた場合は
素のSRFI-78として、そしてgauche.testを使うテストファイルからincludeされた
場合はgauche.testの一部として。
[SRFI-78]{srfi.78}
expectedとequalを評価し、次にexprを評価してその結果を
expectedの結果とequalを使って比べます。
最初の形式では、equalとしてequal?が使われます。
[SRFI-78]{srfi.78}
qualifierで指定される変数束縛の全ての組み合わせの下で、
expr、equal、expectedを繰り返し評価し、
その度にexprとexpectedをequalで比較します。
もし異なっていれば、それが失敗として記録され、check-ec全体が失敗として
終了します。全ての組み合わせにおいてexprとexpectedの結果が一致すれば、
check-ec全体が成功とみなされます。
qualifierの指定方法はSRFI-42に準じます。
詳しくはsrfi.42 - 先行評価的内包表記を参照してください。
次のテストは、フェルマー数 (2^2^n + 1) が素数かどうかを順に調べています。 F_5は合成数なのでテストは失敗します。
(use math.prime)
(check-ec (: n 6)
(:let fn (+ (expt 2 (expt 2 n)) 1))
(bpsw-prime? fn)
=> #t (n))
⇒
prints Checking (bpsw-prime? fn), expecting #t => ERROR: got #f, with n: 5
レポートの観点からは、check-ec全体がひとつのチェックとして扱われます。
[SRFI-78]{srfi.78} このモジュールが単独で使われた場合、現在の出力ポートにこれまでのテスト結果のまとめを 出力します。
このモジュールがgauche.testと一緒に使われた場合は何もしません。
テスト結果報告はgauche.testによって行われます。
[SRFI-78]{srfi.78}
テストの進行と結果をどう報告するかを指定します。これはgauche.testと一緒に
使われた時には意味を持ちません。
modeには次のシンボルのいずれかを指定します。
off(check-report)も含め、結果は一切報告しません。
summary(chec-report)が呼ばれた時にまとめを報告するだけです。
report-failedsummaryの動作に加え、チェックが失敗した場合にその都度報告します。
reportsummaryの動作に加え、チェック毎にその成功失敗を報告します。
デフォルトはreportです。
[SRFI-78]{srfi.78}
内部のテスト結果記録をクリアします。gauche.testの結果記録には影響を及ぼしません。
[SRFI-78]{srfi.78}
これはプログラム内から、最後のcheck-reset!もしくはプログラム開始以降に
期待した数のテストが成功したかどうかを調べるのに使えます。
expected-total-countには期待される成功したテストの数を渡します。
テスト失敗がなく、成功したテストの数がexpected-total-countに一致すれば
#tが、そうでなければ#fが返されます。
これはgauche.testと一緒に使った場合でも有効です。ただし、
カウントされるのはcheckとcheck-ecの結果のみです。
Next: srfi.98 - 環境変数へのアクセス, Previous: srfi.74 - オクテットを単位とするバイナリブロック, Up: ライブラリモジュール - SRFI [Contents][Index]