colorwrap/tests/minunit.h

47 lines
1.1 KiB
C

#define KNRM "\x1B[0m"
#define KRED "\x1B[31m"
#define KGRN "\x1B[32m"
#define KBLU "\x1B[34m"
#define red(str) KRED str KNRM
#define green(str) KGRN str KNRM
#define blue(str) KBLU str KNRM
#define ALERT KRED"[!]"KNRM
#define INFO KNRM"[~]"KNRM
#define GOOD KGRN"[*]"KNRM
#define lenofarr(axx) (sizeof(axx)/sizeof(axx[0]))
typedef struct {
int error;
int cases_passed;
} unit_result;
#define MU_UNIT_INIT() int err = 0; int unit_cases_run = 0;
#define MU_UNIT_EXIT() return (unit_result){err, unit_cases_run};
#define mu_assert(error_format, test, ...) \
do { \
unit_cases_run++; \
if (!(test)) { \
printf( ALERT"\t%s: " error_format "\n\n", __func__, ##__VA_ARGS__); \
err = 1; \
}\
} while (0)
#define mu_run_test(unit) \
do { \
printf(INFO" Testing "#unit"\n"); \
unit_result result = unit();\
units_run++; \
/*if (result.error) return result.error; */\
if (result.error){ printf(ALERT" Unit Failed \n"); err = 1; break;}\
printf(GOOD" Unit Passed \n"); \
} while (0)
extern int units_run;
extern int unit_cases_run;