]> git.draconx.ca Git - cdecl99.git/blobdiff - t/randomdecl.c
tests: Remove test_print_decl etc. from the common library.
[cdecl99.git] / t / randomdecl.c
index 1fbd2d913b360114649b310a9e4983449024954c..49a3d23786df791a528439177e9de6d6f02bfebe 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;
@@ -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);