2013年8月20日火曜日

iutest_c v1.3.0 をリリースしました

iutest_c 1.3.0 をリリースしました。

今回の変更点は以下のとおりです。

  • iuCombine を追加
  • IUTEST_*_FATAL_FAILURE, IUTEST_*_NON_FATAL_FAILURE を追加
  • IUTEST_*_NO_FATAL_FAILURE, IUTEST_*_NO_FAILURE を追加
  • 明示的な成功と失敗を追加
  • 値のパラメータテストの明示的登録に対応

iuCombine を追加
今回の変更での目玉です。
v1.2.0 で値のパラメータテストに対応しましたが、Values と Range しか使えませんでした。
今回 v1.3.0 で iuCombine を追加し、パラメータの組み合わせテストを書けるようになりました。

iuCombine の使い方は iutest や gtest のそれとは少し違うので簡単にですが説明しておきます。

typedef IUTEST_P_TYPE((int, char, unsigned int)) TestCombineParamType;
IUTEST_INSTANTIATE_TEST_CASE_P((int, char, unsigned int), A
                               , TestCombine, iuCombine
                               , (iuRange, ( 0, 2)), (iuStepRange, (100, 110, 2)), (iuValues, (0, 4, 2)) );

IUTEST_P(TestCombineParamType, TestCombine, Test)
{
    const int x0 = param.value0;
    const char x1 = param.value1;
    const unsigned int x2 = param.value2;
    iuConsole_Output("%d %d %d\n", x0, x1, x2);
}
まずはじめに、IUTEST_P_TYPE マクロを使ってパラメータの型を定義します。
第一引数に、型のリストを()で括った形(以下、タプルと呼びます)で渡します。
これは、IUTEST_P のテスト関数に渡されるパラメータ変数の型として使います。

次にテスト関数を作成します。
こちらは通常の値のパラメータテストと同じように IUTEST_P で定義します。
第一引数に先ほど定義した型を指定、
第二引数がテストケース名、第三引数がテスト名です。

次に組み合わせを作成します。
IUTEST_INSTANTIATE_TEST_CASE_P を使うのは通常の値のパラメータテストと同じです。
第一引数には、IUTEST_P_TYPE で渡したものと同じ型のリストをタプルで渡します。
(※ 2回も書く必要があって面倒ですが…)
第二引数には、このパラメータのインスタンスのプレフィックス名を渡します。
これは重複しない名前ならなんでも構いません。
第三引数にはテストケース名、第四引数に iuCombine を指定します。

ここからが iuCombine の特殊な書き方になります。
第五引数以降には、iuCombine のパラメータを渡します。
個々のフォーマットは、
( ジェネレータ名, (ジェネレータのパラメータ) )
のようになります。
ジェネレータとジェネレータのパラメータを () で一纏めにして渡しています。
また、ジェネレータのパラメータもタプル形式でまとめています。
ジェネレータには iuValues や iuRange などが使用できます。

最後にパラメータの取り出し方ですが、
IUTEST_P のテスト関数に param 変数名でパラメータを保持した構造体が渡されます。
各パラメータは param.value0,param.value1... のように格納されているので、
そこから参照することができます。

実行するとこんな感じになります。


IUTEST_*_FATAL_FAILURE, IUTEST_*_NON_FATAL_FAILURE を追加
gtest における spi にあたる機能に対応しました。
若干ログメッセージがあれですが、とりあえずテストが失敗することを検証できるようになりました。

IUTEST_*_NO_FATAL_FAILURE, IUTEST_*_NO_FAILURE を追加
今度は逆に、テストが失敗していないことを検証するマクロです。
サブルーチンで発生したテスト失敗を検知するために使ったりします。

明示的な成功と失敗を追加
表題通り、明示的な成功と失敗に対応しました。

値のパラメータテストの明示的登録に対応
v1.2.0 のバグ修正です。
テスト関数の自動登録が使えない環境では、テストを明示的に登録する必要がありますが、
値のパラメータテストの関数が登録できないバグを修正しています。

次のバージョン
次のバージョンでは組込み環境で使ってみたりして、コードサイズとか細かいところをケアしていこうと思います。

0 件のコメント:

コメントを投稿