Fix some bugs about some special Chinese tests in locale.c
THuang
matrix95 at foxmail.com
Tue Apr 18 05:51:22 CDT 2017
-------------- next part --------------
>From c55dc70dba45e03e694a92a00b1da00fa949e220 Mon Sep 17 00:00:00 2001
From: THuang <loagen95 at gmail.com>
Date: Tue, 18 Apr 2017 02:38:27 -0400
Subject: [PATCH] Fix some bugs about some special Chinese tests in locale.c
Signed-off-by: THuang <loagen95 at gmail.com>
---
dlls/kernel32/locale.c | 14 ++++++++++++++
dlls/kernel32/tests/locale.c | 32 ++++++++++++++++++++++++--------
2 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index e14aedbe44..2e40f9c9b1 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -457,6 +457,8 @@ static void parse_locale_name( const WCHAR *str, struct locale_name *name )
static const WCHAR cW[] = {'C',0};
static const WCHAR latinW[] = {'l','a','t','i','n',0};
static const WCHAR latnW[] = {'-','L','a','t','n',0};
+ static const WCHAR HantW[] = {'-','H','a','n','t',0};
+ static const WCHAR HansW[] = {'-','H','a','n','s',0};
WCHAR *p;
TRACE("%s\n", debugstr_w(str));
@@ -487,6 +489,18 @@ static void parse_locale_name( const WCHAR *str, struct locale_name *name )
else if (*p == '-') /* Windows format */
{
strcpyW( name->win_name, name->lang );
+ if(!strcmpiW(p,HantW))
+ {
+ name->lcid = 0x0c04;
+ name->matches = 1;
+ return ;
+ }
+ if(!strcmpiW(p,HansW))
+ {
+ name->lcid = 0x0804;
+ name->matches = 1;
+ return ;
+ }
*p++ = 0;
name->country = p;
if (!(p = strpbrkW( p, winsepW ))) goto done;
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index 86fcc33b70..ecd2e6c289 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -2781,40 +2781,40 @@ static void test_LocaleNameToLCID(void)
/* zh-Hant */
lcid = pLocaleNameToLCID(zhHantW, 0);
- todo_wine ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
+ ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhHantW), lcid);
ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHantW), ret);
- todo_wine ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
+ ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHantW), wine_dbgstr_w(buffer));
/* zh-hant */
lcid = pLocaleNameToLCID(zhhantW, 0);
- todo_wine ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
+ ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhhantW),
MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_HONGKONG), SORT_DEFAULT));
ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhhantW), ret);
- todo_wine ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
+ ok(!lstrcmpW(zhhkW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhhantW), wine_dbgstr_w(buffer));
/* zh-Hans */
lcid = pLocaleNameToLCID(zhHansW, 0);
- todo_wine ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
+ ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhHansW), lcid);
ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhHansW), ret);
- todo_wine ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
+ ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhHansW), wine_dbgstr_w(buffer));
/* zh-hans */
lcid = pLocaleNameToLCID(zhhansW, 0);
- todo_wine ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
+ ok(lcid == MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT),
"%s: got wrong lcid 0x%04x\n", wine_dbgstr_w(zhhansW),
MAKELCID(MAKELANGID(LANG_CHINESE_SIMPLIFIED, SUBLANG_CHINESE_SIMPLIFIED), SORT_DEFAULT));
ret = pLCIDToLocaleName(lcid, buffer, sizeof(buffer)/sizeof(WCHAR), 0);
ok(ret > 0, "%s: got %d\n", wine_dbgstr_w(zhhansW), ret);
- todo_wine ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
+ ok(!lstrcmpW(zhcnW, buffer), "%s: got wrong locale name %s\n",
wine_dbgstr_w(zhhansW), wine_dbgstr_w(buffer));
}
}
@@ -4516,6 +4516,10 @@ static void test_IsValidLocaleName(void)
static const WCHAR zzW[] = {'z','z',0};
static const WCHAR zz_zzW[] = {'z','z','-','Z','Z',0};
static const WCHAR zzzzW[] = {'z','z','z','z',0};
+ static const WCHAR zhHansW[] = {'z','h','-','H','a','n','s',0};
+ static const WCHAR zhhansW[] = {'z','h','-','h','a','n','s',0};
+ static const WCHAR zhHantW[] = {'z','h','-','H','a','n','t',0};
+ static const WCHAR zhhantW[] = {'z','h','-','h','a','n','t',0};
BOOL ret;
if (!pIsValidLocaleName)
@@ -4526,6 +4530,18 @@ static void test_IsValidLocaleName(void)
ret = pIsValidLocaleName(enusW);
ok(ret, "IsValidLocaleName failed\n");
+ ret = pIsValidLocaleName(zhHansW);
+ if( ret == FALSE ) win_skip("wvistau64 and w2008s64 not supported\n");
+ else ok(ret, "IsValidLocaleName failed \n");
+ ret = pIsValidLocaleName(zhhansW);
+ if( ret == FALSE ) win_skip("wvistau64 and w2008s64 not supported\n");
+ else ok(ret, "IsValidLocaleName failed\n");
+ ret = pIsValidLocaleName(zhHantW);
+ if( ret == FALSE ) win_skip("wvistau64 and w2008s64 not supported\n");
+ else ok(ret, "IsValidLocaleName failed\n");
+ ret = pIsValidLocaleName(zhhantW);
+ if( ret == FALSE ) win_skip("wvistau64 and w2008s64 not supported\n");
+ else ok(ret, "IsValidLocaleName failed\n");
ret = pIsValidLocaleName(zzW);
ok(!ret || broken(ret), "IsValidLocaleName should have failed\n");
ret = pIsValidLocaleName(zz_zzW);
--
2.11.0
More information about the wine-patches
mailing list