- struct status_t status;
- char * buffer = malloc( 50 );
- status.s = calloc( 50, 1 );
- status.i = 0;
- status.stream = NULL;
- status.n = SIZE_MAX;
- puts( "- Signed min / max -\n" );
- test( buffer, SIZE_MAX, "%hhd", &status, CHAR_MIN );
- test( buffer, SIZE_MAX, "%hhd", &status, CHAR_MAX );
- test( buffer, SIZE_MAX, "%hhd", &status, 0 );
- test( buffer, SIZE_MAX, "%hd", &status, SHRT_MIN );
- test( buffer, SIZE_MAX, "%hd", &status, SHRT_MAX );
- test( buffer, SIZE_MAX, "%hd", &status, 0 );
- test( buffer, SIZE_MAX, "%d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%d", &status, 0 );
- test( buffer, SIZE_MAX, "%ld", &status, LONG_MIN );
- test( buffer, SIZE_MAX, "%ld", &status, LONG_MAX );
- test( buffer, SIZE_MAX, "%ld", &status, 0l );
- test( buffer, SIZE_MAX, "%lld", &status, LLONG_MIN );
- test( buffer, SIZE_MAX, "%lld", &status, LLONG_MAX );
- test( buffer, SIZE_MAX, "%lld", &status, 0ll );
- puts( "- Unsigned min / max -\n" );
- test( buffer, SIZE_MAX, "%hhu", &status, UCHAR_MAX );
- test( buffer, SIZE_MAX, "%hhu", &status, (unsigned char)-1 );
- test( buffer, SIZE_MAX, "%hu", &status, USHRT_MAX );
- test( buffer, SIZE_MAX, "%hu", &status, (unsigned short)-1 );
- test( buffer, SIZE_MAX, "%u", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "%u", &status, -1u );
- test( buffer, SIZE_MAX, "%lu", &status, ULONG_MAX );
- test( buffer, SIZE_MAX, "%lu", &status, -1ul );
- test( buffer, SIZE_MAX, "%llu", &status, ULLONG_MAX );
- test( buffer, SIZE_MAX, "%llu", &status, -1ull );
- puts( "- Hex and Octal, normal and alternative, upper and lowercase -\n" );
- test( buffer, SIZE_MAX, "%X", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "%#X", &status, -1u );
- test( buffer, SIZE_MAX, "%x", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "%#x", &status, -1u );
- test( buffer, SIZE_MAX, "%o", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "%#o", &status, -1u );
- puts( "- Plus flag -\n" );
- test( buffer, SIZE_MAX, "%+d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%+d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%+d", &status, 0 );
- test( buffer, SIZE_MAX, "%+u", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "%+u", &status, -1u );
- puts( "- Space flag -\n" );
- test( buffer, SIZE_MAX, "% d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "% d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "% d", &status, 0 );
- test( buffer, SIZE_MAX, "% u", &status, UINT_MAX );
- test( buffer, SIZE_MAX, "% u", &status, -1u );
- puts( "- Field width -\n" );
- test( buffer, SIZE_MAX, "%9d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%9d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%10d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%10d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%11d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%11d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%12d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%12d", &status, INT_MAX );
- puts( "- Field width (left bound) -\n" );
- test( buffer, SIZE_MAX, "%-9d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-9d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-10d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-10d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-11d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-11d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-12d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-12d", &status, INT_MAX );
- puts( "- Field width, zero padding -\n");
- test( buffer, SIZE_MAX, "%09d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%09d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%010d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%010d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%011d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%011d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%012d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%012d", &status, INT_MAX );
- puts( "- Field width, zero padding (left bound) -\n" );
- test( buffer, SIZE_MAX, "%-09d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-09d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-010d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-010d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-011d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-011d", &status, INT_MAX );
- test( buffer, SIZE_MAX, "%-012d", &status, INT_MIN );
- test( buffer, SIZE_MAX, "%-012d", &status, INT_MAX );
+ test( SIZE_MAX, "%hhd", CHAR_MIN );
+ test( SIZE_MAX, "%hhd", CHAR_MAX );
+ test( SIZE_MAX, "%hhd", 0 );
+ test( SIZE_MAX, "%hd", SHRT_MIN );
+ test( SIZE_MAX, "%hd", SHRT_MAX );
+ test( SIZE_MAX, "%hd", 0 );
+ test( SIZE_MAX, "%d", INT_MIN );
+ test( SIZE_MAX, "%d", INT_MAX );
+ test( SIZE_MAX, "%d", 0 );
+ test( SIZE_MAX, "%ld", LONG_MIN );
+ test( SIZE_MAX, "%ld", LONG_MAX );
+ test( SIZE_MAX, "%ld", 0l );
+ test( SIZE_MAX, "%lld", LLONG_MIN );
+ test( SIZE_MAX, "%lld", LLONG_MAX );
+ test( SIZE_MAX, "%lld", 0ll );
+ test( SIZE_MAX, "%hhu", UCHAR_MAX );
+ test( SIZE_MAX, "%hhu", (unsigned char)-1 );
+ test( SIZE_MAX, "%hu", USHRT_MAX );
+ test( SIZE_MAX, "%hu", (unsigned short)-1 );
+ test( SIZE_MAX, "%u", UINT_MAX );
+ test( SIZE_MAX, "%u", -1u );
+ test( SIZE_MAX, "%lu", ULONG_MAX );
+ test( SIZE_MAX, "%lu", -1ul );
+ test( SIZE_MAX, "%llu", ULLONG_MAX );
+ test( SIZE_MAX, "%llu", -1ull );
+ test( SIZE_MAX, "%X", UINT_MAX );
+ test( SIZE_MAX, "%#X", -1u );
+ test( SIZE_MAX, "%x", UINT_MAX );
+ test( SIZE_MAX, "%#x", -1u );
+ test( SIZE_MAX, "%o", UINT_MAX );
+ test( SIZE_MAX, "%#o", -1u );
+ test( SIZE_MAX, "%.0#o", 0 );
+ test( SIZE_MAX, "%+d", INT_MIN );
+ test( SIZE_MAX, "%+d", INT_MAX );
+ test( SIZE_MAX, "%+d", 0 );
+ test( SIZE_MAX, "%+u", UINT_MAX );
+ test( SIZE_MAX, "%+u", -1u );
+ test( SIZE_MAX, "% d", INT_MIN );
+ test( SIZE_MAX, "% d", INT_MAX );
+ test( SIZE_MAX, "% d", 0 );
+ test( SIZE_MAX, "% u", UINT_MAX );
+ test( SIZE_MAX, "% u", -1u );
+ test( SIZE_MAX, "%9d", INT_MIN );
+ test( SIZE_MAX, "%9d", INT_MAX );
+ test( SIZE_MAX, "%10d", INT_MIN );
+ test( SIZE_MAX, "%10d", INT_MAX );
+ test( SIZE_MAX, "%11d", INT_MIN );
+ test( SIZE_MAX, "%11d", INT_MAX );
+ test( SIZE_MAX, "%12d", INT_MIN );
+ test( SIZE_MAX, "%12d", INT_MAX );
+ test( SIZE_MAX, "%-9d", INT_MIN );
+ test( SIZE_MAX, "%-9d", INT_MAX );
+ test( SIZE_MAX, "%-10d", INT_MIN );
+ test( SIZE_MAX, "%-10d", INT_MAX );
+ test( SIZE_MAX, "%-11d", INT_MIN );
+ test( SIZE_MAX, "%-11d", INT_MAX );
+ test( SIZE_MAX, "%-12d", INT_MIN );
+ test( SIZE_MAX, "%-12d", INT_MAX );
+ test( SIZE_MAX, "%09d", INT_MIN );
+ test( SIZE_MAX, "%09d", INT_MAX );
+ test( SIZE_MAX, "%010d", INT_MIN );
+ test( SIZE_MAX, "%010d", INT_MAX );
+ test( SIZE_MAX, "%011d", INT_MIN );
+ test( SIZE_MAX, "%011d", INT_MAX );
+ test( SIZE_MAX, "%012d", INT_MIN );
+ test( SIZE_MAX, "%012d", INT_MAX );
+ test( SIZE_MAX, "%-09d", INT_MIN );
+ test( SIZE_MAX, "%-09d", INT_MAX );
+ test( SIZE_MAX, "%-010d", INT_MIN );
+ test( SIZE_MAX, "%-010d", INT_MAX );
+ test( SIZE_MAX, "%-011d", INT_MIN );
+ test( SIZE_MAX, "%-011d", INT_MAX );
+ test( SIZE_MAX, "%-012d", INT_MIN );
+ test( SIZE_MAX, "%-012d", INT_MAX );
+ test( 8, "%9d", INT_MAX );
+ test( 8, "%9d", INT_MIN );
+ test( 9, "%9d", INT_MAX );
+ test( 9, "%9d", INT_MIN );
+ test( 10, "%9d", INT_MAX );
+ test( 10, "%9d", INT_MIN );
+ test( 9, "%10d", INT_MAX );
+ test( 9, "%10d", INT_MIN );
+ test( 10, "%10d", INT_MAX );
+ test( 10, "%10d", INT_MIN );
+ test( 11, "%10d", INT_MAX );
+ test( 11, "%10d", INT_MIN );
+ test( 10, "%11d", INT_MAX );
+ test( 10, "%11d", INT_MIN );
+ test( 11, "%11d", INT_MAX );
+ test( 11, "%11d", INT_MIN );
+ test( 12, "%11d", INT_MAX );
+ test( 12, "%11d", INT_MIN );
+ test( 11, "%12d", INT_MAX );
+ test( 11, "%12d", INT_MIN );
+ test( 12, "%12d", INT_MAX );
+ test( 12, "%12d", INT_MIN );
+ test( 13, "%12d", INT_MAX );
+ test( 13, "%12d", INT_MIN );
+ test( SIZE_MAX, "%030.20d", INT_MAX );
+ test( SIZE_MAX, "%.6x", UINT_MAX );
+ test( SIZE_MAX, "%#6.3x", UINT_MAX );
+ test( SIZE_MAX, "%#3.6x", UINT_MAX );
+ test( SIZE_MAX, "%.6d", INT_MIN );
+ test( SIZE_MAX, "%6.3d", INT_MIN );
+ test( SIZE_MAX, "%3.6d", INT_MIN );
+ test( SIZE_MAX, "%#0.6x", UINT_MAX );
+ test( SIZE_MAX, "%#06.3x", UINT_MAX );
+ test( SIZE_MAX, "%#03.6x", UINT_MAX );
+ test( SIZE_MAX, "%#0.6d", INT_MAX );
+ test( SIZE_MAX, "%#06.3d", INT_MAX );
+ test( SIZE_MAX, "%#03.6d", INT_MAX );
+ test( SIZE_MAX, "%#+.6d", INT_MAX );
+ test( SIZE_MAX, "%#+6.3d", INT_MAX );
+ test( SIZE_MAX, "%#+3.6d", INT_MAX );
+ test( SIZE_MAX, "%+0.6d", INT_MAX );
+ test( SIZE_MAX, "%+06.3d", INT_MAX );
+ test( SIZE_MAX, "%+03.6d", INT_MAX );
+ test( SIZE_MAX, "- %d", INT_MAX );
+ test( SIZE_MAX, "- %d %% %d", INT_MAX, INT_MIN );
+ test( SIZE_MAX, "%c", 'x' );
+ test( SIZE_MAX, "%s", "abcdef" );
+ test( SIZE_MAX, "%p", 0xdeadbeef );
+ {
+ char buffer[50];
+ int val1, val2, val3, val4;
+ snprintf( buffer, SIZE_MAX, "123456%n789%n", &val1, &val2 );
+ _PDCLIB_snprintf( buffer, SIZE_MAX, "123456%n789%n", &val3, &val4 );
+ if ( ( val1 != val3 ) || ( val2 != val4 ) )
+ {
+ printf( "Output %d/%d\nExpect %d/%d\n\n", val1, val2, val3, val4 );
+ }
+ }