]> git.draconx.ca Git - cdecl99.git/blobdiff - t/test.h
libcdecl: Replace uintmax_t with unsigned (long) long.
[cdecl99.git] / t / test.h
index 091ad88b8b322ab80629048edbe307bf16cea692..32b4e8cb959fdf4600eeddb779c104089d53e6be 100644 (file)
--- a/t/test.h
+++ b/t/test.h
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2012, 2020, 2022-2023 Nick Bowler
+ * Copyright © 2012, 2020, 2022-2024 Nick Bowler
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #endif
 
 #define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+
+/*
+ * The test_uintmax typedef is interchangeable with cdecl_uintmax defined in
+ * <cdecl.h>, but we may want to avoid including that header for some tests.
+ */
+#if HAVE_UNSIGNED_LONG_LONG_INT
+typedef unsigned long long test_uintmax;
+#else
+typedef unsigned long test_uintmax;
+#endif
 
 struct cdecl_declspec;
 struct option;
@@ -35,15 +46,23 @@ struct cdecl;
 
 struct test_rng;
 
+void print_error(const char *fmt, ...);
+
 void *malloc_nofail(size_t size);
 void *realloc_nofail(void *ptr, size_t size);
-void test_print_specifiers(struct cdecl_declspec *spec);
-void test_print_decl(struct cdecl *decl);
-void test_explain_decl(struct cdecl *decl);
 
-bool strict_strtoul(unsigned long *val, const char *str, int base);
+bool test_strtoumax(test_uintmax *out, const char *s, test_uintmax limit);
+
+static inline bool test_strtoul(unsigned long *val, const char *str)
+{
+       test_uintmax v;
+       bool rc;
+
+       rc = test_strtoumax(&v, str, (unsigned long)-1);
+       *val = v;
+       return rc;
+}
 
-void test_print_version(const char *program);
 void test_print_options(const struct option *lopts);
 
 /*
@@ -71,4 +90,14 @@ static inline int test_rng_50_50(struct test_rng *rng)
        return test_rng_uniform_int(rng, 2) == 0;
 }
 
+#define VERSION_NO_COPYRIGHT_SYMBOL 1
+#include "version.h"
+
+#ifdef PROGNAME
+const char *progname = PROGNAME;
+#endif
+
+#define test_print_version(s) \
+       do_print_version(s " (" PACKAGE_NAME ") " PACKAGE_VERSION)
+
 #endif