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