10 /* global variable testnum? */
11 static int test = 0; /* the test number */
12 static int planned = 0;
14 void plan(int tests) {
17 printf("1..%d\n", tests);
20 static void print_lazy_plan(void) {
21 printf("1..%d\n", test);
25 void plan_lazy(void) {
28 atexit(print_lazy_plan);
31 void skip_all(const char *why, ...) {
37 vfprintf(stdout, why, args);
43 void okv(int pass, const char *fmt, va_list args) {
44 printf("%sok %d", pass ? "" : "not ", ++test);
47 vfprintf(stdout, fmt, args);
52 void ok(int pass, char *fmt, ...) {
55 printf("%sok %d", pass ? "" : "not ", ++test);
59 vfprintf(stdout, fmt, args);
65 void ok_block(unsigned long count, int pass, const char *fmt, ...) {
86 void skip(const char *why, ...) {
89 printf("ok %d # skip", ++test);
93 vfprintf(stdout, why, args);
99 void skip_block(unsigned long count, const char *why, ...) {
106 printf("ok %d # skip", ++test);
108 vfprintf(stdout, why, copy);
114 printf("ok %d # skip\n", ++test);
118 void bail(const char *fmt, ...) {
123 vfprintf(stdout, fmt, args);
131 void sysbail(const char *fmt, ...) {
136 vfprintf(stdout, fmt, args);
139 printf(": %s\n", strerror(errno));
144 void sysdiag(const char *fmt, ...) {
146 if (!fmt) { return; }
149 vfprintf(stdout, fmt, args);
151 printf(": %s\n", strerror(errno));
154 void diag(const char *fmt, ...) {
156 if (!fmt) { return; }
159 vfprintf(stdout, fmt, args);
164 void is_hex(unsigned long wanted, unsigned long seen, const char *fmt, ...) {
168 okv(wanted == seen, fmt, args);
171 ok(wanted == seen, NULL);
173 if (wanted != seen) {
174 diag("wanted: %ld", wanted);
175 diag("got : %ld", seen);
180 void is_int(long wanted, long seen, const char *fmt, ...) {
184 okv(wanted == seen, fmt, args);
187 ok(wanted == seen, NULL);
189 if (wanted != seen) {
190 diag("wanted: %ld", wanted);
191 diag("got : %ld", seen);
195 void is_double(double wanted, double seen, double eps, const char *fmt, ...) {
199 pass = fabs(wanted - seen) <= eps;
202 okv(pass, fmt, args);
205 ok(wanted == seen, NULL);
208 diag("wanted: %f", wanted);
209 diag("got : %f", seen);
213 void is_string(const char *wanted, const char *seen, const char *fmt, ...) {
217 pass = !strcmp(wanted,seen);
220 okv(pass, fmt, args);
223 ok(wanted == seen, NULL);
226 diag("wanted: %s", wanted);
227 diag("got : %s", seen);