From df4cbd8dfebdbbab6054cc562e16b56bbda6924e Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 7 May 2008 14:16:03 -0700 Subject: [PATCH] mlang: Make mlang tests pass under windows --- dlls/mlang/tests/mlang.c | 23 +++++++++++++++++++---- 1 files changed, 19 insertions(+), 4 deletions(-) diff --git a/dlls/mlang/tests/mlang.c b/dlls/mlang/tests/mlang.c index c036f7a..1c82013 100644 --- a/dlls/mlang/tests/mlang.c +++ b/dlls/mlang/tests/mlang.c @@ -369,6 +369,8 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) */ if (IsValidCodePage(cpinfo[i].uiCodePage)) { + HRESULT expected = S_OK; + TRACE_2("Call IMultiLanguage2_IsConvertible\n"); ret = IMultiLanguage2_IsConvertible(iML2, cpinfo[i].uiCodePage, CP_UNICODE); ok(ret == S_OK, "IMultiLanguage2_IsConvertible(%u -> CP_UNICODE) = %08x\n", cpinfo[i].uiCodePage, ret); @@ -376,12 +378,16 @@ static void test_EnumCodePages(IMultiLanguage2 *iML2, DWORD flags) ret = IMultiLanguage2_IsConvertible(iML2, CP_UNICODE, cpinfo[i].uiCodePage); ok(ret == S_OK, "IMultiLanguage2_IsConvertible(CP_UNICODE -> %u) = %08x\n", cpinfo[i].uiCodePage, ret); + /* Not all codepages can be converted to UTF-8 */ + if (cpinfo[i].uiCodePage == 20127 || cpinfo[i].uiCodePage == 28591 || cpinfo[i].uiCodePage == 28605) + expected = S_FALSE; + TRACE_2("Call IMultiLanguage2_IsConvertible\n"); ret = IMultiLanguage2_IsConvertible(iML2, cpinfo[i].uiCodePage, CP_UTF8); - ok(ret == S_OK, "IMultiLanguage2_IsConvertible(%u -> CP_UTF8) = %08x\n", cpinfo[i].uiCodePage, ret); + ok(ret == S_OK || ret == expected, "IMultiLanguage2_IsConvertible(%u -> CP_UTF8) = %08x/%08x\n", cpinfo[i].uiCodePage, ret, expected); TRACE_2("Call IMultiLanguage2_IsConvertible\n"); ret = IMultiLanguage2_IsConvertible(iML2, CP_UTF8, cpinfo[i].uiCodePage); - ok(ret == S_OK, "IMultiLanguage2_IsConvertible(CP_UTF8 -> %u) = %08x\n", cpinfo[i].uiCodePage, ret); + ok(ret == S_OK || ret == expected, "IMultiLanguage2_IsConvertible(CP_UTF8 -> %u) = %08x/%08x\n", cpinfo[i].uiCodePage, ret, expected); } else trace("IsValidCodePage failed for cp %u\n", cpinfo[i].uiCodePage); @@ -660,23 +666,32 @@ static void test_rfc1766(IMultiLanguage2 *iML2) RFC1766INFO info; ULONG n; HRESULT ret; + BOOL got_any = FALSE, got_supported = FALSE; ret = IMultiLanguage2_EnumRfc1766(iML2, LANG_NEUTRAL, &pEnumRfc1766); ok(ret == S_OK, "IMultiLanguage2_EnumRfc1766 error %08x\n", ret); while (1) { + BOOL supported; + ret = IEnumRfc1766_Next(pEnumRfc1766, 1, &info, &n); if (ret != S_OK) break; + got_any = TRUE; #ifdef DUMP_CP_INFO trace("lcid %04x rfc_name %s locale_name %s\n", info.lcid, wine_dbgstr_w(info.wszRfc1766), wine_dbgstr_w(info.wszLocaleName)); #endif - + supported = IsValidLocale(info.lcid, LCID_SUPPORTED); + if (!got_supported) + got_supported = supported; ok(n == 1, "couldn't fetch 1 RFC1766INFO structure\n"); - ok(IsValidLocale(info.lcid, LCID_SUPPORTED), "invalid lcid %04x\n", info.lcid); + trace("lcid %d is%s supported\n", info.lcid, (supported ? "" : " NOT")); } + ok(got_supported, "No locales are supported!\n"); + ok(got_any, "No locales were found at all!\n"); + IEnumRfc1766_Release(pEnumRfc1766); } -- 1.5.4.1