Jinoh Kang : kernel32/tests: Add tests for EnumCalendarInfo(Ex).

Alexandre Julliard julliard at winehq.org
Wed Dec 1 15:23:49 CST 2021


Module: wine
Branch: master
Commit: 4010876a424ca99b324d2ebd4417df1d168bb39a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4010876a424ca99b324d2ebd4417df1d168bb39a

Author: Jinoh Kang <jinoh.kang.kr at gmail.com>
Date:   Tue Nov 30 11:35:45 2021 +0900

kernel32/tests: Add tests for EnumCalendarInfo(Ex).

Signed-off-by: Jinoh Kang <jinoh.kang.kr at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/locale.c | 169 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 169 insertions(+)

diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index cad2577379b..a5c2ad1068d 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -7008,6 +7008,171 @@ static void test_geo_name(void)
     RegCloseKey(key);
 }
 
+static const LCID locales_with_optional_calendars[] = {
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_SAUDI_ARABIA), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_LEBANON), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_EGYPT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_ALGERIA), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_BAHRAIN), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_IRAQ), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_JORDAN), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_KUWAIT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_LIBYA), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_MOROCCO), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_OMAN), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_QATAR), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_SYRIA), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_TUNISIA), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_UAE), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_ARABIC, SUBLANG_ARABIC_YEMEN), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_DIVEHI, SUBLANG_DEFAULT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_PERSIAN, SUBLANG_DEFAULT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_HEBREW, SUBLANG_DEFAULT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_JAPANESE, SUBLANG_DEFAULT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_KOREAN, SUBLANG_KOREAN), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_THAI, SUBLANG_DEFAULT), SORT_DEFAULT),
+    MAKELCID(MAKELANGID(LANG_URDU, SUBLANG_URDU_PAKISTAN), SORT_DEFAULT)
+};
+
+static BOOL CALLBACK calinfo_procA(LPSTR calinfo)
+{
+    (void)calinfo;
+    return TRUE;
+}
+
+static void test_EnumCalendarInfoA(void)
+{
+    INT i;
+
+    if (!strcmp(winetest_platform, "wine"))
+    {
+        skip("EnumCalendarInfo broken on Wine (test would hang with an infinite loop)\n");
+        return;
+    }
+
+    ok( EnumCalendarInfoA( calinfo_procA,
+                           LOCALE_USER_DEFAULT,
+                           ENUM_ALL_CALENDARS,
+                           CAL_RETURN_NUMBER | CAL_ICALINTVALUE ),
+        "EnumCalendarInfoA for user default locale failed: %u\n", GetLastError() );
+
+    for (i = 0; i < ARRAY_SIZE( locales_with_optional_calendars ); i++)
+    {
+        LCID lcid = locales_with_optional_calendars[i];
+        ok( EnumCalendarInfoA( calinfo_procA,
+                               lcid,
+                               ENUM_ALL_CALENDARS,
+                               CAL_RETURN_NUMBER | CAL_ICALINTVALUE ) ||
+            broken( GetLastError() == ERROR_INVALID_FLAGS ) /* no locale */,
+            "EnumCalendarInfoA for LCID %#06x failed: %u\n", lcid, GetLastError() );
+    }
+}
+
+static BOOL CALLBACK calinfo_procW(LPWSTR calinfo)
+{
+    (void)calinfo;
+    return TRUE;
+}
+
+static void test_EnumCalendarInfoW(void)
+{
+    INT i;
+
+    if (!strcmp(winetest_platform, "wine"))
+    {
+        skip("EnumCalendarInfo broken on Wine (test would hang with an infinite loop)\n");
+        return;
+    }
+
+    ok( EnumCalendarInfoW( calinfo_procW,
+                           LOCALE_USER_DEFAULT,
+                           ENUM_ALL_CALENDARS,
+                           CAL_RETURN_NUMBER | CAL_ICALINTVALUE ),
+        "EnumCalendarInfoW for user default locale failed: %u\n", GetLastError() );
+
+    for (i = 0; i < ARRAY_SIZE( locales_with_optional_calendars ); i++)
+    {
+        LCID lcid = locales_with_optional_calendars[i];
+        ok( EnumCalendarInfoW( calinfo_procW,
+                               lcid,
+                               ENUM_ALL_CALENDARS,
+                               CAL_RETURN_NUMBER | CAL_ICALINTVALUE ) ||
+            broken( GetLastError() == ERROR_INVALID_FLAGS ) /* no locale */,
+            "EnumCalendarInfoW for LCID %#06x failed: %u\n", lcid, GetLastError() );
+    }
+}
+
+static BOOL CALLBACK calinfoex_procA(LPSTR calinfo, LCID calid)
+{
+    (void)calinfo;
+    (void)calid;
+    return TRUE;
+}
+
+static void test_EnumCalendarInfoExA(void)
+{
+    INT i;
+
+    if (!strcmp(winetest_platform, "wine"))
+    {
+        skip("EnumCalendarInfo broken on Wine (test would hang with an infinite loop)\n");
+        return;
+    }
+
+    ok( EnumCalendarInfoExA( calinfoex_procA,
+                             LOCALE_USER_DEFAULT,
+                             ENUM_ALL_CALENDARS,
+                             CAL_RETURN_NUMBER | CAL_ICALINTVALUE ),
+        "EnumCalendarInfoExA for user default locale failed: %u\n", GetLastError() );
+
+    for (i = 0; i < ARRAY_SIZE( locales_with_optional_calendars ); i++)
+    {
+        LCID lcid = locales_with_optional_calendars[i];
+        ok( EnumCalendarInfoExA( calinfoex_procA,
+                                 lcid,
+                                 ENUM_ALL_CALENDARS,
+                                 CAL_RETURN_NUMBER | CAL_ICALINTVALUE ) ||
+            broken( GetLastError() == ERROR_INVALID_FLAGS ) /* no locale */,
+            "EnumCalendarInfoExA for LCID %#06x failed: %u\n", lcid, GetLastError() );
+    }
+}
+
+static BOOL CALLBACK calinfoex_procW(LPWSTR calinfo, LCID calid)
+{
+    (void)calinfo;
+    (void)calid;
+    return TRUE;
+}
+
+static void test_EnumCalendarInfoExW(void)
+{
+    INT i;
+
+    if (!strcmp(winetest_platform, "wine"))
+    {
+        skip("EnumCalendarInfo broken on Wine (test would hang with an infinite loop)\n");
+        return;
+    }
+
+    ok( EnumCalendarInfoExW( calinfoex_procW,
+                             LOCALE_USER_DEFAULT,
+                             ENUM_ALL_CALENDARS,
+                             CAL_RETURN_NUMBER | CAL_ICALINTVALUE ),
+        "EnumCalendarInfoExW for user default locale failed: %u\n", GetLastError() );
+
+    for (i = 0; i < ARRAY_SIZE( locales_with_optional_calendars ); i++)
+    {
+        LCID lcid = locales_with_optional_calendars[i];
+        ok( EnumCalendarInfoExW( calinfoex_procW,
+                                 lcid,
+                                 ENUM_ALL_CALENDARS,
+                                 CAL_RETURN_NUMBER | CAL_ICALINTVALUE ) ||
+            broken( GetLastError() == ERROR_INVALID_FLAGS ) /* no locale */,
+            "EnumCalendarInfoExW for LCID %#06x failed: %u\n", lcid, GetLastError() );
+    }
+}
+
 START_TEST(locale)
 {
   InitFunctionPointers();
@@ -7060,4 +7225,8 @@ START_TEST(locale)
   test_NLSVersion();
   test_geo_name();
   test_sorting();
+  test_EnumCalendarInfoA();
+  test_EnumCalendarInfoW();
+  test_EnumCalendarInfoExA();
+  test_EnumCalendarInfoExW();
 }




More information about the wine-cvs mailing list