-
- /**
- * @file kc_ut.h
- * @brief KC 単体テスト用モジュール
- * @copyright 2003 - 2023 Nomura Kei
- * @depends
- * kc.h
- */
- #ifndef KC_UT_H
- #define KC_UT_H
-
- #include <kc.h>
-
- #ifdef __cplusplus
- extern "C"
- {
- namespace kc
- {
- using namespace std;
- #endif
-
- /**
- * 関数種別。
- */
- typedef enum
- {
- UT_TESTCASE, //!< テストケース
- UT_SETUP, //!< 事前処理
- UT_TEARDOWN, //!< 事後処理
- UT_OTHER //!< その他
- } UtType;
-
- /**
- * UT実施用構造体
- *
- * @code
- * KcUt* ut = KcUt_get_instance();
- * ut->add(ut, UT_SETUP, "事前処理", UtList_setup)
- * ut->add(ut, UT_TESTCASE, "リスト追加", UtList_add);
- * ut->add(ut, UT_SETUP, "事後処理", UtList_teardown)
- *
- * ut->add(ut, UT_SETUP, "事前処理", UtList_setup)
- * ut->add(ut, UT_TESTCASE, "リストクリア", UtList_clear);
- * ut->add(ut, UT_SETUP, "事後処理", UtList_teardown)
- *
- * ut->run();
- * @endcode
- */
- typedef struct KcUt_
- {
- /**
- * テストケースまたは、事前処理/事後処理の関数を追加します。
- *
- * @param ut 単体テスト用インスタンス
- * @param type タイプ(UT_TESTCASE/UT_SETUP/UT_TEARDOWN/UT_OTHER)
- * @param title タイトル
- * @param func 追加する関数
- */
- void (*add)(struct KcUt_ *ut, UtType type, const char *title, void (*func)(void));
-
- /**
- * テストケースを実行します。
- *
- * @param ut 単体テスト用インスタンス
- */
- void (*run)(struct KcUt_ *ut);
-
- /**
- * 内部で扱うための情報格納用
- */
- void *_info;
- } KcUt;
-
- /**
- * 単体テスト用のインスタンスを生成します。
- */
- KcUt *KcUt_get_instance(void);
-
- #ifdef __cplusplus
- } // namespace kc
- } // extern "C"
- #endif
- #endif // KC_UT_H