Давно не писал на чистом Си (С++ либо python обычно), а тут вот возникла необходимость написать маленького демона, но т.к. привык к разработке через TDD, то захотелось мне так и в Си сделать, краткий обзор тестовых фреймворков для Си показал, что кое что есть, но после gtest/gmock как-то всё не понравилось и начал я городить свой маленький велосипед посмотрев презентацию о разработке через тесты в Си. Вобщем всё довольно просто, написал один макрос вида :
#define check(expr) assert((expr) && __FILE__ && __LINE__)
void test_fibonachi() {
check(fibonachi(0) == 1);
check(fibonachi(1) == 1);
check(fibonachi(2) == 2);
printf("%s %s .... PASS\n", __FILE__, __func__);
}
printf("%s %s .... PASS\n", __FILE__, __func__);
TEST(testname) {
some test code
}
void testname() {
some test code
}
тут что-то сделать чтобы запомнить адресс функции и её название
в какой-то массив структур
int main(int argc, char **argv) {
run_all_tests();
return EXIT_SUCCESS;
}
void run_all_tests() {
for(int i=0; i < tests_count; i++) {
tests[i].func_ptr();
printf("%s %s .... PASS\n", tests[i].file_name, tests[i].func_name);
}
}