Detlef Riekenberg : kernel/tests: Some tests for WideCharToMultiByte.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 5 14:24:47 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: a99c9caa3945827f19238421cc3be4f4d35c5c50
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=a99c9caa3945827f19238421cc3be4f4d35c5c50
Author: Detlef Riekenberg <wine.dev at web.de>
Date: Mon Jun 5 12:30:41 2006 +0200
kernel/tests: Some tests for WideCharToMultiByte.
---
dlls/kernel/tests/codepage.c | 67 +++++++++++++++++++++++++++++++++++++++++-
1 files changed, 66 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel/tests/codepage.c b/dlls/kernel/tests/codepage.c
index e059c05..45658ba 100644
--- a/dlls/kernel/tests/codepage.c
+++ b/dlls/kernel/tests/codepage.c
@@ -25,6 +25,71 @@ #include "windef.h"
#include "winbase.h"
#include "winnls.h"
+static const WCHAR foobarW[] = {'f','o','o','b','a','r',0};
+
+static void test_destination_buffer(void)
+{
+ LPSTR buffer;
+ INT maxsize;
+ INT needed;
+ INT len;
+
+ SetLastError(0xdeadbeef);
+ needed = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, NULL, 0, NULL, NULL);
+ ok( (needed > 0), "returned %d with 0x%lx/%ld (expected '> 0')\n",
+ needed, GetLastError(), GetLastError());
+
+ maxsize = needed*2;
+ buffer = HeapAlloc(GetProcessHeap(), 0, maxsize);
+ if (buffer == NULL) return;
+
+ maxsize--;
+ memset(buffer, 'x', maxsize);
+ buffer[maxsize] = '\0';
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buffer, needed+1, NULL, NULL);
+ ok( (len > 0), "returned %d with 0x%lx/%ld and '%s' (expected '> 0')\n",
+ len, GetLastError(), GetLastError(), buffer);
+
+ memset(buffer, 'x', maxsize);
+ buffer[maxsize] = '\0';
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buffer, needed, NULL, NULL);
+ ok( (len > 0), "returned %d with 0x%lx/%ld and '%s' (expected '> 0')\n",
+ len, GetLastError(), GetLastError(), buffer);
+
+ memset(buffer, 'x', maxsize);
+ buffer[maxsize] = '\0';
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buffer, needed-1, NULL, NULL);
+ ok( !len && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
+ "returned %d with 0x%lx/%ld and '%s' (expected '0' with " \
+ "ERROR_INSUFFICIENT_BUFFER)\n", len, GetLastError(), GetLastError(), buffer);
+
+ memset(buffer, 'x', maxsize);
+ buffer[maxsize] = '\0';
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buffer, 1, NULL, NULL);
+ ok( !len && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
+ "returned %d with 0x%lx/%ld and '%s' (expected '0' with " \
+ "ERROR_INSUFFICIENT_BUFFER)\n", len, GetLastError(), GetLastError(), buffer);
+
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, buffer, 0, NULL, NULL);
+ ok( (len > 0), "returned %d with 0x%lx/%ld (expected '> 0')\n",
+ len, GetLastError(), GetLastError());
+
+ SetLastError(0xdeadbeef);
+ len = WideCharToMultiByte(CP_ACP, 0, foobarW, -1, NULL, needed, NULL, NULL);
+ ok( !len && (GetLastError() == ERROR_INVALID_PARAMETER),
+ "returned %d with 0x%lx/%ld (expected '0' with " \
+ "ERROR_INVALID_PARAMETER)\n", len, GetLastError(), GetLastError());
+
+ HeapFree(GetProcessHeap(), 0, buffer);
+
+}
+
+
static void test_null_source(void)
{
int len;
@@ -53,7 +118,6 @@ static void test_negative_source_length(
int len;
char buf[10];
WCHAR bufW[10];
- static const WCHAR foobarW[] = {'f','o','o','b','a','r',0};
/* Test, whether any negative source length works as strlen() + 1 */
SetLastError( 0xdeadbeef );
@@ -84,6 +148,7 @@ static void test_overlapped_buffers(void
START_TEST(codepage)
{
+ test_destination_buffer();
test_null_source();
test_negative_source_length();
test_overlapped_buffers();
More information about the wine-cvs
mailing list