Module: wine Branch: master Commit: a2af7ccd9909323ccf1f915663b60283da21d5ec URL: http://source.winehq.org/git/wine.git/?a=commit;h=a2af7ccd9909323ccf1f915663...
Author: Eryk Wieliczko ewdevel@gmail.com Date: Fri Dec 10 15:00:59 2010 +0100
msvcrt/tests: Add _ecvt_s tests.
---
dlls/msvcrt/tests/printf.c | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-)
diff --git a/dlls/msvcrt/tests/printf.c b/dlls/msvcrt/tests/printf.c index 4386bf1..3d61f3d 100644 --- a/dlls/msvcrt/tests/printf.c +++ b/dlls/msvcrt/tests/printf.c @@ -38,6 +38,8 @@ static int (__cdecl *p__vscwprintf)(const wchar_t *format, __ms_va_list valist); static int (__cdecl *p__vsnwprintf_s)(wchar_t *str, size_t sizeOfBuffer, size_t count, const wchar_t *format, __ms_va_list valist); +static int (__cdecl *p__ecvt_s)(char *buffer, size_t length, double number, + int ndigits, int *decpt, int *sign);
static void init( void ) { @@ -46,6 +48,7 @@ static void init( void ) p__vscprintf = (void *)GetProcAddress(hmod, "_vscprintf"); p__vscwprintf = (void *)GetProcAddress(hmod, "_vscwprintf"); p__vsnwprintf_s = (void *)GetProcAddress(hmod, "_vsnwprintf_s"); + p__ecvt_s = (void *)GetProcAddress(hmod, "_ecvt_s"); }
static void test_sprintf( void ) @@ -766,7 +769,7 @@ static struct { static void test_xcvt(void) { char *str; - int i, decpt, sign; + int i, decpt, sign, err; for( i = 0; strcmp( test_cvt_testcases[i].expstr_e, "END"); i++){ decpt = sign = 100; str = _ecvt( test_cvt_testcases[i].value, @@ -779,6 +782,9 @@ static void test_xcvt(void) ok( decpt == test_cvt_testcases[i].expdecpt_e, "_ecvt() decimal point wrong, got %d expected %d\n", decpt, test_cvt_testcases[i].expdecpt_e); + ok( sign == test_cvt_testcases[i].expsign, + "_ecvt() sign wrong, got %d expected %d\n", sign, + test_cvt_testcases[i].expsign); } for( i = 0; strcmp( test_cvt_testcases[i].expstr_e, "END"); i++){ decpt = sign = 100; @@ -796,6 +802,28 @@ static void test_xcvt(void) "_ecvt() sign wrong, got %d expected %d\n", sign, test_cvt_testcases[i].expsign); } + + if (p__ecvt_s) + { + str = malloc(1024); + for( i = 0; strcmp( test_cvt_testcases[i].expstr_e, "END"); i++){ + decpt = sign = 100; + err = p__ecvt_s(str, 1024, test_cvt_testcases[i].value, test_cvt_testcases[i].nrdigits, &decpt, &sign); + ok(err == 0, "_ecvt_s() failed with error code %d", err); + ok( 0 == strncmp( str, test_cvt_testcases[i].expstr_e, 15), + "_ecvt_s() bad return, got \n'%s' expected \n'%s'\n", str, + test_cvt_testcases[i].expstr_e); + ok( decpt == test_cvt_testcases[i].expdecpt_e, + "_ecvt_s() decimal point wrong, got %d expected %d\n", decpt, + test_cvt_testcases[i].expdecpt_e); + ok( sign == test_cvt_testcases[i].expsign, + "_ecvt_s() sign wrong, got %d expected %d\n", sign, + test_cvt_testcases[i].expsign); + } + free(str); + } + else + win_skip("_ecvt_s not available\n"); }
static int __cdecl _vsnwprintf_wrapper(wchar_t *str, size_t len, const wchar_t *format, ...)