summaryrefslogtreecommitdiff
path: root/tests/t-constants.c
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2001-01-07 21:14:07 +0100
committerKevin Ryde <user42@zip.com.au>2001-01-07 21:14:07 +0100
commit0a900d49d91879bc6b58fc3090fa892e2487ebc0 (patch)
tree797b6d695e1a0a27ccf0ed5ae824baa32922cb48 /tests/t-constants.c
parentd0d389f35e77f0fde66ca4f0bfa3e949230f101a (diff)
downloadgmp-0a900d49d91879bc6b58fc3090fa892e2487ebc0.tar.gz
More of:
* tests/t-constants.c: Add checks of HIGHBIT, MAX and MIN constants, simplify ANSI vs K&R stringizing, use correct printf format types, do all tests before aborting.
Diffstat (limited to 'tests/t-constants.c')
-rw-r--r--tests/t-constants.c122
1 files changed, 71 insertions, 51 deletions
diff --git a/tests/t-constants.c b/tests/t-constants.c
index efd38fdfd..57d8d601b 100644
--- a/tests/t-constants.c
+++ b/tests/t-constants.c
@@ -28,9 +28,15 @@ MA 02111-1307, USA.
#ifdef _LONG_LONG_LIMB
-#define LL(l,ll) ll
+#define LL(l,ll) ll
#else
-#define LL(l,ll) l
+#define LL(l,ll) l
+#endif
+
+#if __GMP_MP_SIZE_T_INT
+#define SS(i,l) i
+#else
+#define SS(i,l) l
#endif
@@ -91,55 +97,69 @@ MA 02111-1307, USA.
} while (0)
-#define CHECK_HIGHBIT(value, type) \
- do { \
- type n = value; \
- if (n == 0) \
- { \
- printf ("%s == 0\n", #value); \
- error = 1; \
- } \
- n <<= 1; \
- if (n != 0) \
- { \
- printf ("%s << 1 != 0\n", #value); \
- error = 1; \
- } \
- } while (0)
-
-
-#define CHECK_MAX_S(max_val, max_name, min_val, min_name, type) \
+#define CHECK_HIGHBIT_S(value, value_name, type, format) \
do { \
- type n = max_val; \
- n++; \
- if (n != min_val) \
+ type n = value; \
+ if (n == 0) \
{ \
- printf ("%s + 1 != %s\n", max_name, min_name); \
+ printf ("%s == 0\n", value_name); \
error = 1; \
} \
- if (max_val <= min_val) \
+ n <<= 1; \
+ if (n != 0) \
{ \
- printf ("%s <= %s\n", max_name, min_name); \
+ printf ("%s << 1 = ", value_name); \
+ printf (format, n); \
+ printf (" != 0\n"); \
error = 1; \
} \
} while (0)
+#define CHECK_MAX_S(max_val, max_name, min_val, min_name, type, format) \
+ do { \
+ type maxval = max_val; \
+ type minval = min_val; \
+ type n = maxval; \
+ n++; \
+ if (n != minval) \
+ { \
+ printf ("%s + 1 = ", max_name); \
+ printf (format, n); \
+ printf (" != %s = ", min_name); \
+ printf (format, minval); \
+ printf ("\n"); \
+ error = 1; \
+ } \
+ if (maxval <= minval) \
+ { \
+ printf ("%s = ", max_name); \
+ printf (format, maxval); \
+ printf (" <= %s = ", min_name); \
+ printf (format, minval); \
+ printf ("\n"); \
+ error = 1; \
+ } \
+ } while (0)
+
+
/* FIXME: printf formats not right for a long long limb. */
#if HAVE_STRINGIZE
-#define CHECK_LIMB(x,y) CHECK_LIMB_S (x, #x, y, #y)
-#define CHECK_INT(x,y) CHECK_INT_S (x, #x, y, #y)
-#define CHECK_CONDITION(x) CHECK_CONDITION_S (x, #x)
-#define CHECK_BITS(c,t) CHECK_BITS_S (c, #c, t)
-#define CHECK_MAX(m,n,t) CHECK_MAX_S (m, #m, n, #n, t)
+#define CHECK_LIMB(x,y) CHECK_LIMB_S (x, #x, y, #y)
+#define CHECK_INT(x,y) CHECK_INT_S (x, #x, y, #y)
+#define CHECK_CONDITION(x) CHECK_CONDITION_S (x, #x)
+#define CHECK_BITS(c,t) CHECK_BITS_S (c, #c, t)
+#define CHECK_MAX(m,n,t,f) CHECK_MAX_S (m, #m, n, #n, t, f)
+#define CHECK_HIGHBIT(n,t,f) CHECK_HIGHBIT_S (n, #n, t, f)
#else
-#define CHECK_LIMB(x,y) CHECK_LIMB_S (x, "x", y, "y")
-#define CHECK_INT(x,y) CHECK_INT_S (x, "x", y, "y")
-#define CHECK_CONDITION(x) CHECK_CONDITION_S (x, "x")
-#define CHECK_BITS(c,t) CHECK_BITS_S (c, "c", t)
-#define CHECK_MAX(m,n,t) CHECK_MAX_S (m, "m", n, "n", t)
+#define CHECK_LIMB(x,y) CHECK_LIMB_S (x, "x", y, "y")
+#define CHECK_INT(x,y) CHECK_INT_S (x, "x", y, "y")
+#define CHECK_CONDITION(x) CHECK_CONDITION_S (x, "x")
+#define CHECK_BITS(c,t) CHECK_BITS_S (c, "c", t)
+#define CHECK_MAX(m,n,t,f) CHECK_MAX_S (m, "m", n, "n", t, f)
+#define CHECK_HIGHBIT(n,t,f) CHECK_HIGHBIT_S (n, "n", t, f)
#endif
@@ -157,21 +177,21 @@ main (void)
CHECK_BITS (BITS_PER_SHORTINT, short);
CHECK_BITS (BITS_PER_CHAR, char);
- CHECK_HIGHBIT (MP_LIMB_T_HIGHBIT, mp_limb_t);
- CHECK_HIGHBIT (ULONG_HIGHBIT, unsigned long);
- CHECK_HIGHBIT (UINT_HIGHBIT, unsigned int);
- CHECK_HIGHBIT (USHRT_HIGHBIT, unsigned short);
- CHECK_HIGHBIT (LONG_HIGHBIT, long);
- CHECK_HIGHBIT (INT_HIGHBIT, int);
- CHECK_HIGHBIT (SHRT_HIGHBIT, short);
-
- CHECK_MAX (LONG_MAX, LONG_MIN, long);
- CHECK_MAX (INT_MAX, INT_MIN, int);
- CHECK_MAX (SHRT_MAX, SHRT_MIN, short);
- CHECK_MAX (ULONG_MAX, 0, unsigned long);
- CHECK_MAX (UINT_MAX, 0, unsigned int);
- CHECK_MAX (USHRT_MAX, 0, unsigned short);
- CHECK_MAX (MP_SIZE_T_MAX, MP_SIZE_T_MIN, mp_size_t);
+ CHECK_HIGHBIT (MP_LIMB_T_HIGHBIT, mp_limb_t, LL("0x%lX","0x%lX"));
+ CHECK_HIGHBIT (ULONG_HIGHBIT, unsigned long, "0x%lX");
+ CHECK_HIGHBIT (UINT_HIGHBIT, unsigned int, "0x%X");
+ CHECK_HIGHBIT (USHRT_HIGHBIT, unsigned short, "0x%hX");
+ CHECK_HIGHBIT (LONG_HIGHBIT, long, "0x%lX");
+ CHECK_HIGHBIT (INT_HIGHBIT, int, "0x%X");
+ CHECK_HIGHBIT (SHRT_HIGHBIT, short, "0x%hX");
+
+ CHECK_MAX (LONG_MAX, LONG_MIN, long, "%ld");
+ CHECK_MAX (INT_MAX, INT_MIN, int, "%d");
+ CHECK_MAX (SHRT_MAX, SHRT_MIN, short, "%hd");
+ CHECK_MAX (ULONG_MAX, 0, unsigned long, "%lu");
+ CHECK_MAX (UINT_MAX, 0, unsigned int, "%u");
+ CHECK_MAX (USHRT_MAX, 0, unsigned short, "%hu");
+ CHECK_MAX (MP_SIZE_T_MAX, MP_SIZE_T_MIN, mp_size_t, SS("%d","%ld"));
/* UHWtype should have at least enough bits for half a UWtype */
{