]> git.draconx.ca Git - cdecl99.git/blobdiff - t/randomdecl.c
tests: Avoid dependency on strtoumax.
[cdecl99.git] / t / randomdecl.c
index 1fbd2d913b360114649b310a9e4983449024954c..177f553a278c6e73e0ca149138637f1bd90c444b 100644 (file)
@@ -82,6 +82,23 @@ static struct cdecl *random_decl(struct test_rng *rng)
        return decl;
 }
 
+static void
+print_decl(struct cdecl *decl, size_t func(char *, size_t, struct cdecl *))
+{
+       static size_t printbuf_size;
+       static char *printbuf;
+       size_t rc;
+retry:
+       rc = func(printbuf, printbuf_size, decl);
+       if (rc >= printbuf_size) {
+               printbuf_size = rc + 1;
+               printbuf = realloc_nofail(printbuf, printbuf_size);
+               goto retry;
+       }
+
+       printf("%s\n", printbuf);
+}
+
 int main(int argc, char **argv)
 {
        const char *seed = "", *count_str = NULL;
@@ -119,7 +136,7 @@ int main(int argc, char **argv)
                }
        }
 
-       if (count_str && !strict_strtoul(&count, count_str, 0)) {
+       if (count_str && !test_strtoul(&count, count_str)) {
                fprintf(stderr, "%s: invalid count: %s\n", progname, count_str);
                return EXIT_FAILURE;
        }
@@ -132,9 +149,9 @@ int main(int argc, char **argv)
                decl = random_decl(rng);
 
                if (mode == MODE_ENGLISH) {
-                       test_explain_decl(decl);
+                       print_decl(decl, cdecl_explain);
                } else {
-                       test_print_decl(decl);
+                       print_decl(decl, cdecl_declare);
                }
 
                gen_free_declspecs(decl->specifiers);