Daniel Lehman : kernel32/tests: Add tests for Invariant.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Aug 28 07:42:28 CDT 2015
Module: wine
Branch: master
Commit: 72922cd1eac5ece5a3c05f5361ba6e30c31dfc53
URL: http://source.winehq.org/git/wine.git/?a=commit;h=72922cd1eac5ece5a3c05f5361ba6e30c31dfc53
Author: Daniel Lehman <dlehman at esri.com>
Date: Wed Aug 26 00:06:07 2015 -0700
kernel32/tests: Add tests for Invariant.
---
dlls/kernel32/tests/locale.c | 185 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 185 insertions(+)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index c48a620..1e4fd2a 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -4317,6 +4317,190 @@ static void test_EnumSystemGeoID(void)
}
}
+struct invariant_entry {
+ const char *name;
+ int id;
+ const char *expect;
+};
+
+#define X(x) #x, x
+static const struct invariant_entry invariant_list[] = {
+ { X(LOCALE_ILANGUAGE), "007f" },
+ { X(LOCALE_SENGLANGUAGE), "Invariant Language" },
+ { X(LOCALE_SABBREVLANGNAME), "IVL" },
+ { X(LOCALE_SNATIVELANGNAME), "Invariant Language" },
+ { X(LOCALE_ICOUNTRY), "1" },
+ { X(LOCALE_SENGCOUNTRY), "Invariant Country" },
+ { X(LOCALE_SABBREVCTRYNAME), "IVC" },
+ { X(LOCALE_SNATIVECTRYNAME), "Invariant Country" },
+ { X(LOCALE_IDEFAULTLANGUAGE), "0409" },
+ { X(LOCALE_IDEFAULTCOUNTRY), "1" },
+ { X(LOCALE_IDEFAULTCODEPAGE), "437" },
+ { X(LOCALE_IDEFAULTANSICODEPAGE), "1252" },
+ { X(LOCALE_IDEFAULTMACCODEPAGE), "10000" },
+ { X(LOCALE_SLIST), "," },
+ { X(LOCALE_IMEASURE), "0" },
+ { X(LOCALE_SDECIMAL), "." },
+ { X(LOCALE_STHOUSAND), "," },
+ { X(LOCALE_SGROUPING), "3;0" },
+ { X(LOCALE_IDIGITS), "2" },
+ { X(LOCALE_ILZERO), "1" },
+ { X(LOCALE_INEGNUMBER), "1" },
+ { X(LOCALE_SNATIVEDIGITS), "0123456789" },
+ { X(LOCALE_SCURRENCY), "\x00a4" },
+ { X(LOCALE_SINTLSYMBOL), "XDR" },
+ { X(LOCALE_SMONDECIMALSEP), "." },
+ { X(LOCALE_SMONTHOUSANDSEP), "," },
+ { X(LOCALE_SMONGROUPING), "3;0" },
+ { X(LOCALE_ICURRDIGITS), "2" },
+ { X(LOCALE_IINTLCURRDIGITS), "2" },
+ { X(LOCALE_ICURRENCY), "0" },
+ { X(LOCALE_INEGCURR), "0" },
+ { X(LOCALE_SDATE), "/" },
+ { X(LOCALE_STIME), ":" },
+ { X(LOCALE_SSHORTDATE), "MM/dd/yyyy" },
+ { X(LOCALE_SLONGDATE), "dddd, dd MMMM yyyy" },
+ { X(LOCALE_STIMEFORMAT), "HH:mm:ss" },
+ { X(LOCALE_IDATE), "0" },
+ { X(LOCALE_ILDATE), "1" },
+ { X(LOCALE_ITIME), "1" },
+ { X(LOCALE_ITIMEMARKPOSN), "0" },
+ { X(LOCALE_ICENTURY), "1" },
+ { X(LOCALE_ITLZERO), "1" },
+ { X(LOCALE_IDAYLZERO), "1" },
+ { X(LOCALE_IMONLZERO), "1" },
+ { X(LOCALE_S1159), "AM" },
+ { X(LOCALE_S2359), "PM" },
+ { X(LOCALE_ICALENDARTYPE), "1" },
+ { X(LOCALE_IOPTIONALCALENDAR), "0" },
+ { X(LOCALE_IFIRSTDAYOFWEEK), "6" },
+ { X(LOCALE_IFIRSTWEEKOFYEAR), "0" },
+ { X(LOCALE_SDAYNAME1), "Monday" },
+ { X(LOCALE_SDAYNAME2), "Tuesday" },
+ { X(LOCALE_SDAYNAME3), "Wednesday" },
+ { X(LOCALE_SDAYNAME4), "Thursday" },
+ { X(LOCALE_SDAYNAME5), "Friday" },
+ { X(LOCALE_SDAYNAME6), "Saturday" },
+ { X(LOCALE_SDAYNAME7), "Sunday" },
+ { X(LOCALE_SABBREVDAYNAME1), "Mon" },
+ { X(LOCALE_SABBREVDAYNAME2), "Tue" },
+ { X(LOCALE_SABBREVDAYNAME3), "Wed" },
+ { X(LOCALE_SABBREVDAYNAME4), "Thu" },
+ { X(LOCALE_SABBREVDAYNAME5), "Fri" },
+ { X(LOCALE_SABBREVDAYNAME6), "Sat" },
+ { X(LOCALE_SABBREVDAYNAME7), "Sun" },
+ { X(LOCALE_SMONTHNAME1), "January" },
+ { X(LOCALE_SMONTHNAME2), "February" },
+ { X(LOCALE_SMONTHNAME3), "March" },
+ { X(LOCALE_SMONTHNAME4), "April" },
+ { X(LOCALE_SMONTHNAME5), "May" },
+ { X(LOCALE_SMONTHNAME6), "June" },
+ { X(LOCALE_SMONTHNAME7), "July" },
+ { X(LOCALE_SMONTHNAME8), "August" },
+ { X(LOCALE_SMONTHNAME9), "September" },
+ { X(LOCALE_SMONTHNAME10), "October" },
+ { X(LOCALE_SMONTHNAME11), "November" },
+ { X(LOCALE_SMONTHNAME12), "December" },
+ { X(LOCALE_SMONTHNAME13), "" },
+ { X(LOCALE_SABBREVMONTHNAME1), "Jan" },
+ { X(LOCALE_SABBREVMONTHNAME2), "Feb" },
+ { X(LOCALE_SABBREVMONTHNAME3), "Mar" },
+ { X(LOCALE_SABBREVMONTHNAME4), "Apr" },
+ { X(LOCALE_SABBREVMONTHNAME5), "May" },
+ { X(LOCALE_SABBREVMONTHNAME6), "Jun" },
+ { X(LOCALE_SABBREVMONTHNAME7), "Jul" },
+ { X(LOCALE_SABBREVMONTHNAME8), "Aug" },
+ { X(LOCALE_SABBREVMONTHNAME9), "Sep" },
+ { X(LOCALE_SABBREVMONTHNAME10), "Oct" },
+ { X(LOCALE_SABBREVMONTHNAME11), "Nov" },
+ { X(LOCALE_SABBREVMONTHNAME12), "Dec" },
+ { X(LOCALE_SABBREVMONTHNAME13), "" },
+ { X(LOCALE_SPOSITIVESIGN), "+" },
+ { X(LOCALE_SNEGATIVESIGN), "-" },
+ { X(LOCALE_IPOSSIGNPOSN), "3" },
+ { X(LOCALE_INEGSIGNPOSN), "0" },
+ { X(LOCALE_IPOSSYMPRECEDES), "1" },
+ { X(LOCALE_IPOSSEPBYSPACE), "0" },
+ { X(LOCALE_INEGSYMPRECEDES), "1" },
+ { X(LOCALE_INEGSEPBYSPACE), "0" },
+ { X(LOCALE_SISO639LANGNAME), "iv" },
+ { X(LOCALE_SISO3166CTRYNAME), "IV" },
+ { X(LOCALE_IDEFAULTEBCDICCODEPAGE), "037" },
+ { X(LOCALE_IPAPERSIZE), "9" },
+ { X(LOCALE_SENGCURRNAME), "International Monetary Fund" },
+ { X(LOCALE_SNATIVECURRNAME), "International Monetary Fund" },
+ { X(LOCALE_SYEARMONTH), "yyyy MMMM" },
+ { X(LOCALE_IDIGITSUBSTITUTION), "1" },
+ { X(LOCALE_SNAME), "" },
+ { X(LOCALE_SSCRIPTS), "Latn;" },
+ { 0 }
+};
+#undef X
+
+static void test_invariant(void)
+{
+ int ret;
+ int len;
+ char buffer[BUFFER_SIZE];
+ const struct invariant_entry *ptr = invariant_list;
+
+ if (!GetLocaleInfoA(LOCALE_INVARIANT, NUO|LOCALE_SLANGUAGE, buffer, sizeof(buffer)))
+ {
+ win_skip("GetLocaleInfoA(LOCALE_INVARIANT) not supported\n"); /* win2k */
+ return;
+ }
+
+ while (ptr->name)
+ {
+ ret = GetLocaleInfoA(LOCALE_INVARIANT, NUO|ptr->id, buffer, sizeof(buffer));
+ if (!ret && (ptr->id == LOCALE_SNAME || ptr->id == LOCALE_SSCRIPTS))
+ win_skip("not supported\n"); /* winxp/win2k3 */
+ else
+ {
+ len = strlen(ptr->expect)+1; /* include \0 */
+ ok(ret == len, "For id %d, expected ret == %d, got %d, error %d\n",
+ ptr->id, len, ret, GetLastError());
+ ok(!strcmp(buffer, ptr->expect), "For id %d, Expected %s, got '%s'\n",
+ ptr->id, ptr->expect, buffer);
+ }
+
+ ptr++;
+ }
+
+ if ((PRIMARYLANGID(LANGIDFROMLCID(GetSystemDefaultLCID())) != LANG_ENGLISH) ||
+ (PRIMARYLANGID(LANGIDFROMLCID(GetThreadLocale())) != LANG_ENGLISH))
+ {
+ skip("Non-English locale\n");
+ }
+ else
+ {
+ /* some locales translate these */
+ static const char lang[] = "Invariant Language (Invariant Country)";
+ static const char cntry[] = "Invariant Country";
+ static const char sortm[] = "Math Alphanumerics";
+ static const char sortd[] = "Default"; /* win2k3 */
+
+ ret = GetLocaleInfoA(LOCALE_INVARIANT, NUO|LOCALE_SLANGUAGE, buffer, sizeof(buffer));
+ len = lstrlenA(lang) + 1;
+ ok(ret == len, "Expected ret == %d, got %d, error %d\n", len, ret, GetLastError());
+ ok(!strcmp(buffer, lang), "Expected %s, got '%s'\n", lang, buffer);
+
+ ret = GetLocaleInfoA(LOCALE_INVARIANT, NUO|LOCALE_SCOUNTRY, buffer, sizeof(buffer));
+ len = lstrlenA(cntry) + 1;
+ ok(ret == len, "Expected ret == %d, got %d, error %d\n", len, ret, GetLastError());
+ ok(!strcmp(buffer, cntry), "Expected %s, got '%s'\n", cntry, buffer);
+
+ ret = GetLocaleInfoA(LOCALE_INVARIANT, NUO|LOCALE_SSORTNAME, buffer, sizeof(buffer));
+ if (ret == lstrlenA(sortm)+1)
+ ok(!strcmp(buffer, sortm), "Expected %s, got '%s'\n", sortm, buffer);
+ else if (ret == lstrlenA(sortd)+1) /* win2k3 */
+ ok(!strcmp(buffer, sortd), "Expected %s, got '%s'\n", sortd, buffer);
+ else
+ ok(0, "Expected ret == %d or %d, got %d, error %d\n",
+ lstrlenA(sortm)+1, lstrlenA(sortd)+1, ret, GetLastError());
+ }
+}
+
START_TEST(locale)
{
InitFunctionPointers();
@@ -4356,6 +4540,7 @@ START_TEST(locale)
test_CompareStringOrdinal();
test_GetGeoInfo();
test_EnumSystemGeoID();
+ test_invariant();
/* this requires collation table patch to make it MS compatible */
if (0) test_sorting();
}
More information about the wine-cvs
mailing list