void ok(int pass, char *fmt, ...) { va_list args; va_start(args, fmt); okv(pass, fmt, args); va_end(args); }
/* * Takes an expected double and a seen double and assumes the test passes if * those two numbers are within delta of each other. */ int is_double(double wanted, double seen, double epsilon, const char *format, ...) { va_list args; int success; va_start(args, format); fflush(stderr); if ((isnan(wanted) && isnan(seen)) || (isinf(wanted) && isinf(wanted) == isinf(seen)) || fabs(wanted - seen) <= epsilon) { success = 1; okv(1, format, args); } else { success = 0; diag("wanted: %g", wanted); diag(" seen: %g", seen); okv(0, format, args); } return success; }
void is_int(long wanted, long seen, const char *fmt, ...) { va_list args; if (fmt) { va_start(args, fmt); okv(wanted == seen, fmt, args); va_end(args); } else { ok(wanted == seen, NULL); } if (wanted != seen) { diag("wanted: %ld", wanted); diag("got : %ld", seen); } }
void ok_block(unsigned long count, int pass, const char *fmt, ...) { va_list args; va_list copy; if (count == 0) { return; } va_start(args, fmt); while (count--) { va_copy(copy, args); okv(pass, fmt, copy); va_end(copy); } va_end(args); }
void is_string(const char *wanted, const char *seen, const char *fmt, ...) { int pass; va_list args; pass = !strcmp(wanted,seen); if (fmt) { va_start(args, fmt); okv(pass, fmt, args); va_end(args); } else { ok(wanted == seen, NULL); } if (!pass) { diag("wanted: %s", wanted); diag("got : %s", seen); } }
void is_double(double wanted, double seen, double eps, const char *fmt, ...) { int pass; va_list args; pass = fabs(wanted - seen) <= eps; if (fmt) { va_start(args, fmt); okv(pass, fmt, args); va_end(args); } else { ok(wanted == seen, NULL); } if (!pass) { diag("wanted: %f", wanted); diag("got : %f", seen); } }