kernel32: Correct WideCharToMultiByte and MultiByteToWideChar error codes and conditions
Nikolay Sivov
bunglehead at gmail.com
Wed May 9 23:57:28 CDT 2012
On 5/10/2012 00:52, Alex Henrie wrote:
> This patch was a lot harder to figure out than I thought it was going to be.
>
> The MSDN documentation of most of these behaviors can be found at
> http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx
Does any application depend on that?
>
> ---
> dlls/kernel32/locale.c | 38 ++++++++++++++---
> dlls/kernel32/tests/locale.c | 94 ++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 126 insertions(+), 6 deletions(-)
This is a wrong file to place tests into.
>
> diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
> index 3216ef9..9cbb124 100644
> --- a/dlls/kernel32/tests/locale.c
> +++ b/dlls/kernel32/tests/locale.c
> @@ -3137,6 +3137,99 @@ static void test_IdnToUnicode(void)
> }
> }
>
> +static void test_WideCharToMultiByte_error(UINT page, DWORD flags, LPCWSTR src,
> + INT srclen, LPSTR dst, INT dstlen,
> + LPCSTR defchar, BOOL* used,
> + const char* test_description,
> + DWORD expected_error)
> +{
> + SetLastError(ERROR_SUCCESS);
> + WideCharToMultiByte(page, flags, src, srclen, dst, dstlen, defchar, used);
> + ok(GetLastError() == expected_error,
> + "codepage %i, %s, expected error %i got error %i\n", page,
> + test_description, expected_error, GetLastError());
> +}
> +
> +static void test_MultiByteToWideChar_error(UINT page, DWORD flags, LPCSTR src,
> + INT srclen, LPWSTR dst, INT dstlen,
> + const char* test_description,
> + DWORD expected_error)
> +{
> + SetLastError(ERROR_SUCCESS);
> + MultiByteToWideChar(page, flags, src, srclen, dst, dstlen);
> + ok(GetLastError() == expected_error,
> + "codepage %i, %s, expected error %i got error %i\n", page,
> + test_description, expected_error, GetLastError());
> +}
> +
Looks ugly enough, it's better to place some test data in table and loop
through it, if you really want to test that.
More information about the wine-devel
mailing list