From 483825725e75347a9784d05aa864845f3b3e8cfd Mon Sep 17 00:00:00 2001 From: solar Date: Wed, 1 Dec 2010 21:05:43 +0000 Subject: [PATCH] *Much* better. git-svn-id: https://srv7.svn-repos.de/dev34/pdclib/trunk@471 546481bc-9713-0410-bf18-d3337bbf4a3e --- functions/_PDCLIB/print.c | 1 + functions/stdio/fprintf.c | 7 +- functions/stdio/printf.c | 6 +- functions/stdio/snprintf.c | 1 + functions/stdio/sprintf.c | 1 + functions/stdio/vfprintf.c | 6 +- functions/stdio/vprintf.c | 6 +- functions/stdio/vsnprintf.c | 1 + functions/stdio/vsprintf.c | 1 + testing/_PDCLIB_test.h | 24 ++- testing/printf_testcases.incl | 300 ++++++++++++---------------------- 11 files changed, 140 insertions(+), 214 deletions(-) diff --git a/functions/_PDCLIB/print.c b/functions/_PDCLIB/print.c index 424228b..1f46a99 100644 --- a/functions/_PDCLIB/print.c +++ b/functions/_PDCLIB/print.c @@ -508,6 +508,7 @@ const char * _PDCLIB_print( const char * spec, struct _PDCLIB_status_t * status #ifdef TEST #define _PDCLIB_FILEID "_PDCLIB/print.c" +#define SPRINTF_FUNCTION #include <_PDCLIB_test.h> #include diff --git a/functions/stdio/fprintf.c b/functions/stdio/fprintf.c index db6a6a1..b7bd43a 100644 --- a/functions/stdio/fprintf.c +++ b/functions/stdio/fprintf.c @@ -24,18 +24,19 @@ int fprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDCL #endif #ifdef TEST +#define _PDCLIB_FILEID "stdio/fprintf.c" +#define FPRINTF_FUNCTION 1 + #include #include #include <_PDCLIB_test.h> #define testprintf( stream, format, ... ) fprintf( stream, format, __VA_ARGS__ ) -#define TESTCASE_SPRINTF( x ) - int main( void ) { FILE * target; - TESTCASE( ( target = fopen( "testing/testfile", "wb" ) ) != NULL ); + TESTCASE( ( target = fopen( "testing/testfile", "wb+" ) ) != NULL ); #include "printf_testcases.incl" TESTCASE( fclose( target ) == 0 ); #include "fprintf_reftest.incl" diff --git a/functions/stdio/printf.c b/functions/stdio/printf.c index ddc87cc..346dfcc 100644 --- a/functions/stdio/printf.c +++ b/functions/stdio/printf.c @@ -24,18 +24,18 @@ int printf( const char * _PDCLIB_restrict format, ... ) #endif #ifdef TEST +#define _PDCLIB_FILEID "stdio/printf.c" +#define FPRINTF_FUNCTION #include #include #include <_PDCLIB_test.h> #define testprintf( stream, format, ... ) printf( format, __VA_ARGS__ ) -#define TESTCASE_SPRINTF( x ) - int main( void ) { FILE * target; - TESTCASE( ( target = freopen( testfile, "wb", stdout ) ) != NULL ); + TESTCASE( ( target = freopen( testfile, "wb+", stdout ) ) != NULL ); #include "printf_testcases.incl" TESTCASE( fclose( target ) == 0 ); #include "fprintf_reftest.incl" diff --git a/functions/stdio/snprintf.c b/functions/stdio/snprintf.c index 3cc30fc..4435713 100644 --- a/functions/stdio/snprintf.c +++ b/functions/stdio/snprintf.c @@ -25,6 +25,7 @@ int snprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restrict #ifdef TEST #define _PDCLIB_FILEID "stdio/snprintf.c" +#define SPRINTF_FUNCTION #include <_PDCLIB_test.h> #include diff --git a/functions/stdio/sprintf.c b/functions/stdio/sprintf.c index 9c7e17a..1c1d666 100644 --- a/functions/stdio/sprintf.c +++ b/functions/stdio/sprintf.c @@ -26,6 +26,7 @@ int sprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, .. #ifdef TEST #define _PDCLIB_FILEID "stdio/sprintf.c" +#define SPRINTF_FUNCTION #include <_PDCLIB_test.h> #include diff --git a/functions/stdio/vfprintf.c b/functions/stdio/vfprintf.c index 6a5a781..b5dacb4 100644 --- a/functions/stdio/vfprintf.c +++ b/functions/stdio/vfprintf.c @@ -49,6 +49,8 @@ int vfprintf( struct _PDCLIB_file_t * _PDCLIB_restrict stream, const char * _PDC #endif #ifdef TEST +#define _PDCLIB_FILEID "stdio/vfprintf.c" +#define FPRINTF_FUNCTION #include #include #include @@ -64,12 +66,10 @@ static int testprintf( FILE * stream, const char * format, ... ) return i; } -#define TESTCASE_SPRINTF( x ) - int main( void ) { FILE * target; - TESTCASE( ( target = fopen( testfile, "wb" ) ) != NULL ); + TESTCASE( ( target = fopen( testfile, "wb+" ) ) != NULL ); #include "printf_testcases.incl" TESTCASE( fclose( target ) == 0 ); #include "fprintf_reftest.incl" diff --git a/functions/stdio/vprintf.c b/functions/stdio/vprintf.c index 904f791..55c37e4 100644 --- a/functions/stdio/vprintf.c +++ b/functions/stdio/vprintf.c @@ -19,6 +19,8 @@ int vprintf( const char * _PDCLIB_restrict format, _PDCLIB_va_list arg ) #endif #ifdef TEST +#define _PDCLIB_FILEID "stdio/vprintf.c" +#define FPRINTF_FUNCTION #include #include #include <_PDCLIB_test.h> @@ -33,12 +35,10 @@ static int testprintf( FILE * stream, const char * format, ... ) return i; } -#define TESTCASE_SPRINTF( x ) - int main( void ) { FILE * target; - TESTCASE( ( target = freopen( testfile, "wb", stdout ) ) != NULL ); + TESTCASE( ( target = freopen( testfile, "wb+", stdout ) ) != NULL ); #include "printf_testcases.incl" TESTCASE( fclose( target ) == 0 ); #include "fprintf_reftest.incl" diff --git a/functions/stdio/vsnprintf.c b/functions/stdio/vsnprintf.c index 9e54dca..9c0258c 100644 --- a/functions/stdio/vsnprintf.c +++ b/functions/stdio/vsnprintf.c @@ -49,6 +49,7 @@ int vsnprintf( char * _PDCLIB_restrict s, size_t n, const char * _PDCLIB_restric #ifdef TEST #define _PDCLIB_FILEID "stdio/vsnprintf.c" +#define SPRINTF_FUNCTION #include <_PDCLIB_test.h> #include diff --git a/functions/stdio/vsprintf.c b/functions/stdio/vsprintf.c index bdb8a79..7515a6f 100644 --- a/functions/stdio/vsprintf.c +++ b/functions/stdio/vsprintf.c @@ -21,6 +21,7 @@ int vsprintf( char * _PDCLIB_restrict s, const char * _PDCLIB_restrict format, v #ifdef TEST #define _PDCLIB_FILEID "stdio/vsprintf.c" +#define SPRINTF_FUNCTION #include <_PDCLIB_test.h> #include diff --git a/testing/_PDCLIB_test.h b/testing/_PDCLIB_test.h index 4eaa9d2..f39ce8a 100644 --- a/testing/_PDCLIB_test.h +++ b/testing/_PDCLIB_test.h @@ -26,8 +26,28 @@ static int TEST_RESULTS = 0; #define TESTCASE( x ) if ( x ) {} \ else { TEST_RESULTS += 1; printf( "FAILED: " __FILE__ ", line %d - %s\n", __LINE__, #x ); } -#define TESTCASE_SPRINTF( x ) if ( strcmp( target, x ) == 0 ) {} \ - else { TEST_RESULTS += 1; printf( "FAILED: " __FILE__ " (" _PDCLIB_FILEID "), line %d - \"%s\" != \"%s\"\n", __LINE__, target, x ); } +#if defined( FPRINTF_FUNCTION ) +static char result_buffer[ 1000 ]; +#define RESULT_MISMATCH( act, exp ) \ + rewind( act ), \ + result_buffer[ fread( result_buffer, 1, strlen( exp ) + 1, act ) ] = '\0', \ + rewind( act ), \ + memcmp( result_buffer, exp, strlen( exp ) ) +#define RESULT_STRING( tgt ) result_buffer +#elif defined( SPRINTF_FUNCTION ) +#define RESULT_MISMATCH( act, exp ) strcmp( act, exp ) != 0 +#define RESULT_STRING( tgt ) tgt +#endif + +#define PRINTF_TEST( expected_rc, expected_string, format, ... ) { \ + int actual_rc = testprintf( target, format, __VA_ARGS__ ); \ + if ( ( actual_rc != expected_rc ) || \ + ( RESULT_MISMATCH( target, expected_string ) ) ) \ + { \ + ++TEST_RESULTS; \ + fprintf( stderr, "FAILED: " __FILE__ " (" _PDCLIB_FILEID "), line %d\n expected %2d, \"%s\"\n actual %2d, \"%s\"\n", __LINE__, expected_rc, expected_string, actual_rc, RESULT_STRING( target ) ); \ + } \ + } while ( 0 ) #ifndef REGTEST #define TESTCASE_NOREG( x ) TESTCASE( x ) diff --git a/testing/printf_testcases.incl b/testing/printf_testcases.incl index bcdb9f4..f6a44dc 100644 --- a/testing/printf_testcases.incl +++ b/testing/printf_testcases.incl @@ -147,216 +147,116 @@ #endif - TESTCASE( testprintf( target, "%hhd", CHAR_MIN ) == 4 ); - TESTCASE_SPRINTF( "-128" ); - TESTCASE( testprintf( target, "%hhd", CHAR_MAX ) == 3 ); - TESTCASE_SPRINTF( "127" ); - TESTCASE( testprintf( target, "%hhd", 0 ) == 1 ); - TESTCASE_SPRINTF( "0" ); - TESTCASE( testprintf( target, "%hd", SHRT_MIN ) == 6 ); - TESTCASE_SPRINTF( "-32768" ); - TESTCASE( testprintf( target, "%hd", SHRT_MAX ) == 5 ); - TESTCASE_SPRINTF( "32767" ); - TESTCASE( testprintf( target, "%hd", 0 ) == 1 ); - TESTCASE_SPRINTF( "0" ); - TESTCASE( testprintf( target, "%d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%d", 0 ) == 1 ); - TESTCASE_SPRINTF( "0" ); - TESTCASE( testprintf( target, "%ld", LONG_MIN ) == LONG_DIG + 1 ); - TESTCASE_SPRINTF( "-" LONG_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%ld", LONG_MAX ) == LONG_DIG ); - TESTCASE_SPRINTF( LONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%ld", 0l ) == 1 ); - TESTCASE_SPRINTF( "0" ); - TESTCASE( testprintf( target, "%lld", LLONG_MIN ) == LLONG_DIG + 1 ); - TESTCASE_SPRINTF( "-" LLONG_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%lld", LLONG_MAX ) == LLONG_DIG ); - TESTCASE_SPRINTF( LLONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%lld", 0ll ) ); - TESTCASE_SPRINTF( "0" ); - TESTCASE( testprintf( target, "%hhu", UCHAR_MAX ) == 3 ); - TESTCASE_SPRINTF( "255" ); - TESTCASE( testprintf( target, "%hhu", (unsigned char)-1 ) == 3 ); - TESTCASE_SPRINTF( "255" ); - TESTCASE( testprintf( target, "%hu", USHRT_MAX ) == 5 ); - TESTCASE_SPRINTF( "65535" ); - TESTCASE( testprintf( target, "%hu", (unsigned short)-1 ) == 5 ); - TESTCASE_SPRINTF( "65535" ); - TESTCASE( testprintf( target, "%u", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%u", -1u ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%lu", ULONG_MAX ) == ULONG_DIG ); - TESTCASE_SPRINTF( ULONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%lu", -1ul ) == ULONG_DIG ); - TESTCASE_SPRINTF( ULONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%llu", ULLONG_MAX ) == ULLONG_DIG ); - TESTCASE_SPRINTF( ULLONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%llu", -1ull ) == ULLONG_DIG ); - TESTCASE_SPRINTF( ULLONG_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%X", UINT_MAX ) == (int)strlen( INT_HEXDIG ) + 1 ); - TESTCASE_SPRINTF( "F" INT_HEXDIG ); - TESTCASE( testprintf( target, "%#X", -1u ) == (int)strlen( INT_HEXDIG ) + 3 ); - TESTCASE_SPRINTF( "0XF" INT_HEXDIG ); - TESTCASE( testprintf( target, "%x", UINT_MAX ) == (int)strlen( INT_HEXDIG ) + 1 ); - TESTCASE_SPRINTF( "f" INT_hexdig ); - TESTCASE( testprintf( target, "%#x", -1u ) == (int)strlen( INT_HEXDIG ) + 3 ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%o", UINT_MAX ) == (int)strlen( INT_OCTDIG ) ); - TESTCASE_SPRINTF( INT_OCTDIG ); - TESTCASE( testprintf( target, "%#o", -1u ) == (int)strlen( INT_OCTDIG ) + 1 ); - TESTCASE_SPRINTF( "0" INT_OCTDIG ); + PRINTF_TEST( 4, "-128", "%hhd", CHAR_MIN ); + PRINTF_TEST( 3, "127", "%hhd", CHAR_MAX ); + PRINTF_TEST( 1, "0", "%hhd", 0 ); + PRINTF_TEST( 6, "-32768", "%hd", SHRT_MIN ); + PRINTF_TEST( 5, "32767", "%hd", SHRT_MAX ); + PRINTF_TEST( 1, "0", "%hd", 0 ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%d", INT_MAX ); + PRINTF_TEST( 1, "0", "%d", 0 ); + PRINTF_TEST( LONG_DIG + 1, "-" LONG_MIN_DEZ_STR, "%ld", LONG_MIN ); + PRINTF_TEST( LONG_DIG, LONG_MAX_DEZ_STR, "%ld", LONG_MAX ); + PRINTF_TEST( 1, "0", "%ld", 0l ); + PRINTF_TEST( LLONG_DIG + 1, "-" LLONG_MIN_DEZ_STR, "%lld", LLONG_MIN ); + PRINTF_TEST( LLONG_DIG, LLONG_MAX_DEZ_STR, "%lld", LLONG_MAX ); + PRINTF_TEST( 1, "0", "%lld", 0ll ); + PRINTF_TEST( 3, "255", "%hhu", UCHAR_MAX ); + PRINTF_TEST( 3, "255", "%hhu", (unsigned char)-1 ); + PRINTF_TEST( 5, "65535", "%hu", USHRT_MAX ); + PRINTF_TEST( 5, "65535", "%hu", (unsigned short)-1 ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%u", UINT_MAX ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%u", -1u ); + PRINTF_TEST( ULONG_DIG, ULONG_MAX_DEZ_STR, "%lu", ULONG_MAX ); + PRINTF_TEST( ULONG_DIG, ULONG_MAX_DEZ_STR, "%lu", -1ul ); + PRINTF_TEST( ULLONG_DIG, ULLONG_MAX_DEZ_STR, "%llu", ULLONG_MAX ); + PRINTF_TEST( ULLONG_DIG, ULLONG_MAX_DEZ_STR, "%llu", -1ull ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 1, "F" INT_HEXDIG, "%X", UINT_MAX ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 3, "0XF" INT_HEXDIG, "%#X", -1u ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 1, "f" INT_hexdig, "%x", UINT_MAX ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#x", -1u ); + PRINTF_TEST( (int)strlen( INT_OCTDIG ), INT_OCTDIG, "%o", UINT_MAX ); + PRINTF_TEST( (int)strlen( INT_OCTDIG ) + 1, "0" INT_OCTDIG, "%#o", -1u ); #if 0 /* TODO: This test case is broken, doesn't test what it was intended to. */ - TESTCASE( testprintf( target, "%.0#o", 0 ) == 5 ); - TESTCASE_SPRINTF( "%.0#o" ); + PRINTF_TEST( 5, "%.0#o", "%.0#o", 0 ); #endif - TESTCASE( testprintf( target, "%+d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%+d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%+d", 0 ) == 2 ); - TESTCASE_SPRINTF( "+0" ); - TESTCASE( testprintf( target, "%+u", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%+u", -1u ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "% d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "% d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( " " INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "% d", 0 ) == 2 ); - TESTCASE_SPRINTF( " 0" ); - TESTCASE( testprintf( target, "% u", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "% u", -1u ) == UINT_DIG ); - TESTCASE_SPRINTF( UINT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_LESS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_LESS1 "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%" sym2s(INT_DIG) "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%" sym2s(INT_DIG) "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_PLUS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_PLUS1 "d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( " " INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_PLUS2 "d", INT_MIN ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( " -" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%" INT_DIG_PLUS2 "d", INT_MAX ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( " " INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-" INT_DIG_LESS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-" INT_DIG_LESS1 "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-" sym2s(INT_DIG) "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-" sym2s(INT_DIG) "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-" INT_DIG_PLUS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-" INT_DIG_PLUS1 "d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR " " ); - TESTCASE( testprintf( target, "%-" INT_DIG_PLUS2 "d", INT_MIN ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR " " ); - TESTCASE( testprintf( target, "%-" INT_DIG_PLUS2 "d", INT_MAX ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR " " ); - TESTCASE( testprintf( target, "%0" INT_DIG_LESS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%0" INT_DIG_LESS1 "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%0" sym2s(INT_DIG) "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%0" sym2s(INT_DIG) "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%0" INT_DIG_PLUS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%0" INT_DIG_PLUS1 "d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "0" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%0" INT_DIG_PLUS2 "d", INT_MIN ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( "-0" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%0" INT_DIG_PLUS2 "d", INT_MAX ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( "00" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" INT_DIG_LESS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" INT_DIG_LESS1 "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" sym2s(INT_DIG) "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" sym2s(INT_DIG) "d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" INT_DIG_PLUS1 "d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%-0" INT_DIG_PLUS1 "d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR " " ); - TESTCASE( testprintf( target, "%-0" INT_DIG_PLUS2 "d", INT_MIN ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR " " ); - TESTCASE( testprintf( target, "%-0" INT_DIG_PLUS2 "d", INT_MAX ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR " " ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%+d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+d", INT_MAX ); + PRINTF_TEST( 2, "+0", "%+d", 0 ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%+u", UINT_MAX ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "%+u", -1u ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "% d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, " " INT_MAX_DEZ_STR, "% d", INT_MAX ); + PRINTF_TEST( 2, " 0", "% d", 0 ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "% u", UINT_MAX ); + PRINTF_TEST( UINT_DIG, UINT_MAX_DEZ_STR, "% u", -1u ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" INT_DIG_LESS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%" INT_DIG_LESS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" sym2s(INT_DIG) "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%" sym2s(INT_DIG) "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%" INT_DIG_PLUS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, " " INT_MAX_DEZ_STR, "%" INT_DIG_PLUS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 2, " -" INT_MIN_DEZ_STR, "%" INT_DIG_PLUS2 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 2, " " INT_MAX_DEZ_STR, "%" INT_DIG_PLUS2 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" INT_DIG_LESS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-" INT_DIG_LESS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" sym2s(INT_DIG) "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-" sym2s(INT_DIG) "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-" INT_DIG_PLUS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, INT_MAX_DEZ_STR " ", "%-" INT_DIG_PLUS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 2, "-" INT_MIN_DEZ_STR " ", "%-" INT_DIG_PLUS2 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 2, INT_MAX_DEZ_STR " ", "%-" INT_DIG_PLUS2 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" INT_DIG_LESS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%0" INT_DIG_LESS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" sym2s(INT_DIG) "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%0" sym2s(INT_DIG) "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%0" INT_DIG_PLUS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, "0" INT_MAX_DEZ_STR, "%0" INT_DIG_PLUS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 2, "-0" INT_MIN_DEZ_STR, "%0" INT_DIG_PLUS2 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 2, "00" INT_MAX_DEZ_STR, "%0" INT_DIG_PLUS2 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" INT_DIG_LESS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-0" INT_DIG_LESS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" sym2s(INT_DIG) "d", INT_MIN ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%-0" sym2s(INT_DIG) "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "-" INT_MIN_DEZ_STR, "%-0" INT_DIG_PLUS1 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 1, INT_MAX_DEZ_STR " ", "%-0" INT_DIG_PLUS1 "d", INT_MAX ); + PRINTF_TEST( INT_DIG + 2, "-" INT_MIN_DEZ_STR " ", "%-0" INT_DIG_PLUS2 "d", INT_MIN ); + PRINTF_TEST( INT_DIG + 2, INT_MAX_DEZ_STR " ", "%-0" INT_DIG_PLUS2 "d", INT_MAX ); /* FIXME: This test not yet 32/64 bit agnostic */ - TESTCASE( testprintf( target, "%030.20d", INT_MAX ) == 30 ); - TESTCASE_SPRINTF( " 00000000002147483647" ); - TESTCASE( testprintf( target, "%.6x", UINT_MAX ) == (int)strlen( INT_HEXDIG ) + 1 ); - TESTCASE_SPRINTF( "f" INT_hexdig ); - TESTCASE( testprintf( target, "%#6.3x", UINT_MAX ) == (int)strlen( INT_HEXDIG ) + 3 ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%#3.6x", UINT_MAX ) == (int)strlen( INT_HEXDIG ) + 3 ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%.6d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%6.3d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%3.6d", INT_MIN ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "-" INT_MIN_DEZ_STR ); - TESTCASE( testprintf( target, "%#0.6x", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%#06.3x", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%#03.6x", UINT_MAX ) == UINT_DIG ); - TESTCASE_SPRINTF( "0xf" INT_hexdig ); - TESTCASE( testprintf( target, "%#0.6d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%#06.3d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%#03.6d", INT_MAX ) == INT_DIG ); - TESTCASE_SPRINTF( INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%#+.6d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%#+6.3d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%#+3.6d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%+0.6d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%+06.3d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "%+03.6d", INT_MAX ) == INT_DIG + 1 ); - TESTCASE_SPRINTF( "+" INT_MAX_DEZ_STR ); + PRINTF_TEST( 30, " 00000000002147483647", "%030.20d", INT_MAX ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 1, "f" INT_hexdig, "%.6x", UINT_MAX ); + PRINTF_TEST( (int)strlen( INT_HEXDIG ) + 3, "0xf" INT_hexdig, "%#6.3x", UINT_MAX ); + 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( 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 ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#0.6d", INT_MAX ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#06.3d", INT_MAX ); + PRINTF_TEST( INT_DIG, INT_MAX_DEZ_STR, "%#03.6d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+.6d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+6.3d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%#+3.6d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+0.6d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+06.3d", INT_MAX ); + PRINTF_TEST( INT_DIG + 1, "+" INT_MAX_DEZ_STR, "%+03.6d", INT_MAX ); #ifndef TEST_CONVERSION_ONLY - TESTCASE( testprintf( target, "- %d", INT_MAX ) == INT_DIG + 2 ); - TESTCASE_SPRINTF( "- " INT_MAX_DEZ_STR ); - TESTCASE( testprintf( target, "- %d %% %d", INT_MAX, INT_MIN ) == INT_DIG * 2 + 6 ); - TESTCASE_SPRINTF( "- " INT_MAX_DEZ_STR " % -" INT_MIN_DEZ_STR ); + PRINTF_TEST( INT_DIG + 2, "- " INT_MAX_DEZ_STR, "- %d", INT_MAX ); + PRINTF_TEST( INT_DIG * 2 + 6, "- " INT_MAX_DEZ_STR, " % -" INT_MIN_DEZ_STR, INT_MIN ); #endif - TESTCASE( testprintf( target, "%c", 'x' ) == 1 ); - TESTCASE_SPRINTF( "x" ); - TESTCASE( testprintf( target, "%s", "abcdef" ) == 6 ); - TESTCASE_SPRINTF( "abcdef" ); + PRINTF_TEST( 1, "x", "%c", 'x' ); + PRINTF_TEST( 6, "abcdef", "%s", "abcdef" ); /* FIXME: This test not yet 32/64 bit agnostic */ - TESTCASE( testprintf( target, "%p", (void *)0xdeadbeef ) == 10 ); - TESTCASE_SPRINTF( "0xdeadbeef" ); - TESTCASE( testprintf( target, "%#6x", 1 ) == 6 ); - TESTCASE_SPRINTF( " 0x1" ); + PRINTF_TEST( 10, "0xdeadbeef", "%p", (void *)0xdeadbeef ); + PRINTF_TEST( 6, " 0x1", "%#6x", 1 ); #ifndef TEST_CONVERSION_ONLY { int val1, val2; - TESTCASE( testprintf( target, "123456%n789%n", &val1, &val2 ) == 9 ); - TESTCASE_SPRINTF( "123456789" ); /* FIXME */ + PRINTF_TEST( 9, "123456789", "123456%n789%n", &val1, &val2 ); TESTCASE( val1 == 6 ); TESTCASE( val2 == 9 ); } -- 2.30.2