]> Savannah Git Hosting - gnulib.git/commitdiff
mbrtoc32: Strengthen tests.
authorBruno Haible <bruno@clisp.org>
Thu, 23 May 2024 21:58:06 +0000 (23:58 +0200)
committerBruno Haible <bruno@clisp.org>
Thu, 23 May 2024 21:58:06 +0000 (23:58 +0200)
* tests/test-mbrtoc32.c (main): Add tests for one-by-one input in the
UTF-8 and GB18030 encodings.

ChangeLog
tests/test-mbrtoc32.c

index cfe2da79ae74b2377f7362eee76c967b6ce7ba40..25e150a59ac9ee64a4b25ff055d1d02d62ec7f7d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2024-05-23  Bruno Haible  <bruno@clisp.org>
 
+       mbrtoc32: Strengthen tests.
+       * tests/test-mbrtoc32.c (main): Add tests for one-by-one input in the
+       UTF-8 and GB18030 encodings.
+
        mbrtoc32: Work around bug in Cygwin 3.5.3.
        * m4/mbrtoc32.m4 (gl_MBRTOC32_UTF8_LOCALE): New macro.
        (gl_FUNC_MBRTOC32): Invoke it. If mbrtoc32 has this bug, define
index 83312ee4f726414908512c4b45a59f7fb193a1aa..68c601e2e511194e99fd1d6da428794913210f58 100644 (file)
@@ -291,6 +291,33 @@ main (int argc, char *argv[])
           ASSERT (wc == '!');
           ASSERT (mbsinit (&state));
         }
+        { /* \360\237\220\203 = U+0001F403 */
+          memset (&state, '\0', sizeof (mbstate_t));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\360", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\237", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\220", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\203", 1, &state);
+          ASSERT (ret == 1);
+          ASSERT (wc == 0x0001F403);
+          ASSERT (mbsinit (&state));
+        }
         return test_exit_status;
 
       case '4':
@@ -434,6 +461,33 @@ main (int argc, char *argv[])
           ASSERT (wc == '!');
           ASSERT (mbsinit (&state));
         }
+        { /* \224\071\311\067 = U+0001F403 */
+          memset (&state, '\0', sizeof (mbstate_t));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\224", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\071", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\311", 1, &state);
+          ASSERT (ret == (size_t)(-2));
+          ASSERT (wc == (char32_t) 0xBADFACE);
+          ASSERT (!mbsinit (&state));
+
+          wc = (char32_t) 0xBADFACE;
+          ret = mbrtoc32 (&wc, "\067", 1, &state);
+          ASSERT (ret == 1);
+          ASSERT (wc == 0x0001F403);
+          ASSERT (mbsinit (&state));
+        }
         return test_exit_status;
       }