ffidl書き方というかテスト作成の考え方はJUnitとかCppUnitと大体同じで、複数のテストを書いたテストユニットをファイルごとに作成して、それをスイートにまとめて実行するという感じです。テストユニットを書きます。雛型はこんな感じです。::hoge::testこの例ではhogeというパッケージを(使ってないけど)テストしているつもりです。requireだけでなくて、loadやsourceなどでテスト対象を読み込んでもいいでしょう。...とあるのがテストコマンドで、ASSERT文のようなもんです。TestDetailはそれぞれわかりやすい名前を書いておきます。失敗した個所の行番号とかは出ないでTestNameとTestDetailが出力されるので、TestNameにHogeTest1-1のように連番を書き、TestDetailにその説明を書くことが多いようです。同じ名前がかぶっても問題ないので、めんどくさいときはTestNameをみんな同じにしたりしてます。このテストコマンドの書き方は省略した書き方で、正規の書き方を使ってテストコマンドごとにsetup、cleanupを使って変数の準備と後始末をしたり、プラットフォームごとに実行に制約を付けたりなどすることもできます。テストファイル中で全てのテストの最後にtcltest::cleanupTestsを呼んでテスト結果を収集したりなどの後始末をします。ちなみにnamespaceを使っているのは、他のテストと同じインタプリタ内で実行されたときに互いに干渉しあわないようにするための工夫です。singleprocオプションでファイルごとに子インタプリタを作る方法しか使わないというならnamespaceでまとめなくてもよいと思いますが。これをhoge.testとか拡張子を.testにして適当なディレクトリにおきます。testという名前のディレクトリを作ってそこに置くとよいと思います。あと、ファイルごとにtcltestをrequireしてるのは、この1ファイル単体だけでもテストを実行できるようにするためです。hoge.testのようにすれば、1ファイル単体でテストできます。まあ通常はまとめて実行するスイートを作ります。スイートはall.tclという名前で、次のような簡単なスクリプトです。$argvtcltest::runAllTestsこれはrunAllTestsコマンドで、all.tclと同じディレクトリにある.testの拡張子のファイルをsourceしてテストを実行し、その結果を表示します。-singleprocは、yesの時は全ての.testファイルが同じインタプリタのスレッド(スレッドじゃないけど)で実行されます。noの時は、.testファイルごとに子インタプリタを作成してそこでテストを実行します。デフォルトはnoです。単体テストとしてならnoで使うのが良いと思います。-debugは0~3の数字でテスト実行中の詳細を表示するレベルを指定します。all.tclのように実行すると、テストを実行して、その結果を表示します。テストコマンドの多くは簡略化した書き方で書くと思います。6基本的には、こうです。小数値が含まれてたりするときはどうしましょう。regexpテストコマンドは、最後のリターンだけ比較するので、次のように複数の文も実行できます。この例では変数aを後始末しないとよろしくありません。246まあ、このように・・・。aただしく書くならsetup、cleanupを使ってこのように書くのが望ましいでしょう。$CLEANUPと、まあこのように。基本的に最後にリターンされた値を比較するわけですが、複数の値を比較するにはリストを使います。これは結構便利に使える工夫です。456}こんな風にも書けます。