テストコマンドの書き方をまとめてみる。
テストコマンドの多くは簡略化した書き方で書くと思います。たとえばつぎのように。
package require tcltest
namespace import ::tcltest::*
test Test1-0 {テストのテスト} {
expr 3*2
} 6
基本的には、こうです。では小数値が含まれてたりするときはどうしましょう。
まあ、こうかな・・?
test Test2-0 {浮動小数値のテスト1} {
format %1.2f [expr 2.0 * asin(1)]
} 3.14
正規表現でマッチングさせることもできます(汗)
test Test2-1 {浮動少数値のテスト2} -body {
expr 2.0 * asin(1)
} -result {^3\.14\d*$} -match regexp
テストコマンドは、最後のリターンだけ比較するので、次のように複数の文も実行できます。ただこの例では変数aを後始末しないとよろしくありません。
test Test3-0 {変数の使用のテスト0} {
set a 123
expr $a + 123
} 246
まあ、このように・・・。
test Test3-1 {変数の使用のテスト1} {
set a 123
expr $a + 123
} 246
unset a
ただしく書くならsetup、cleanupを使ってこのように書くのが望ましいでしょう。(見にくいからあまり好きじゃないけど)
test Test3-2 {変数の使用のテスト2} -body {
expr $a + 123
} -setup {
set a 123
} -cleanup {
unset a
} -result 246
複数のテストコマンドで同じ変数を使うときは、いちいちsetup、cleanupを書くのは馬鹿らしいので、
variable SETUP {set a 123}
variable CLEANUP {unset a}
のようなものを定義しておいて、
test Test3-3 {変数の使用のテスト3} -body {
expr $a + 123
} - result 246 -setup $SETUP -cleanup $CLEANUP
と、まあこのように。
基本的に最後にリターンされた値を比較するわけですが、複数の値を比較するにはリストを使います。これは結構便利に使える工夫です。
test Test4-0 {複数の値をアサートするテスト0} {
set a 123
set b 456
list $a $b
} {123 456}
こんな風にも書けます。
test Test4-1 {複数の値をアサートするテスト1} {
list \
[expr 120 + 3] \
[expr 450 + 6]
} {123 456}