CUnit for Mr.Ando.

English -->

# 使い方
How to.

JUnit (Javaテスティングフレームワーク)は単体テストのために『オーバライト』を使いますが、 しかし『CUnit for Mr.Ando』は単体テストのために『スタブ』を使います。
JUnit (Java testing framework) is used for "override" for unit testing, but "CUnit for Mr.Ando" is "stub" for unit testing.
図1 -- CUnit for Mr.Ando テスティングイメージ
Fig.1 -- CUnit for Mr.Ando testing image.

## テストサンプル
Test Sample.

もっとも簡単な使い方は以下の通りです。 ここではtestEasySample()の中でaとbが等価であることを２回確認しています。
But the easy usage is as follows. It is checking twice that a and b are equivalent in testEasySample().

    #include <stdio.h>
     #include <testRunner.h> /* ... (1) */

    static unsigned int testEasySample(void);
    static unsigned int testManyFunction(void);

    /** Main function. */
    int main(void) {
        return (int) testRunner(testManyFunction); /* ... (2) */
    }

    unsigned int testEasySample(void) { /* ... (3) */
        int a = 1 + 1;
        int b = 2;

        TEST_ASSERT_EQUALS(a,b); /* .... (4) */

        return 0; /* ... (5) */
    }

    unsigned int testManyFunction(void) {

        TEST_ASSERT(! testEasySample()); /* ... (6) */
        TEST_ASSERT(! testEasySample());

        return 0;
    }

1. テストファイルはtestRunner.hとstdio.hを必ずインクルードする必要があります。 プログラムは必ずtestRunner.cをコンパイルしリンクする必要があります。
   A test file needs to include testRunner.h and stdio.h. A program needs to compile and link testRunner.c.
2. テストを実施するために、main()文にはtestRunner()を記述します。 testRunner()の引数には、テスト関数を記述します。
   In order to test, testRunner() is described in a main() sentence. The argument of testRunner() describes a test function.
3. テスト関数の引数はvoid型とし、unsigned intを返すようにします。
   0で成功、0以外で失敗です。
   The argument of a test function is a void type. A test function returns unsigned int.
   "0" is a success. "Except 0" is failure.
4. このサンプルでは1+1が2であることを確認します。
   等価の確認を行うには、TEST_ASSERT_EQUALS(,)マクロを使用します。
   非等価の確認を行うには、TEST_ASSERT_NOT_EQUALS(,)マクロを使用します。
   答えが意図したものでなかった場合、その内容を表示して、関数はリターンします。
   As for this sample, 1+1 checks that it is 2.
   TEST_ASSERT_EQUALS(,) is used when an equal result is desired.
   TEST_ASSERT_NOT_EQUALS(,) is used when a not equal result is desired.
   When an answer is mistaken, the contents are displayed and the return of the function is carried out.
5. 関数は最後に0を返します。
   Finally a function returns 0.
6. 複数の関数に分離してテストを行いたい場合には、このように記載します。 TEST_ASSERT()は0の場合、テストが失敗であったとみなします。 ここでは、testEasySample()を２回実施しています。
   When you want to test by separating into two functions, it indicates. When the contents of TEST_ASSERT() are 0,test was failure. In this example,testEasySample() is carried out twice.
7. テストの結果は、必ずOKまたはNGで表示されます。
   これはどのようなC言語技術者であっても テストが正しく実行されたかを確認することができるようにするためです。
   一度書けばどこでも何度でも利用できます。
   The result of a test is only displayed by O.K. or NG.
   This is because anyone can check whether the test has been performed correctly.
   Write once,run anyway and run anywhere.

実際には、これらのテストコードは、 テストする対象ファイルにインクルードしては*いけません*。 テストコードと被テストコードは分けるべきです。
被テストコードに対してテストを実施するサンプルを以下に示します。 順番、選択、繰り返しの３つの異なる基本的なパターンです。
これらの技法を習得することにより、 どのようなC言語技術者であっても、 テストを正しく行うことができでしょう。
When this library is employed, MUST NOT include these test codes in the object file to test. A test code and the code for a test should divide.
The separated sample is shown below. They are three different fundamental patterns, sequence, selection, and a foreach.
If such techniques are mastered, anyone can do the test of higher quality.