X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=testing%2Fprintf_testcases.h;h=6a3d57cef35c4798a67f679f7c04cdce19cecc93;hb=bdd913fd4a86f506a7fc42a04363c75fcb0ab093;hp=2514540c5061dd838066ae8c3e1afea486996fe4;hpb=a7a8d2f1c85c2d7760d4d3479e90466cc3a81b04;p=pdclib diff --git a/testing/printf_testcases.h b/testing/printf_testcases.h index 2514540..6a3d57c 100644 --- a/testing/printf_testcases.h +++ b/testing/printf_testcases.h @@ -1,152 +1,4 @@ - { - -/* Be afraid. Be very afraid. - Virtually everything in the printf() / scanf() test drivers is heavily - depending on the platform, i.e. the width of the integer values. Since - we need widths, string representations in hex, octal and decimal and - whatnot, there is some heavy macro abuse coming up... -*/ - -#define sym2v( x ) #x -#define sym2s( x ) sym2v( x ) - -#if INT_MAX >> 15 == 1 - -#define UINT_DIG 5 -#define INT_DIG 5 -#define INT_DIG_LESS1 "4" -#define INT_DIG_PLUS1 "6" -#define INT_DIG_PLUS2 "7" -#define INT_HEXDIG "FFF" -#define INT_hexdig "fff" -#define INT_OCTDIG "177777" -#define INT_MAX_DEZ_STR "32767" -#define INT_MIN_DEZ_STR "32768" -#define UINT_MAX_DEZ_STR "65535" -#define INT_MAX_OCT_STR -#define INT_MIN_OCT_STR -#define UINT_MAX_OCT_STR -#define INT_MAX_HEX_STR -#define INT_MIN_HEX_STR -#define UINT_MAX_HEX_STR - -#elif UINT_MAX >> 31 == 1 - -#define UINT_DIG 10 -#define INT_DIG 10 -#define INT_DIG_LESS1 "9" -#define INT_DIG_PLUS1 "11" -#define INT_DIG_PLUS2 "12" -#define INT_HEXDIG "FFFFFFF" -#define INT_hexdig "fffffff" -#define INT_OCTDIG "37777777777" -#define INT_MAX_DEZ_STR "2147483647" -#define INT_MIN_DEZ_STR "2147483648" -#define UINT_MAX_DEZ_STR "4294967295" -#define INT_MAX_OCT_STR -#define INT_MIN_OCT_STR -#define UINT_MAX_OCT_STR -#define INT_MAX_HEX_STR -#define INT_MIN_HEX_STR -#define UINT_MAX_HEX_STR - -#elif UINT_MAX >> 63 == 1 - -#define UINT_DIG 20 -#define INT_DIG 19 -#define INT_DIG_LESS1 "18" -#define INT_DIG_PLUS1 "20" -#define INT_DIG_PLUS2 "21" -#define INT_HEXDIG "FFFFFFFFFFFFFFF" -#define INT_hexdig "fffffffffffffff" -#define INT_OCTDIG "1777777777777777777777" -#define INT_MAX_DEZ_STR "9223372036854775807" -#define INT_MIN_DEZ_STR "9223372036854775808" -#define UINT_MAX_DEZ_STR "18446744073709551615" -#define INT_MAX_OCT_STR -#define INT_MIN_OCT_STR -#define UINT_MAX_OCT_STR -#define INT_MAX_HEX_STR -#define INT_MIN_HEX_STR -#define UINT_MAX_HEX_STR - -#else - -#error Unsupported width of 'int' (neither 16, 32, nor 64 bit). - -#endif - - -#if ULONG_MAX >> 31 == 1 - -#define ULONG_DIG 10 -#define LONG_DIG 10 -#define LONG_MAX_DEZ_STR "2147483647" -#define LONG_MIN_DEZ_STR "2147483648" -#define ULONG_MAX_DEZ_STR "4294967295" -#define LONG_MAX_OCT_STR -#define LONG_MIN_OCT_STR -#define ULONG_MAX_OCT_STR -#define LONG_MAX_HEX_STR -#define LONG_MIN_HEX_STR -#define ULONG_MAX_HEX_STR - -#elif ULONG_MAX >> 63 == 1 - -#define ULONG_DIG 20 -#define LONG_DIG 19 -#define LONG_MAX_DEZ_STR "9223372036854775807" -#define LONG_MIN_DEZ_STR "9223372036854775808" -#define ULONG_MAX_DEZ_STR "18446744073709551615" -#define LONG_MAX_OCT_STR -#define LONG_MIN_OCT_STR -#define ULONG_MAX_OCT_STR -#define LONG_MAX_HEX_STR -#define LONG_MIN_HEX_STR -#define ULONG_MAX_HEX_STR - -#else - -#error Unsupported width of 'long' (neither 32 nor 64 bit). - -#endif - - -#if ULLONG_MAX >> 63 == 1 - -#define ULLONG_DIG 20 -#define LLONG_DIG 19 -#define LLONG_MAX_DEZ_STR "9223372036854775807" -#define LLONG_MIN_DEZ_STR "9223372036854775808" -#define ULLONG_MAX_DEZ_STR "18446744073709551615" -#define LLONG_MAX_OCT_STR -#define LLONG_MIN_OCT_STR -#define ULLONG_MAX_OCT_STR -#define LLONG_MAX_HEX_STR -#define LLONG_MIN_HEX_STR -#define ULLONG_MAX_HEX_STR - -#elif ULLONG_MAX >> 127 == 1 - -#define ULLONG_DIG 38 -#define LLONG_DIG 38 -#define LLONG_MAX_DEZ_STR "170141183460469231731687303715884105727" -#define LLONG_MIN_DEZ_STR "170141183460469231731687303715884105728" -#define ULLONG_MAX_DEZ_STR "340282366920938463463374607431768211455" -#define LLONG_MAX_OCT_STR -#define LLONG_MIN_OCT_STR -#define ULLONG_MAX_OCT_STR -#define LLONG_MAX_HEX_STR -#define LLONG_MIN_HEX_STR -#define ULLONG_MAX_HEX_STR - -#else - -#error Unsupported width of 'long long' (neither 64 nor 128 bit). - -#endif - - +{ PRINTF_TEST( 4, "-128", "%hhd", CHAR_MIN ); PRINTF_TEST( 3, "127", "%hhd", CHAR_MAX ); PRINTF_TEST( 1, "0", "%hhd", 0 ); @@ -231,7 +83,7 @@ PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#3.6x", UINT_MAX ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%.6d", INT_MIN ); PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%6.3d", INT_MIN ); - PRINTF_TEST( INT_DIG + 1., "-" INT_MIN_DEZ_STR, "%3.6d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%3.6d", INT_MIN ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#0.6x", UINT_MAX ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#06.3x", UINT_MAX ); PRINTF_TEST( UINT_DIG, "0xf" INT_hexdig, "%#03.6x", UINT_MAX ); @@ -261,4 +113,4 @@ TESTCASE( val2 == 9 ); } #endif - } +}