ftjamのインストール方法(Windows BorlandC++5.5)
1. ftjam をダウンロードする。
http://www.freetype.org/jam/index.html
ftjam-2.3.5-win32.zip
2. 展開するとjam.exeが出てくるので、PATHの通っている場所に配置する。
3. 以下の環境変数を設定する。
set JAM_TOOLSET=BORLANDC
set BORLANDC=c:\home\bin\BCC55
CUnitのインストール方法(Windows BorlandC++5.5)
1. CUnitをダウンロードする。
http://sourceforge.net/projects/cunit/
cunit-2.0-1.zip
2. 展開する。
3. 展開したルートの Jamrules ファイルを編集する。
24行目の「prefix」に、インストール先を指定する。パスセパレータが「\\」である点に注意。
4. 展開したルートで jam install を実行する。
テストスイート自動生成スクリプト
CUnit用のテスト関数を、ディレクトリ中の全ソースファイル(*_test.c)から抜き出してきて、すべてをテストスイートに登録するようなawkスクリプト。
標準出力に、すべてのテストを実行するようなテストモジュールのソースファイルを出力する。
カレントディレクトリからコマンドライン引数に指定されたファイルを調べて、
void test_xxxx(void) {
というパターンの関数名を抜き出す。スイートはファイルごとに作り、その中にテスト関数をすべて追加する。
- test_gen.awk
BEGIN { idx = 0 for(i = 1; i < ARGC; i++) { filename = ARGV[i] suite_name = filename read_tests(filename) } write_test_main() } function read_tests(filename, func_name) { while((getline < filename) > 0) { if($0 ~ /^void +test_[^(]+\(void\)/) { func_name = gensub(/^void +(test_[^(]+)\(void\).*$/, "\\1", "") suite_names[idx] = suite_name func_names[idx] = func_name idx++ } } close(filename) } function write_test_main() { printf "#include \"CUnit/CUnit.h\"\n" printf "#include \"CUnit/Basic.h\"\n" printf "\n" for(i = 0; i < idx; i++) { printf "void %s(void);\n", func_names[i] } printf "\n" printf "main() {\n" printf "\tCU_pSuite pSuite;\n" printf "\tCU_initialize_registry();\n" for(i = 0; i < idx; i++) { if(last_suite != suite_names[i]) { printf "\n" printf "\tpSuite = CU_add_suite(\"%s\", NULL, NULL);\n", suite_names[i] last_suite = suite_names[i] } printf "\tCU_add_test(pSuite, \"%s\", %s);\n", func_names[i], func_names[i] } printf "\n"; printf "\tCU_basic_run_tests();\n"; printf "\tCU_cleanup_registry();\n"; printf "\treturn 0;\n"; printf "}\n"; }
上記スクリプトを使ってテストを楽に実行するmakefile(Borland Make用)
TARGETをまともに設定してあげれば、
make test
一発で全テストを最新モジュールに対して実行する。
問題点は、
というあたり。
CC=bcc32 CUNIT_PATH=c:\home\bin\CUnit CFLAGS=-I$(CUNIT_PATH)\include -L$(CUNIT_PATH)\lib test: test.exe test.exe clean: del *.obj *.exe *.tds test.c: *_test.c gawk.exe -f test_gen.awk $** > $*.c test.exe: test.obj CBoard_test.obj CCell_test.obj CBoard.obj CCell.obj $(CC) $(CFLAGS) $** libcunit.lib -o$*.exe