CppCutter 3 Cutterライブラリ
CppCutter C++サポート付きのCutter。

## Functions

#define | cppcut_message()

## Types and Values

#define | CPPCUTTER_ENABLED
#define | CPPCUT_BEGIN_TEST_DECLS
#define | CPPCUT_END_TEST_DECLS

## オブジェクト階層

## 説明

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));
        }
    }

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

## Functions

### 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!");

#### Parameters

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

1.1.0から

cppcut_message

## Types and Values

### CPPCUTTER_ENABLED

    #define CPPCUTTER_ENABLED 1

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

1.0.9から

CPPCUTTER_ENABLED

### CPPCUT_BEGIN_TEST_DECLS

    #define CPPCUT_BEGIN_TEST_DECLS extern "C" {

`CPPCUT_BEGIN_TEST_DECLS` has been deprecated since version 1.1.0 and should not be used in newly-written code.

Use namespace instead.

テスト関数のプロトタイプ宣言は`CPPCUT_BEGIN_TEST_DECLS`と`CPPCUT_END_TEST_DECLS`で囲みます:

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

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

1.0.9から

CPPCUT_BEGIN_TEST_DECLS
CPPCUT_BEGIN_TEST_DECLS

### CPPCUT_END_TEST_DECLS

    #define CPPCUT_END_TEST_DECLS }

`CPPCUT_END_TEST_DECLS` has been deprecated since version 1.1.0 and should not be used in newly-written code.

Use namespace instead.

`CPPCUT_BEGIN_TEST_DECLS`を見て下さい。

1.0.9から

CPPCUT_END_TEST_DECLS
CPPCUT_END_TEST_DECLS

## 参考

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