## 検証 検証 — あなたのプログラムが期待通りに動作しているかを検証します。 |

## 概要

    #define             cut_error                           (format, ...)
    #define             cut_fail                            (format, ...)
    #define             cut_pend                            (format, ...)
    #define             cut_pending                         (format, ...)
    #define             cut_notify                          (format, ...)
    #define             cut_omit                            (format, ...)
    #define             cut_assert                          (expression, ...)
    #define             cut_assert_true                     (expression, ...)
    #define             cut_assert_false                    (expression, ...)
    #define             cut_assert_null                     (expression, ...)
    #define             cut_assert_null_string              (expression, ...)
    #define             cut_assert_not_null                 (expression, ...)
    #define             cut_assert_equal_int                (expected, actual, ...)
    #define             cut_assert_equal_uint               (expected, actual, ...)
    #define             cut_assert_equal_double             (expected, error, actual, ...)
    #define             cut_assert_equal_string             (expected, actual, ...)
    #define             cut_assert_equal_string_with_free   (expected, actual, ...)
    #define             cut_assert_equal_string_or_null     (expected, actual, ...)
    #define             cut_assert_equal_memory             (expected, expected_size,
                                                             actual, actual_size, ...)
    #define             cut_assert_equal_string_array       (expected, actual, ...)
    #define             cut_assert_equal_string_array_with_free(expected, actual, ...)
    #define             cut_assert_operator                 (lhs, operator, rhs, ...)
    #define             cut_assert_operator_int             (lhs, operator, rhs, ...)
    #define             cut_assert_equal                    (function, expected, actual, ...)
    #define             cut_assert_errno                    (...)
    #define             cut_assert_file_exist               (path, ...)
    #define             cut_assert_match                    (pattern, actual, ...)
    #define             cut_assert_match_with_free          (pattern, actual, ...)
    #define             cut_assert_equal_pointer            (expected, actual, ...)

## 説明

あなたのプログラムが期待通りに動作しているかを検証するために、期待した値が得られていることを検証したい箇所で`cut_assert_XXX()`を使います。

例:

    cut_assert_equal_int(3, 1 + 2);

## 詳細

### cut_error()

    #define             cut_error(format, ...)

メッセージ付きでエラーを発生させます。

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

### cut_fail()

    #define             cut_fail(format, ...)

メッセージ付きでテストを失敗させます。

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

### cut_pend()

    #define             cut_pend(format, ...)

メッセージ付きでこのテストが未解決であると印を付けます。テストはここで中断します。

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

### cut_pending()

    #define cut_pending(format, ...) cut_pend(format, ## __VA_ARGS__)

### 警告

`cut_pending`はバージョン0.4から非推奨になりました。新しく書くコードでは使わないでください。代わりに`cut_pend()`を使ってください。

メッセージ付きでこのテストが未解決であると印を付けます。テストはここで中断します。

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

### cut_notify()

    #define             cut_notify(format, ...)

通知用のメッセージを残します。テストは続行します。

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

### cut_omit()

    #define             cut_omit(format, ...)

このテストを省略します。

例:

    if (version < 2.0)
      cut_omit("Require >= 2.0");

`format` : | 整形文字列。`printf()`のドキュメントを見てください。
`...` : | 整形文字列に挿入されるパラメータ。

0.8から

### cut_assert()

    #define             cut_assert(expression, ...)

`expression`が0でもNULLでもないときにパスします。

`expression` : | チェックする式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_true()

    #define             cut_assert_true(expression, ...)

`expression`が真の値の（0でもNULLでもない）ときにパスします。

`expression` : | チェックする式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.9から

### cut_assert_false()

    #define             cut_assert_false(expression, ...)

`expression`が0かNULLのときにパスします。

`expression` : | チェックする式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.9から

### cut_assert_null()

    #define             cut_assert_null(expression, ...)

`expression`がNULLのときにパスします。

`expression` : | チェックする式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_null_string()

    #define             cut_assert_null_string(expression, ...)

`expression`がNULLのときにパスします。

`expression` : | 文字列を返す式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.3から

### cut_assert_not_null()

    #define             cut_assert_not_null(expression, ...)

`expression`がNULLではないときにパスします。

`expression` : | チェックする式。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_int()

    #define             cut_assert_equal_int(expected, actual, ...)

`expected` == `actual`が成り立つときパスします。

`expected` : | 期待する整数の値。
`actual` : | 実際の整数の値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_uint()

    #define             cut_assert_equal_uint(expected, actual, ...)

`expected` == `actual`が成り立つときパスします。

`expected` : | 期待する符号無し整数の値。
`actual` : | 実際の符号無し符号整数の値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_double()

    #define             cut_assert_equal_double(expected, error, actual, ...)

(`expected` - `error`) <= `actual` <= (`expected` + `error`)が成り立つときパスします。

`expected` : | 期待される浮動小数点数。
`error` : | 誤差範囲を示す浮動小数点数。
`actual` : | 実際の浮動小数点数。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_string()

    #define             cut_assert_equal_string(expected, actual, ...)

