Hi,

> I just stumbled upon MinUnit[0], a 3-line unit test framework for C. Do you 
> know
> other similarly simple solutions?

I wrote ago a simple framework for it long time:

test.h:

        #ifndef UTEST_H_
        #define UTEST_H_

        #ifdef NDEBUG
        #undef NDEBUG
        #endif

        #include <signal.h>
        #include <setjmp.h>
        #include <stdio.h>
        #include <assert.h>

        int utst_actual_test;
        int utst_test_ok;
        jmp_buf utst_jmp;


        static void utst_sigabrt(int dummy)
        {
          longjmp(utst_jmp, 0);
        }


        #define run_test(message, test)  do {                           \
            printf("Test %d %s ... ", utst_actual_test, message);       \
            signal(SIGABRT, utst_sigabrt);                              \
            ++utst_actual_test;                                         \
            if (!setjmp(utst_jmp)) {                                    \
              assert(test);                                             \
              puts("OK");                                               \
              ++utst_test_ok;                                           \
            } else {                                                    \
              puts("FAILED");                                           \
            }                                                           \
            fflush(stdin);                                              \
          }while (0)



        #define run_end() do {                          \
          if (utst_actual_test == utst_test_ok)         \
            puts("ALL TEST PASSED");                    \
          else                                          \
            printf("FAILED %d TESTS\n",                 \
                   utst_actual_test - utst_test_ok);    \
          utst_test_ok = 0;                             \
          utst_actual_test = 0;                         \
          } while (0)




        #endif /* UTEST_H_ */


-- 
Roberto E. Vargas Caballero

Reply via email to