[PATCH] mlang/tests: Add tests for LcidToRfc1766
Detlef Riekenberg
wine.dev at web.de
Mon May 25 07:08:41 CDT 2009
---
dlls/mlang/tests/mlang.c | 86 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 85 insertions(+), 1 deletions(-)
diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c
index 00493b5..075e1f6 100644
--- a/dlls/mlang/tests/mlang.c
+++ b/dlls/mlang/tests/mlang.c
@@ -169,8 +169,11 @@ static const info_table_entry info_table[] = {
{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)"}
+ TODO_NAME, "de-at", "Allemand (Autriche)"},
+ /* language without a country */
+ {MAKELANGID(LANG_KONKANI, SUBLANG_DEFAULT), MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT),
+ 0, "kok", "Konkani"}
};
static BOOL init_function_ptrs(void)
@@ -1130,6 +1133,86 @@ static void test_GetRfc1766Info(IMultiLanguage2 *iML2)
ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
}
+static void test_LcidToRfc1766(void)
+{
+ CHAR buffer[MAX_RFC1766_NAME + 2];
+ HRESULT ret;
+ DWORD i;
+ INT x;
+
+ for(i = 0; i < sizeof(info_table) / sizeof(info_table[0]); i++) {
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+
+ ret = LcidToRfc1766A(info_table[i].lcid, buffer, MAX_RFC1766_NAME);
+ ok(ret == S_OK, "#%02d: got 0x%x (expected S_OK)\n", i, ret);
+
+ x = lstrcmpA(buffer, info_table[i].rfc1766);
+ if (info_table[i].todo & TODO_RFC) {
+ todo_wine
+ ok(!x, "#%02d: got '%s' (expected '%s')\n", i, buffer, info_table[i].rfc1766);
+ }
+ else
+ ok(!x, "#%02d: got '%s' (expected '%s')\n", i, buffer, info_table[i].rfc1766);
+
+
+ if (info_table[i].todo & TODO_RFC)
+ continue;
+
+ /* minimal size */
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(info_table[i].lcid, buffer, lstrlen(info_table[i].rfc1766) + 1);
+ ok(ret == S_OK, "#%02d: got 0x%x (expected S_OK)\n", i, ret);
+
+ ok(!lstrcmpA(buffer, info_table[i].rfc1766),
+ "#%02d: got '%s' (expected '%s')\n", i, buffer, info_table[i].rfc1766);
+
+ /* size to small for terminating zero (buffer has the data) */
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(info_table[i].lcid, buffer, lstrlen(info_table[i].rfc1766));
+ ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+
+ /* size to small for the data (buffer has partial data) */
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(info_table[i].lcid, buffer, lstrlen(info_table[i].rfc1766) - 1);
+ ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+
+ }
+
+ /* SUBLANG_NEUTRAL is allowed */
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(MAKELANGID(LANG_GERMAN, SUBLANG_NEUTRAL), buffer, MAX_RFC1766_NAME);
+ ok(ret == S_OK, "got 0x%x (expected S_OK)\n", ret);
+ ok (!lstrcmpA(buffer, "de-de"), "got '%s' (expected 'de-de')\n", buffer);
+
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(MAKELANGID(LANG_ITALIAN, SUBLANG_NEUTRAL), buffer, MAX_RFC1766_NAME);
+ ok(ret == S_OK, "got 0x%x (expected S_OK)\n", ret);
+ ok (!lstrcmpA(buffer, "it-it"), "got '%s' (expected 'it-it')\n", buffer);
+
+ /* result depend on the current locale */
+ memset(buffer, 'x', sizeof(buffer) - 1);
+ buffer[sizeof(buffer) -1] = 0;
+ ret = LcidToRfc1766A(0, buffer, MAX_RFC1766_NAME);
+ ok(ret == S_OK, "got 0x%x (expected S_OK)\n", ret);
+
+ /* we neeed a pointer */
+ ret = LcidToRfc1766A(LANG_ENGLISH, NULL, MAX_RFC1766_NAME);
+ ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+
+ /* max len is signed */
+ ret = LcidToRfc1766A(LANG_ENGLISH, buffer, -1);
+ ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+
+ ret = LcidToRfc1766A(LANG_ENGLISH, buffer, 0);
+ ok(ret == E_INVALIDARG, "got 0x%x (expected E_INVALIDARG)\n", ret);
+}
+
static void test_IMultiLanguage2_ConvertStringFromUnicode(IMultiLanguage2 *iML2)
{
@@ -1693,6 +1776,7 @@ START_TEST(mlang)
CoInitialize(NULL);
test_Rfc1766ToLcid();
+ test_LcidToRfc1766();
ret = CoCreateInstance(&CLSID_CMultiLanguage, NULL, CLSCTX_INPROC_SERVER,
&IID_IMultiLanguage2, (void **)&iML2);
--
1.5.4.3
--=-UMuzRaXnYM4j85tONKWq--
More information about the wine-patches
mailing list