`expected`と`actual`がどちらともNULL、あるいはstrcmp(`expected`, `actual`) == 0が成り立つときにパスします。

`expected` : | 期待される文字列。
`actual` : | 実際の文字列の値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_string_with_free()

    #define             cut_assert_equal_string_with_free(expected, actual, ...)

`expected`と`actual`がどちらともNULL、あるいはstrcmp(`expected`, `actual`) == 0が成り立つときにパスします。

`expected` : | 期待される文字列。
`actual` : | 実際の文字列の値（メモリは開放される）。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.3から

### cut_assert_equal_string_or_null()

    #define             cut_assert_equal_string_or_null(expected, actual, ...)

### 警告

`cut_assert_equal_string_or_null`はバージョン0.3から非推奨になりました。新しく書くコードでは使わないでください。代わりに`cut_assert_equal_string()`を使ってください。

`expected`と`actual`がどちらともNULL、あるいはstrcmp(`expected`, `actual`) == 0が成り立つときにパスします。

`expected` : | 期待される文字列。
`actual` : | 実際の文字列の値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_memory()

    #define             cut_assert_equal_memory(expected, expected_size,                \
                                                actual, actual_size, ...)

`expected_size` == `actual_size`が成り立ち、かつ、memcmp(`expected`, `actual`, `expected_size`) == 0が成り立つときにパスします。

`expected` : | 期待するデータ。
`expected_size` : | `expected`のサイズ。
`actual` : | 実際のデータ。
`actual_size` : | `actual`のサイズ。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_string_array()

    #define             cut_assert_equal_string_array(expected, actual, ...)

`expected`と`actual`がどちらともNULLではなく、どちらも同じ内容の文字列(`strcmp()` == 0)を持つときにパスします。

`expected` : | 期待する文字列の配列。配列はNULL終端。
`actual` : | 実際の文字列の配列。配列はNULL終端。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal_string_array_with_free()

    #define             cut_assert_equal_string_array_with_free(expected, actual, ...)

`expected`と`actual`がどちらともNULLではなく、どちらも同じ内容の文字列(`strcmp()` == 0)を持つときにパスします。

`expected` : | 期待する文字列の配列。配列はNULL終端。
`actual` : | 実際の文字列の配列。配列はNULL終端。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.9から

### cut_assert_operator()

    #define             cut_assert_operator(lhs, operator, rhs, ...)

(`lhs` `operator` `rhs`)が真のときにパスします。

例:

    cut_assert_operator(1, <, 2) -> (1 < 2);

`lhs` : | 左辺値。
`operator` : | 二項演算子。
`rhs` : | 右辺値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_operator_int()

    #define             cut_assert_operator_int(lhs, operator, rhs, ...)

(`lhs` `operator` `rhs`)が真のときにパスします。

例:

    cut_assert_operator_int(1, <, 2) -> (1 < 2);

`lhs` : | 左辺の整数の値。
`operator` : | 二項演算子。
`rhs` : | 右辺の整数の値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_equal()

    #define             cut_assert_equal(function, expected, actual, ...)

`function`(`expected`, `actual`)が真を返すときパスします。

例:

    cut_assert_equal(!strcmp, "abc", "abc"); -> Pass

`function` : | `actual`と`expected`を比較する関数。
`expected` : | 期待値。
`actual` : | 実測値。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

### cut_assert_errno()

    #define             cut_assert_errno(...)

Passes if errno is 0.

例:

    count = write(stdout, buffer, strlen(buffer));
    cut_assert_errno("Failed to write");            -> Pass when count != -1

`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.8から

### cut_assert_file_exist()

    #define             cut_assert_file_exist(path, ...)

`path`が存在するときにパスします。普通のファイルでもそうでなくても（例えばシンボリックリンクやディレクトリなど）かまいません。

例:

    cut_assert_file_exist("/tmp");             -> Pass on many environment.
    cut_assert_file_exist("/non-existent");    -> Fail

`path` : | テストするパス。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

0.9から

### cut_assert_match()

    #define             cut_assert_match(pattern, actual, ...)

`regex`が`string`にマッチしたときパスします。

例:

    cut_assert_match("^abc", "abc");            -> Pass
    cut_assert_match("^abc", " abc");           -> Fail

`pattern` : | 正規表現。（文字列で指定）
`actual` : | マッチされる文字列。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

1.0から

### cut_assert_match_with_free()

    #define             cut_assert_match_with_free(pattern, actual, ...)

`regex`が`string`にマッチしたときパスします。詳細は

`pattern` : | 正規表現。（文字列で指定）
`actual` : | マッチされる文字列（メモリは開放される）。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

1.0から

### cut_assert_equal_pointer()

    #define             cut_assert_equal_pointer(expected, actual, ...)

`expected` == `actual`が成り立つときパスします。

`expected` : | 期待するポインタ。
`actual` : | 実際のポインタ。
`...` : | 省略可能な整形文字列。以降のパラメータが整形文字列に挿入されます。（`printf()`と同じ）

1.0から