CppCutter

CppCutter — C++サポート付きのCutter。

概要

#define             CPPCUTTER_ENABLED
#define             CPPCUT_BEGIN_TEST_DECLS
#define             CPPCUT_END_TEST_DECLS
#define             cppcut_message                      (...)

説明

CppCutterはC++で便利な機能をCutterに追加します。C++でテストを書きたい場合はCppCutterの使用を検討してください。

CppCutterを使うことは簡単です。<cutter.h>の代わりに<cppcutter.h>をinlcudeして、cutter.pcの代わりにcppcutter.pcを使うだけです。

test-xxx.cpp:

-#include <cutter.h>
+#include <cppcutter.h>

configure.ac:

-AC_CHECK_CUTTER
+AC_CHECK_CPPCUTTER

Makefile.am:

-XXX_CFLAGS = $(CUTTER_CFLAGS)
-XXX_LIBS = $(CUTTER_LIBS)
+XXX_CFLAGS = $(CPPCUTTER_CFLAGS)
+XXX_LIBS = $(CPPCUTTER_LIBS)

テスト関数はnamespaceの中に定義します。名前付け規則はCutterと同じです。つまり、'test_...'関数はテスト関数、'setup'または'cut_setup'は初期化関数、'teardown'または'cut_teardown'は後始末関数になります。

test-calc.cpp:

#include <cppcutter.h>

namespace calc
{
    void
    test_add (void)
    {
        cppcut_assert_equal(3, calc.add(1, 2));
    }

    void
    test_sub (void)
    {
        cppcut_assert_equal(5, calc.sub(9, 4));
    }
}

新しいテストを追加するときはいつも通り関数を定義するだけです。よくわからないマクロを使う必要はありません。

詳細

CPPCUTTER_ENABLED

#define CPPCUTTER_ENABLED 1

CppCutterが有効なとき定義されます。

1.0.9から


CPPCUT_BEGIN_TEST_DECLS

#define CPPCUT_BEGIN_TEST_DECLS extern "C" {

Warning

CPPCUT_BEGIN_TEST_DECLSはバージョン1.1.0から非推奨になりました。新しく書くコードでは使わないでください。代わりにnamespaceを使ってください。

テスト関数のプロトタイプ宣言はCPPCUT_BEGIN_TEST_DECLSCPPCUT_END_TEST_DECLSで囲みます:

CPPCUT_BEGIN_TEST_DECLS
void test_add ();
void test_remove ();
CPPCUT_END_TEST_DECLS

このマクロは単にテスト関数のプロトタイプ宣言を'extern "C" {...}'で囲むだけです。

1.0.9から


CPPCUT_END_TEST_DECLS

#define CPPCUT_END_TEST_DECLS }

Warning

CPPCUT_END_TEST_DECLSはバージョン1.1.0から非推奨になりました。新しく書くコードでは使わないでください。代わりにnamespaceを使ってください。

CPPCUT_BEGIN_TEST_DECLSを見て下さい。

1.0.9から


cppcut_message()

#define             cppcut_message(...)

C++らしいAPIで検証の省略可能なメッセージを指定します。メッセージはprintf()と同じAPIか"<<"を使ったストリームと同じAPIを使って指定します。

例:

cppcut_assert_equal("abc", "def",
                    cppcut_message("should fail!"));
cppcut_assert_equal("abc", "def",
                    cppcut_message() << "should fail!");

... :

整形文字列に挿入されるパラメータ。

1.1.0から

参考

C++サポート付きの検証