テストユーティリティ 3 Cutterライブラリ
テストユーティリティ テストをもっと簡単に書くためのユーティリティ。

## 概要

    void *              cut_take                            (void *object,
                                                             CutDestroyFunction destroy_function);
    const void *        cut_take_memory                     (void *memory);
    const char *        cut_take_string                     (char *string);
    const char *        cut_take_strdup                     (const char *string);
    const char *        cut_take_strndup                    (const char *string,
                                                             size_t size);
    const void *        cut_take_memdup                     (const void *memory,
                                                             size_t size);
    const char *        cut_take_printf                     (const char *format,
                                                             ...);
    char **             cut_take_string_array               (char **strings);
    const char *        cut_take_diff                       (const char *from,
                                                             const char *to);
    const char *        cut_take_replace                    (const char *target,
                                                             const char *pattern,
                                                             const char *replacement);
    #define             cut_take_convert                    (string,
                                                             to_code_set,
                                                             from_code_set)
    const char *        cut_take_inspect_string             (const char *string);
    void                cut_set_fixture_data_dir            (const char *path,
                                                             ...);
    char *              cut_build_fixture_data_path         (const char *path,
                                                             ...);
    const char *        cut_build_fixture_path              (const char *path,
                                                             ...);
    const char *        cut_get_fixture_data_string         (const char *path,
                                                             ...);
    const char *        cut_get_fixture_data                (size_t *size,
                                                             const char *path,
                                                             ...);
    void                cut_remove_path                     (const char *path,
                                                             ...);
    const char *        cut_build_path                      (const char *path,
                                                             ...);
    const char *        cut_build_path_array                (const char **paths);
    void                cut_make_directory                  (const char *path,
                                                             ...);

## 説明

テストを書くためには、テスト環境を前処理・後処理するコードや、検証する結果を準備するコードなどたくさんのコードを書く必要があります。Cutterはもっと簡単にテストを書くためにユーティリティを提供します。

このユーティリティはGLibサポート無しでも使えます。

## 詳細

### cut_take ()

    void *              cut_take                            (void *object,
                                                             CutDestroyFunction destroy_function);

objectの所有権をCutterに渡し、object自身を返します。objectはdestroy_funcを用いて破棄されます。

object :

  Cutterが所有権をもつことになるオブジェクト。

destroy_function :

  オブジェクト用の破棄関数。

戻り値 :

  Cutterが所有するobject。解放しないで下さい。

1.0.5から

cut_take

### cut_take_memory ()

    const void *        cut_take_memory                     (void *memory);

memoryの所有権をCutterに渡し、memory自身を返します。memoryは`free()`で破棄されます。

memory :

  Cutterが所有権を持つことになるメモリ。

戻り値 :

  Cutterが所有するmemory。解放しないで下さい。

1.0.5から

cut_take_memory

### cut_take_string ()

    const char *        cut_take_string                     (char *string);

stringの所有権をCutterに渡し、stringそれ自身を返します。

string :

  Cutterが所有権を持つことになる文字列。

戻り値 :

  Cutterが所有するstring。解放しないで下さい。

cut_take_string

### cut_take_strdup ()

    const char *        cut_take_strdup                     (const char *string);

stringを複製し、その所有権をCutterに渡し、複製されたメモリを返します。

string :

  複製される文字列。

戻り値 :

  Cutterが所有する複製された文字列。解放しないで下さい。

1.0.5から

cut_take_strdup

### cut_take_strndup ()

    const char *        cut_take_strndup                    (const char *string,
                                                             size_t size);

stringの先頭sizeバイトを複製し、その所有権ををCutterに渡し、複製された文字列を返します。複製された文字列は常に`NULL`終端しています。

string :

  複製される文字列。

size :

  複製するバイト数。

戻り値 :

  Cutterが所有する複製された文字列。解放しないで下さい。

1.0.5から

cut_take_strndup

### cut_take_memdup ()

    const void *        cut_take_memdup                     (const void *memory,
                                                             size_t size);

memoryのsizeバイトを複製し、その所有権をCutterに渡し、複製されたメモリを返します。

memory :

  複製されるメモリ。

size :

  複製するバイト数。

戻り値 :

  Cutterが所有する複製されたメモリ。解放しないで下さい。

1.0.5から

cut_take_memdup

### cut_take_printf ()

    const char *        cut_take_printf                     (const char *format,
                                                             ...);

`printf()`のように文字列を整形しますが、整形された文字列はCutterが所有します。

format :

  整形文字列。`printf()`のドキュメントを見てください。

... :

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

戻り値 :

  Cutterが所有する整形された文字列。解放しないで下さい。

cut_take_printf

### cut_take_string_array ()

    char **             cut_take_string_array               (char **strings);

配列の所有権をCutterに渡し、stringsそれ自身を返します。

strings :

  Cutterが所有権を持つことになる文字列の配列。

戻り値 :

  Cutterが所有するstrings。解放しないで下さい。

cut_take_string_array

### cut_take_diff ()

    const char *        cut_take_diff                       (const char *from,
                                                             const char *to);

fromとtoのdiffを計算します。diffの所有者はCutterです。

from :

  元の文字列。

to :

  修正された文字列。

戻り値 :

  Cutterが所有するfromとtoのdiff。開放しないでください。

cut_take_diff

### cut_take_replace ()

    const char *        cut_take_replace                    (const char *target,
                                                             const char *pattern,
                                                             const char *replacement);

target文字列中で、patternにマッチする部分をreplacementで置き換えます。

target :

  置換対象の文字列。

