Detlef Riekenberg : mlang/tests: Add tests for IMultiLanguage2_GetRfc1766Info.

Alexandre Julliard julliard at winehq.org
Mon Jun 8 09:44:49 CDT 2009


Module: wine
Branch: master
Commit: 9dd58897ca57f0b2f9ae2899d88582d91a4daae7
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9dd58897ca57f0b2f9ae2899d88582d91a4daae7

Author: Detlef Riekenberg <wine.dev at web.de>
Date:   Sat Jun  6 16:19:39 2009 +0200

mlang/tests: Add tests for IMultiLanguage2_GetRfc1766Info.

---

 dlls/mlang/tests/mlang.c |  129 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 129 insertions(+), 0 deletions(-)

diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c
index 47fcde4..08be7a8 100644
--- a/dlls/mlang/tests/mlang.c
+++ b/dlls/mlang/tests/mlang.c
@@ -102,6 +102,82 @@ static const lcid_table_entry  lcid_table[] = {
 
 };
 
+#define TODO_NAME 1
+
+typedef struct info_table_tag {
+    LCID lcid;
+    LANGID lang;
+    DWORD todo;
+    LPCSTR rfc1766;
+    LPCSTR localename;
+    LPCSTR broken_name;
+} info_table_entry;
+
+static const CHAR fr_enus[] = {'A','n','g','l','a','i','s',' ',
+                               '(',0xC3, 0x89, 't','a','t','s','-','U','n','i','s',')',0};
+
+static const info_table_entry  info_table[] = {
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),        MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "en", "English"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),        MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "en-us", "English (United States)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK),     MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "en-gb", "English (United Kingdom)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),     MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "en-us", "English (United States)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_CAN),    MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "en-ca", "English (Canada)"},
+
+    {MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),         MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "de", "German (Germany)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN),          MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "de", "German (Germany)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS),    MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "de-ch", "German (Switzerland)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN), MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),
+         0, "de-at", "German (Austria)"},
+
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),        MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "en", "Englisch"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),        MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "en-us", "Englisch (USA)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK),     MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "en-gb", "Englisch (Großbritannien)", "Englisch (Vereinigtes Königreic" },
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),     MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "en-us", "Englisch (USA)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_CAN),    MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "en-ca", "Englisch (Kanada)"},
+
+    {MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),         MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "de", "Deutsch (Deutschland)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN),          MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "de", "Deutsch (Deutschland)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS),    MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "de-ch", "Deutsch (Schweiz)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN), MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),
+         TODO_NAME, "de-at", "Deutsch (Österreich)"},
+
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_NEUTRAL),        MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "en", "Anglais"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),        MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "en-us", fr_enus, "Anglais (U.S.)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK),     MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "en-gb", "Anglais (Royaume-Uni)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US),     MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "en-us", fr_enus, "Anglais (U.S.)"},
+    {MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_CAN),    MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "en-ca", "Anglais (Canada)"},
+
+    {MAKELANGID(LANG_GERMAN, SUBLANG_DEFAULT),         MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "de", "Allemand (Allemagne)", "Allemand (Standard)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN),          MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "de", "Allemand (Allemagne)", "Allemand (Standard)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_SWISS),    MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "de-ch", "Allemand (Suisse)"},
+    {MAKELANGID(LANG_GERMAN, SUBLANG_GERMAN_AUSTRIAN), MAKELANGID(LANG_FRENCH, SUBLANG_DEFAULT),
+         TODO_NAME, "de-at", "Allemand (Autriche)"}
+
+};
 
 static BOOL init_function_ptrs(void)
 {
@@ -1063,6 +1139,58 @@ static void test_LcidToRfc1766(void)
 
 }
 
