変更点は以下のとおりです。
- 追加
- IUTEST_*_THAT 追加
- 式アサーション追加(IUTEST_ASSERT, IUTEST_EXPECT, IUTEST_INFORM, IUTEST_ASSUME)
- 式アサーション追加(IUTEST_*_NOT)
- IUTEST_USE_MAIN 追加(main 関数定義 config)
- 変更
- IUTEST_ASSERT を IUTEST_ASSERT_EXIT に変更
今回の目玉は式アサーションと THAT の追加です。
以下より、追加された機能の紹介をしていきます
IUTEST_*_THAT 追加
テスティングフレームワークでは多くみられる that アサーションに対応しました。といっても、まだとりあえず対応した程度のものです。
現在使用できる matcher は、以下の6つです。
StartsWith | 前方一致 |
Contains | 部分一致 |
EndsWith | 後方一致 |
Equals | 完全一致 |
AllOf | すべての matcher が真 |
AnyOf | 1つ以上の matcher が真 |
今後のバージョンアップで、matcher に matcher を適用できるようにするなど、より便利にしていく予定です。
式アサーション追加
もう1つアサーションを追加しました。これまでのアサーションは、== なら EQ, <= なら LE など比較の仕方によってそれに対応するアサーションを使う必要がありました。
IUTEST_ASSERT_EQ(0, x); IUTEST_ASSERT_LE(x, 1);
今回追加した式アサーションでは、式に対してアサーションとして機能するため、== や <= などの比較演算子の違いを意識せず、同じアサーションを使用できます。
int f() { return 42; } IUTEST(Expression,Test) { IUTEST_EXPECT(f() == 0); IUTEST_EXPECT(f() <= 1); }
※C++03 の場合、算術演算子の展開に若干の制限があります。
詳細はコードを確認してみてください。(この辺なんとかしたいですが…)
|| や && を使用する場合は展開されませんので、IUTEST_EXPRESSION か IUTEST_OPERAND を使用してください。
IUTEST_EXPECT(f() == 0 IUTEST_OPERAND(||) f() == 1); IUTEST_EXPECT(f() >= 0 && IUTEST_EXPRESSION(f() <= 1));
(展開前の式に内部実装が出力されてしまうのもなんとかしたい…)
IUTEST_USE_MAIN 追加
IUTEST_USE_MAIN マクロを定義することで、main 関数の記述を省略できます。 使用する場合は、プロジェクト1つに対して、1つのソースコードでこのマクロを定義してください。今後の予定
matcher の強化や細かな部分の改善を予定しています。C言語版の iutest_c の v1.4.0 を近日リリース予定です。
0 件のコメント:
コメントを投稿