]> Savannah Git Hosting - gnulib.git/commitdiff
mbmemcasecmp, mbmemcasecoll: Avoid test failure on MSVC.
authorBruno Haible <bruno@clisp.org>
Fri, 28 Jul 2023 11:56:15 +0000 (13:56 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 28 Jul 2023 11:56:15 +0000 (13:56 +0200)
* tests/test-mbmemcasecmp.h (test_utf_8): Disable two tests on platforms
that don't have the upper/lower mappings for 'ü'/'Ü'.
* tests/test-mbmemcasecmp.c: Include <wchar.h>, <wctype.h>.
* tests/test-mbmemcasecoll.c: Likewise.
* modules/mbmemcasecmp-tests (Depends-on): Add mbrtowc, wctype-h.
* modules/mbmemcasecoll-tests (Depends-on): Likewise.

ChangeLog
modules/mbmemcasecmp-tests
modules/mbmemcasecoll-tests
tests/test-mbmemcasecmp.c
tests/test-mbmemcasecmp.h
tests/test-mbmemcasecoll.c

index 8b08c235cfecaf68187e4c1a6f70c493a83b9e9d..b1ccb85e9a0c604b4ad381298ea80bf7ad32d08d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2023-07-28  Bruno Haible  <bruno@clisp.org>
+
+       mbmemcasecmp, mbmemcasecoll: Avoid test failure on MSVC.
+       * tests/test-mbmemcasecmp.h (test_utf_8): Disable two tests on platforms
+       that don't have the upper/lower mappings for 'ü'/'Ü'.
+       * tests/test-mbmemcasecmp.c: Include <wchar.h>, <wctype.h>.
+       * tests/test-mbmemcasecoll.c: Likewise.
+       * modules/mbmemcasecmp-tests (Depends-on): Add mbrtowc, wctype-h.
+       * modules/mbmemcasecoll-tests (Depends-on): Likewise.
+
 2023-07-27  Bruno Haible  <bruno@clisp.org>
 
        gnulib-tool: Include ftruncate in testdirs.
index 50e9d683667620006490580d43a96316ca2ea652..52cb80def7056520053f3cda0c40a91f4454758b 100644 (file)
@@ -12,6 +12,8 @@ m4/codeset.m4
 Depends-on:
 stdbool
 setlocale
+mbrtowc
+wctype-h
 
 configure.ac:
 gt_LOCALE_FR
index 28a982e4e627e54938a1f3269dbee45c2f957b30..8cba1058465eab3e6d51c38f3eb47d9480951f3a 100644 (file)
@@ -12,6 +12,8 @@ m4/codeset.m4
 Depends-on:
 stdbool
 setlocale
+mbrtowc
+wctype-h
 
 configure.ac:
 gt_LOCALE_FR
index 477f68ba54a57211950cba2cba6dbeaab966dddd..f8ae91e401495bf5edcb79934c3659f92e16d93c 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <locale.h>
 #include <string.h>
+#include <wchar.h>
+#include <wctype.h>
 
 #include "macros.h"
 
index ed72bd5efcc628ee7b671fdd40b191c1a9efb8a6..1727ff31607ab6a6990ae000ba18cc386326c825 100644 (file)
@@ -123,8 +123,19 @@ test_utf_8 (int (*my_casecmp) (const char *, size_t, const char *, size_t), bool
   /* The following tests shows how my_casecmp() is different from
      strcasecmp().  */
 
-  ASSERT (my_casecmp ("\303\266zg\303\274r", 7, "\303\226ZG\303\234R", 7) == 0); /* özgür */
-  ASSERT (my_casecmp ("\303\226ZG\303\234R", 7, "\303\266zg\303\274r", 7) == 0); /* özgür */
+  {
+    /* Some platforms, e.g. MSVC 14, lack the upper/lower mappings for these
+       wide characters in the *.65001 locales.  */
+    mbstate_t state;
+    wchar_t wc;
+    memset (&state, 0, sizeof (mbstate_t));
+    if (mbrtowc (&wc, "\303\274", 2, &state) == 2
+        && towupper (wc) != wc)
+      {
+        ASSERT (my_casecmp ("\303\266zg\303\274r", 7, "\303\226ZG\303\234R", 7) == 0); /* özgür */
+        ASSERT (my_casecmp ("\303\226ZG\303\234R", 7, "\303\266zg\303\274r", 7) == 0); /* özgür */
+      }
+  }
 
   /* This test shows how strings of different size can compare equal.  */
   if (turkish)
@@ -234,7 +245,18 @@ test_utf_8 (int (*my_casecmp) (const char *, size_t, const char *, size_t), bool
     ASSERT (my_casecmp (input1, SIZEOF (input1), input3, SIZEOF (input3)) == 0);
     #endif
 
-    ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) == 0);
+    {
+      /* Some platforms, e.g. MSVC 14, lack the upper/lower mappings for the
+         'ü'/'Ü' wide characters in the *.65001 locales.  */
+      mbstate_t state;
+      wchar_t wc;
+      memset (&state, 0, sizeof (mbstate_t));
+      if (mbrtowc (&wc, "\303\234", 2, &state) == 2
+          && towlower (wc) != wc)
+        {
+          ASSERT (my_casecmp (input2, SIZEOF (input2), input3, SIZEOF (input3)) == 0);
+        }
+    }
   }
 
   #if 0 /* This functionality requires ulc_casecmp.  */
index d5b274bffa672d26dec95cc7eca7a0d33ef1d673..ebcc0618c45866258de0664c7fa7e3201f780f1a 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <locale.h>
 #include <string.h>
+#include <wchar.h>
+#include <wctype.h>
 
 #include "macros.h"