package tf

class TestFunnel

#include <tf/TestFunnel.h>
テストプログラムが使用するAPIを提供します。

1つのテストプログラムは1つの共有ライブラリから構成され、1つの共有ライブラリに複数のテストメソッドを定義することができます。

テストメソッドは次のいずれかの条件を満たす任意の名前の関数です。

テストメソッドが呼び出しから戻ると、そのテストは成功したことになります。テストを強制的に失敗させるにはtf_fail()を使用します。また、特定の条件が成立していない場合にテストを失敗させるにはtf_assert()を使用します。tf_fail()とtf_assert()は両方とも呼び出しから戻りません。

共有ライブラリにtf_initialize()が定義されている場合、テストメソッドを呼び出す直前にtf_initialize()を呼び出します。同様に、tf_finalize()が定義されている場合、テストメソッドを呼び出した直後にtf_finalize()を呼び出します。これらの関数の中からでも、tf_fail()やtf_assert()などのAPIを使用して、テストを失敗させることができます。


Macro Summary

TF_AUDIT
          テストメソッドであることを示す関数の属性です。
TF_METHOD(x)
          テストメソッドを宣言します。
tf_fail(x)
          テストを失敗させます。
tf_assert(x)
          条件式が成立することを確認します。
tf_printStackTrace
          スタックトレースを表示します。
tf_permitMemoryLeak(func)
          メモリ割り当てのトレースを一時的に無効にして、関数を呼び出します。

Method Summary

 void tf_initialize(void)
          テストメソッドの呼び出しの前に呼び出されます。
 void tf_finalize(void)
          テストメソッドの呼び出しの後に呼び出されます。

Global Variable Summary

 const char [] tf_description
          テストプログラムの説明を記述します。

Macro Detail

TF_AUDIT

TF_AUDIT
テストメソッドであることを示す関数の属性です。

テストメソッドは引数なし戻り値なしの関数でなければなりません。

例えばfooというテストメソッドを定義する場合は、次のように記述します。

void TF_AUDIT foo(void)
{
    /* テストの内容 */
    ...
}
Note:
gccの-Wmissing-prototypesオプションを指定してコンパイルする場合、テストメソッドのプロトタイプタイプ宣言がないと警告が表示されます。警告を表示しないようにするためには、プロトタイプ宣言を記述したヘッダファイルをインクルードするか、TF_METHOD()マクロを使用してください。

TF_METHOD

TF_METHOD(x)
テストメソッドを宣言します。

引数xはテストメソッドの名前になります。

例えばfooというテストメソッドを定義する場合は、次のようにこのマクロを使用します。

TF_METHOD(foo) {
    /* テストの内容 */
    ...
}
Note:
このマクロを使用した場合、テストメソッドのプロトタイプ宣言も展開されます。
Parameters:
x - テストメソッドの名前

tf_fail

tf_fail(x)
テストを失敗させます。

コンソールにファイル名、行番号、詳細メッセージを表示してテストを失敗させます。引数xは文字列でなければなりません。

このマクロは次のように文字列を引数とする戻り値なしの関数として呼び出すように使用します。

tf_fail("メッセージ");
Note:
このマクロは戻りません。
Parameters:
x - 文字列

tf_assert

tf_assert(x)
条件式が成立することを確認します。

条件式である引数xを評価します。その条件が成立した場合はなにもしません。成立しなかった場合はコンソールにファイル名、行番号、条件式を表示してテストを失敗させます。

このマクロは次のように論理値を引数とする戻り値なしの関数として呼び出すように使用します。

tf_assert(条件式);

次のように記述するのと同様の結果になります。

if (!条件式) {
    tf_fail("条件式");
}
Note:
条件式が成立しない場合はこのマクロは戻りません。
Parameters:
x - 条件式

tf_printStackTrace

tf_printStackTrace
スタックトレースを表示します。

このマクロは次のように引数なし戻り値なしの関数として呼び出すように使用します。

tf_printStackTrace();

tf_permitMemoryLeak

tf_permitMemoryLeak(func)
メモリ割り当てのトレースを一時的に無効にして、関数を呼び出します。

メモリ割り当てのトレースを無効にしてから、funcを呼び出します。funcが割り当てたメモリはテスト終了までに解放されなかったとしても、メモリリークとして報告されません。funcの呼び出しが戻ると、メモリ割り当てのトレースは再度有効になります。funcは引数なし戻り値なしの関数でなければなりません。

このマクロは次のように使用します。

static void
staticInitialize(void)
{
    /* メモリリークしてもよい処理 */
    ...
}

TF_METHOD(test)
{
    tf_permitMemoryLeak(staticInitialize);
    ...
}

funcから再帰的にtf_permitMemoryLeak()を使用することはできません。

Parameters:
func - メモリ割り当てのトレースを一時的に無効にした状態で呼び出す関数

Method Detail

tf_initialize

void tf_initialize( void)
テストメソッドの呼び出しの前に呼び出されます。

テストプログラムはこの関数を定義してください。定義しない場合は、この関数は呼ばれません。

この関数がテストを失敗させることもできます。その場合、テストメソッドやtf_finalize()は呼び出されません。


tf_finalize

void tf_finalize( void)
テストメソッドの呼び出しの後に呼び出されます。

テストプログラムはこの関数を定義してください。定義しない場合は、この関数は呼ばれません。

テストメソッドが既に失敗している場合は、この関数は呼び出されません。また、この関数がテストを失敗させることもできます。


Global Variable Detail

tf_description

const char tf_description[]
テストプログラムの説明を記述します。

テストプログラムがこの変数を定義すると、テスト実行時などにその内容を表示するかもしれません。

Note:
現在のところ、エンコーディングはUTF-8でなければなりません。