]> pd.if.org Git - pdclib/blobdiff - functions/stdio/printf_testcases.incl
Intermediate work improving printf() family unified testing.
[pdclib] / functions / stdio / printf_testcases.incl
index fb8b0b672363ac086ea41715a7920a18807c703e..432d1e2e78fa38c787785e4bd5597604e7e660c4 100644 (file)
@@ -1,3 +1,47 @@
+    {
+
+#if UINT_MAX / 0xffffu == 1
+#define _PDCLIB_UINT_DIG 5
+#define _PDCLIB_INT_DIG  5
+#define _PDCLIB_INT_HEXDIG FFFF
+#define _PDCLIB_INT_hexdig ffff
+#define _PDCLIB_INT_OCTDIG 177777
+#elif UINT_MAX / 0xffffffffu == 1
+#define _PDCLIB_UINT_DIG 10
+#define _PDCLIB_INT_DIG  10
+#define _PDCLIB_INT_HEXDIG FFFFFFFF
+#define _PDCLIB_INT_hexdig ffffffff
+#define _PDCLIB_INT_OCTDIG 37777777777
+#elif UINT_MAX / 0xffffffffffffffffu == 1
+#define _PDCLIB_UINT_DIG 20
+#define _PDCLIB_INT_DIG  19
+#define _PDCLIB_INT_HEXDIG FFFFFFFFFFFFFFFF
+#define _PDCLIB_INT_hexdig ffffffffffffffff
+#define _PDCLIB_INT_OCTDIG 1777777777777777777777
+#else
+#error Unsupported width of 'int' (neither 16, 32, nor 64 bit).
+#endif
+
+#if ULONG_MAX / 0xfffffffful == 1
+#define _PDCLIB_ULONG_DIG 10
+#define _PDCLIB_LONG_DIG  10
+#elif ULONG_MAX / 0xfffffffffffffffful == 1
+#define _PDCLIB_ULONG_DIG 20
+#define _PDCLIB_LONG_DIG  19
+#else
+#error Unsupported width of 'long' (neither 32 nor 64 bit).
+#endif
+
+#if ULLONG_MAX / 0xffffffffffffffffull == 1
+#define _PDCLIB_ULLONG_DIG 20
+#define _PDCLIB_LLONG_DIG  19
+#elif ULLONG_MAX / 0xffffffffffffffffffffffffffffffffull == 1
+#define _PDCLIB_ULLONG_DIG 38
+#define _PDCLIB_LLONG_DIG  38
+#else
+#error Unsupported width of 'long long' (neither 64 nor 128 bit).
+#endif
+
     TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MIN ) == 4 );
     //TESTCASE( strcmp( buffer, "-128" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hhd", CHAR_MAX ) == 3 );
     //TESTCASE( strcmp( buffer, "32767" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hd", 0 ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%d", INT_MIN ) == 11 );
+    TESTCASE( testprintf( buffer, 100, "%d", INT_MIN ) == _PDCLIB_INT_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-2147483648" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%d", INT_MAX ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%d", INT_MAX ) == _PDCLIB_INT_DIG );
     //TESTCASE( strcmp( buffer, "2147483647" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%d", 0 ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MIN ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 11 : 20 );
+    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MIN ) == _PDCLIB_LONG_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-2147483648" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MAX ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%ld", LONG_MAX ) == _PDCLIB_LONG_DIG );
     //TESTCASE( strcmp( buffer, "2147483647" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%ld", 0l ) == 1 );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MIN ) == 20 );
+    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MIN ) == _PDCLIB_LLONG_DIG + 1 );
     //TESTCASE( strcmp( buffer, "-9223372036854775808" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MAX ) == 19 );
+    TESTCASE( testprintf( buffer, 100, "%lld", LLONG_MAX ) == _PDCLIB_LLONG_DIG );
     //TESTCASE( strcmp( buffer, "9223372036854775807" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%lld", 0ll ) );
     //TESTCASE( strcmp( buffer, "0" ) == 0 );
     //TESTCASE( strcmp( buffer, "65535" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%hu", (unsigned short)-1 ) == 5 );
     //TESTCASE( strcmp( buffer, "65535" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%u", UINT_MAX ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%u", UINT_MAX ) == _PDCLIB_UINT_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%u", -1u ) == 10 );
+    TESTCASE( testprintf( buffer, 100, "%u", -1u ) == _PDCLIB_UINT_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lu", ULONG_MAX ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%lu", ULONG_MAX ) == _PDCLIB_ULONG_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
-    TESTCASE( testprintf( buffer, 100, "%lu", -1ul ) == ( _PDCLIB_LONG_BYTES == 4 ) ? 10 : 19 );
+    TESTCASE( testprintf( buffer, 100, "%lu", -1ul ) == _PDCLIB_ULONG_DIG );
     //TESTCASE( strcmp( buffer, "4294967295" ) == 0 );
     TESTCASE( testprintf( buffer, 100, "%llu", ULLONG_MAX ) == 20 );
     //TESTCASE( strcmp( buffer, "18446744073709551615" ) == 0 );
         TESTCASE( val1 == 6 );
         TESTCASE( val2 == 9 );
     }
+    }