pattern :

  正規表現パターン。（文字列で指定）

replacement :

  マッチした部分を置き換える文字列。

戻り値 :

  Cutterが所有する複製された文字列。解放しないで下さい。

1.0.6から

cut_take_replace

### cut_take_convert()

    #define             cut_take_convert(string, to_code_set, from_code_set)

stringのコードセットをfrom_code_setからto_code_setへ変換します。

string :

  変換対象の文字列。`NULL`終端。

to_code_set :

  変換先のコードセット名。

from_code_set :

  stringのコードセット名。

戻り値 :

  Cutterが所有する変換された文字列。解放しないで下さい。

1.1.3から

cut_take_convert

### cut_take_inspect_string ()

    const char *        cut_take_inspect_string             (const char *string);

stringの詳細を返す。

string :

  詳細な情報を取得したい文字列。`NULL`または`NULL`終端でなければいけません。

戻り値 :

  Cutterが所有する整形された文字列。解放しないで下さい。

1.1.4から

cut_take_inspect_string

### cut_set_fixture_data_dir ()

    void                cut_set_fixture_data_dir            (const char *path,
                                                             ...);

`cut_get_fixture_data_string()`などで使われるフィクスチャデータのディレクトリを指定します。

path :

  フィクスチャデータディレクトリのパスの最初の要素。

... :

  パスの残りの要素。1.0.7から`NULL`終端が必須となりました。

1.0.2から

cut_set_fixture_data_dir

### cut_build_fixture_data_path ()

    char *              cut_build_fixture_data_path         (const char *path,
                                                             ...);

`cut_build_fixture_data_path`はバージョン1.1.6からヒス衣装になりました。新しく書くコードでは使わないでください。代わりに`cut_build_fixture_path()`を使ってください。

フィクスチャデータへのパスを生成します。もし、pathが相対パスなら、パスは`cut_set_fixture_data_dir()`で指定したディレクトリか、現在のディレクトリからの相対パスとして処理されます。

path :

  フィクスチャデータのパスの最初の要素。

... :

  パスの残りの要素。1.0.7から`NULL`終端が必須となりました。

戻り値 :

  フィクスチャデータのパス。返された文字列が必要なくなったときは開放してください。

1.0.2から

cut_build_fixture_data_path
cut_build_fixture_data_path

### cut_build_fixture_path ()

    const char *        cut_build_fixture_path              (const char *path,
                                                             ...);

フィクスチャデータへのパスを生成します。もし、pathが相対パスなら、パスは`cut_set_fixture_data_dir()`で指定したディレクトリか、現在のディレクトリからの相対パスとして処理されます。

path :

  フィクスチャデータのパスの最初の要素。

... :

  パスの残りの要素。`NULL`終端が必須です。

戻り値 :

  Cutterが所有するフィクスチャデータのパス。解放しないで下さい。

1.1.6から

cut_build_fixture_path

### cut_get_fixture_data_string ()

    const char *        cut_get_fixture_data_string         (const char *path,
                                                             ...);

"path/..."にあるフィクスチャデータを読み込み、文字列として返します。文字列はCutterが所持します。`cut_build_fixture_data_path()`の説明にはフィクスチャデータのパスがどのように決定されるかが書かれています。

path :

  フィクスチャデータのパスの最初の要素。

... :

  パスの残りの要素。1.0.7から`NULL`終端が必須となりました。

戻り値 :

  フィクスチャデータの内容。Cutterが所有しているので開放しないください。

1.0.2から

cut_get_fixture_data_string

### cut_get_fixture_data ()

    const char *        cut_get_fixture_data                (size_t *size,
                                                             const char *path,
                                                             ...);

"path/..."にあるフィクスチャデータを読み込み、文字列として返します。文字列はCutterが所持します。`cut_build_fixture_data_path()`の説明にはフィクスチャデータのパスがどのように決定されるかが書かれています。

size :

  フィクスチャデータのサイズを返すアドレスまたは`NULL`。

path :

  フィクスチャデータのパスの最初の要素。

... :

  パスの残りの要素。`NULL`終端が必須です。

戻り値 :

  フィクスチャデータの内容。Cutterが所有しているので開放しないください。

1.1.6から

cut_get_fixture_data

### cut_remove_path ()

    void                cut_remove_path                     (const char *path,
                                                             ...);

pathと、その下にあるパスを再帰的に削除します。いかなるエラーも報告しません。

path :

  削除するパスの最初の要素。

... :

  パスの残りの要素。1.0.7から`NULL`終端が必須となりました。

1.0.2から

cut_remove_path

### cut_build_path ()

    const char *        cut_build_path                      (const char *path,
                                                             ...);

pathと続く要素を使ってパスを作ります。

path :

  パスの最初の要素。

... :

  パスの残りの要素。`NULL`終端。

戻り値 :

  Cutterが所有する作成したパス。解放しないで下さい。

1.0.7から

cut_build_path

### cut_build_path_array ()

    const char *        cut_build_path_array                (const char **paths);

pathsからパスを作ります。

paths :

  パスの要素を含んだ`NULL`終端の文字列の配列。

戻り値 :

  Cutterが所有する作成したパス。解放しないで下さい。

1.1.5から

cut_build_path_array

### cut_make_directory ()

    void                cut_make_directory                  (const char *path,
                                                             ...);

pathと、その途中にあるパスを再帰的に作成します。いかなるエラーも報告しません。

path :

  作成するパスの最初の要素。

... :

  パスの残りの要素。`NULL`終端。

1.1.1から

cut_make_directory