Akihiro Sagawa : kernel32/tests: Add a test for undefined byte character conversion.
Alexandre Julliard
julliard at winehq.org
Tue Apr 5 11:23:29 CDT 2011
Module: wine
Branch: master
Commit: 79d7cd76f9bcfb8885d0dd4a3760afa767380ffa
URL: http://source.winehq.org/git/wine.git/?a=commit;h=79d7cd76f9bcfb8885d0dd4a3760afa767380ffa
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Mon Apr 4 19:00:58 2011 +0900
kernel32/tests: Add a test for undefined byte character conversion.
---
dlls/kernel32/tests/codepage.c | 53 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/tests/codepage.c b/dlls/kernel32/tests/codepage.c
index 402e4bf..96dd45d 100644
--- a/dlls/kernel32/tests/codepage.c
+++ b/dlls/kernel32/tests/codepage.c
@@ -354,6 +354,57 @@ static void test_string_conversion(LPBOOL bUsedDefaultChar)
ok(GetLastError() == 0xdeadbeef, "GetLastError() is %u\n", GetLastError());
}
+static void test_undefined_byte_char(void)
+{
+ struct tag_testset {
+ INT codepage;
+ LPCSTR str;
+ BOOL is_error;
+ } testset[] = {
+ { 874, "\xdd", TRUE },
+ { 932, "\xfe", TRUE },
+ { 932, "\x80", FALSE },
+ { 936, "\xff", TRUE },
+ { 949, "\xff", TRUE },
+ { 950, "\xff", TRUE },
+ { 1252, "\x90", FALSE },
+ { 1253, "\xaa", TRUE },
+ { 1255, "\xff", TRUE },
+ { 1257, "\xa5", TRUE },
+ };
+ INT i, ret;
+
+ for (i = 0; i < (sizeof(testset) / sizeof(testset[0])); i++) {
+ if (! IsValidCodePage(testset[i].codepage))
+ {
+ skip("Codepage %d not available\n", testset[i].codepage);
+ continue;
+ }
+
+ SetLastError(0xdeadbeef);
+ ret = MultiByteToWideChar(testset[i].codepage, MB_ERR_INVALID_CHARS,
+ testset[i].str, -1, NULL, 0);
+ if (testset[i].is_error) {
+ todo_wine
+ ok(ret == 0 && GetLastError() == ERROR_NO_UNICODE_TRANSLATION,
+ "ret is %d, GetLastError is %u (cp %d)\n",
+ ret, GetLastError(), testset[i].codepage);
+ }
+ else {
+ ok(ret == strlen(testset[i].str)+1 && GetLastError() == 0xdeadbeef,
+ "ret is %d, GetLastError is %u (cp %d)\n",
+ ret, GetLastError(), testset[i].codepage);
+ }
+
+ SetLastError(0xdeadbeef);
+ ret = MultiByteToWideChar(testset[i].codepage, 0,
+ testset[i].str, -1, NULL, 0);
+ ok(ret == strlen(testset[i].str)+1 && GetLastError() == 0xdeadbeef,
+ "ret is %d, GetLastError is %u (cp %d)\n",
+ ret, GetLastError(), testset[i].codepage);
+ }
+}
+
START_TEST(codepage)
{
BOOL bUsedDefaultChar;
@@ -367,4 +418,6 @@ START_TEST(codepage)
/* WideCharToMultiByte has two code paths, test both here */
test_string_conversion(NULL);
test_string_conversion(&bUsedDefaultChar);
+
+ test_undefined_byte_char();
}
More information about the wine-cvs
mailing list