+static void test_GetRfc1766Info(IMultiLanguage2 *iML2)
+{
+    CHAR rfc1766A[MAX_RFC1766_NAME + 1];
+    CHAR localenameA[MAX_LOCALE_NAME * 3];
+    BYTE buffer[sizeof(RFC1766INFO) + 4];
+    PRFC1766INFO prfc = (RFC1766INFO *) buffer;
+    HRESULT ret;
+    DWORD i;
+
+    for(i = 0; i < sizeof(info_table) / sizeof(info_table[0]); i++) {
+        memset(buffer, 'x', sizeof(RFC1766INFO) + 2);
+        buffer[sizeof(buffer) -1] = 0;
+        buffer[sizeof(buffer) -2] = 0;
+
+        ret = IMultiLanguage2_GetRfc1766Info(iML2, info_table[i].lcid, info_table[i].lang, prfc);
+        WideCharToMultiByte(CP_ACP, 0, prfc->wszRfc1766, -1, rfc1766A, MAX_RFC1766_NAME, NULL, NULL);
+        WideCharToMultiByte(CP_UTF8, 0, prfc->wszLocaleName, -1, localenameA, MAX_LOCALE_NAME * 3, NULL, NULL);
+        ok(ret == S_OK, "#%02d: got 0x%x (expected S_OK)\n", i, ret);
+        ok(prfc->lcid == info_table[i].lcid,
+            "#%02d: got 0x%04x (expected 0x%04x)\n", i, prfc->lcid, info_table[i].lcid);
+
+        ok(!lstrcmpA(rfc1766A, info_table[i].rfc1766),
+            "#%02d: got '%s' (expected '%s')\n", i, rfc1766A, info_table[i].rfc1766);
+
+        if (info_table[i].todo & TODO_NAME) {
+            todo_wine
+            ok( (!lstrcmpA(localenameA, info_table[i].localename)) ||
+                broken(!lstrcmpA(localenameA, info_table[i].broken_name)),   /* IE < 6.0 */
+                "#%02d: got '%s' (expected '%s')\n", i, localenameA, info_table[i].localename);
+        }
+        else
+            ok( (!lstrcmpA(localenameA, info_table[i].localename)) ||
+                broken(!lstrcmpA(localenameA, info_table[i].broken_name)),   /* IE < 6.0 */
+                "#%02d: got '%s' (expected '%s')\n", i, localenameA, info_table[i].localename);
+
+    }
+
+    /* SUBLANG_NEUTRAL only allowed for english, arabic, chinese */
+    ret = IMultiLanguage2_GetRfc1766Info(iML2, MAKELANGID(LANG_GERMAN, SUBLANG_NEUTRAL), LANG_ENGLISH, prfc);
+    ok(ret == E_FAIL, "got 0x%x (expected E_FAIL)\n", ret);
+
+    ret = IMultiLanguage2_GetRfc1766Info(iML2, MAKELANGID(LANG_ITALIAN, SUBLANG_NEUTRAL), LANG_ENGLISH, prfc);
+    ok(ret == E_FAIL, "got 0x%x (expected E_FAIL)\n", ret);
+
+    /* NULL not allowed */
+    ret = IMultiLanguage2_GetRfc1766Info(iML2, 0, LANG_ENGLISH, prfc);
+    ok(ret == E_FAIL, "got 0x%x (expected E_FAIL)\n", ret);
+
+    ret = IMultiLanguage2_GetRfc1766Info(iML2, LANG_ENGLISH, LANG_ENGLISH, NULL);
+    ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+}
+
 static void test_IMultiLanguage2_ConvertStringFromUnicode(IMultiLanguage2 *iML2)
 {
     CHAR dest[MAX_PATH];
@@ -1634,6 +1762,7 @@ START_TEST(mlang)
     test_rfc1766(iML2);
     test_GetLcidFromRfc1766(iML2);
     test_GetRfc1766FromLcid(iML2);
+    test_GetRfc1766Info(iML2);
 
     test_EnumCodePages(iML2, 0);
     test_EnumCodePages(iML2, MIMECONTF_MIME_LATEST);




More information about the wine-cvs mailing list