/* * My own simple unit-testing framework. * * Dan Cross */ #include extern int myu_ntests; extern int myu_nfailed; #define myuinit() \ do { \ myu_ntests = 0; \ myu_nfailed = 0; \ } while (0) #define myuassert(test, ...) \ do { \ int r = (test); \ if (!r) { \ (void)fprintf(stderr, "ERROR: "); \ (void)fprintf(stderr, __VA_ARGS__); \ (void)fprintf(stderr, "\n"); \ return (!r); \ } \ } while (0) #define myuruntest(test, ...) \ do { \ int r = test(__VA_ARGS__); \ myu_ntests++; \ if (r) myu_nfailed++; \ } while (0) #define myurunsuite(test) \ do { \ test(); \ } while (0) #define myureport(prefix) \ do { \ (void)printf("%s: Tests run: %d, failed: %d (%2.2f%%).\n", \ prefix, myu_ntests, myu_nfailed, \ (float)myu_nfailed / (float)myu_ntests * 100.0); \ } while (0)