]> Savannah Git Hosting - gnulib.git/commitdiff
mbrtoc16 tests: Renumber tests.
authorBruno Haible <bruno@clisp.org>
Sat, 29 Jul 2023 22:16:24 +0000 (00:16 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 29 Jul 2023 23:41:24 +0000 (01:41 +0200)
* tests/test-mbrtoc16-*.sh: Renamed 1 -> 2 -> 3 -> 4 -> 5 -> 1.
* tests/test-mbrtoc16.c: Update.
* tests/test-mbrtoc16-w32-*.sh: Renamed 1 -> 2 -> 3 -> 5 -> 7 -> 4 -> 6 -> 8.
* tests/test-mbrtoc16-w32.c: Update.
* modules/mbrtoc16-tests: Update.

17 files changed:
ChangeLog
modules/mbrtoc16-tests
tests/test-mbrtoc16-1.sh
tests/test-mbrtoc16-2.sh
tests/test-mbrtoc16-3.sh
tests/test-mbrtoc16-4.sh
tests/test-mbrtoc16-5.sh
tests/test-mbrtoc16-w32-1.sh [deleted file]
tests/test-mbrtoc16-w32-2.sh
tests/test-mbrtoc16-w32-3.sh
tests/test-mbrtoc16-w32-4.sh
tests/test-mbrtoc16-w32-5.sh
tests/test-mbrtoc16-w32-6.sh
tests/test-mbrtoc16-w32-7.sh
tests/test-mbrtoc16-w32-8.sh [new file with mode: 0755]
tests/test-mbrtoc16-w32.c
tests/test-mbrtoc16.c

index 4b1a2935e8718e6b05d9b0468f4238819a7a0797..0105e2e8c1efb27493167a14bfbe8531ca495c49 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 2023-07-29  Bruno Haible  <bruno@clisp.org>
 
+       mbrtoc16 tests: Renumber tests.
+       * tests/test-mbrtoc16-*.sh: Renamed 1 -> 2 -> 3 -> 4 -> 5 -> 1.
+       * tests/test-mbrtoc16.c: Update.
+       * tests/test-mbrtoc16-w32-*.sh: Renamed 1 -> 2 -> 3 -> 5 -> 7 -> 4 -> 6
+       -> 8.
+       * tests/test-mbrtoc16-w32.c: Update.
+       * modules/mbrtoc16-tests: Update.
+
        mbrtoc32 tests: Renumber tests.
        * tests/test-mbrtoc32-*.sh: Renamed 1 -> 2 -> 3 -> 4 -> 5 -> 1.
        * tests/test-mbrtoc32.c: Update.
index 2ac7e0f0ee7f9e3c145c4067fcbc48c68a327891..298d945bc30000ac075d1dab7363487f3d9eb1df 100644 (file)
@@ -5,13 +5,13 @@ tests/test-mbrtoc16-3.sh
 tests/test-mbrtoc16-4.sh
 tests/test-mbrtoc16-5.sh
 tests/test-mbrtoc16.c
-tests/test-mbrtoc16-w32-1.sh
 tests/test-mbrtoc16-w32-2.sh
 tests/test-mbrtoc16-w32-3.sh
 tests/test-mbrtoc16-w32-4.sh
 tests/test-mbrtoc16-w32-5.sh
 tests/test-mbrtoc16-w32-6.sh
 tests/test-mbrtoc16-w32-7.sh
+tests/test-mbrtoc16-w32-8.sh
 tests/test-mbrtoc16-w32.c
 tests/signature.h
 tests/macros.h
@@ -37,9 +37,9 @@ Makefile.am:
 TESTS += \
   test-mbrtoc16-1.sh test-mbrtoc16-2.sh test-mbrtoc16-3.sh test-mbrtoc16-4.sh \
   test-mbrtoc16-5.sh \
-  test-mbrtoc16-w32-1.sh test-mbrtoc16-w32-2.sh test-mbrtoc16-w32-3.sh \
-  test-mbrtoc16-w32-4.sh test-mbrtoc16-w32-5.sh test-mbrtoc16-w32-6.sh \
-  test-mbrtoc16-w32-7.sh
+  test-mbrtoc16-w32-2.sh test-mbrtoc16-w32-3.sh test-mbrtoc16-w32-4.sh \
+  test-mbrtoc16-w32-5.sh test-mbrtoc16-w32-6.sh test-mbrtoc16-w32-7.sh \
+  test-mbrtoc16-w32-8.sh
 TESTS_ENVIRONMENT += \
   LOCALE_FR='@LOCALE_FR@' \
   LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
index 811a57093ce4e711762442fe5d0dd64bb14fd337..4da6d644991e19a1d0aa3351b307ffa36a827cf1 100755 (executable)
@@ -1,15 +1,9 @@
 #!/bin/sh
 
-# Test in an ISO-8859-1 or ISO-8859-15 locale.
-: "${LOCALE_FR=fr_FR}"
-if test $LOCALE_FR = none; then
-  if test -f /usr/bin/localedef; then
-    echo "Skipping test: no traditional french locale is installed"
-  else
-    echo "Skipping test: no traditional french locale is supported"
-  fi
-  exit 77
-fi
+# Test whether the POSIX locale has encoding errors.
+LC_ALL=C \
+${CHECKER} ./test-mbrtoc16${EXEEXT} 1 || exit 1
+LC_ALL=POSIX \
+${CHECKER} ./test-mbrtoc16${EXEEXT} 1 || exit 1
 
-LC_ALL=$LOCALE_FR \
-${CHECKER} ./test-mbrtoc16${EXEEXT} 1
+exit 0
index aa2e9d84ba7e74c3bffb5aa2c8f1d5d46e13a2ef..90100384661ef126bcbabb32d37ec8b448b8ec04 100755 (executable)
@@ -1,15 +1,15 @@
 #!/bin/sh
 
-# Test whether a specific UTF-8 locale is installed.
-: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
-if test $LOCALE_FR_UTF8 = none; then
+# Test in an ISO-8859-1 or ISO-8859-15 locale.
+: "${LOCALE_FR=fr_FR}"
+if test $LOCALE_FR = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no french Unicode locale is installed"
+    echo "Skipping test: no traditional french locale is installed"
   else
-    echo "Skipping test: no french Unicode locale is supported"
+    echo "Skipping test: no traditional french locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_FR_UTF8 \
+LC_ALL=$LOCALE_FR \
 ${CHECKER} ./test-mbrtoc16${EXEEXT} 2
index b58bb4aab2519988216faa91a04ea82549cfe06f..d4104816cab2d1c1bfdae25dcf5611b182ae38b1 100755 (executable)
@@ -1,15 +1,15 @@
 #!/bin/sh
 
-# Test whether a specific EUC-JP locale is installed.
-: "${LOCALE_JA=ja_JP}"
-if test $LOCALE_JA = none; then
+# Test whether a specific UTF-8 locale is installed.
+: "${LOCALE_FR_UTF8=fr_FR.UTF-8}"
+if test $LOCALE_FR_UTF8 = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no traditional japanese locale is installed"
+    echo "Skipping test: no french Unicode locale is installed"
   else
-    echo "Skipping test: no traditional japanese locale is supported"
+    echo "Skipping test: no french Unicode locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_JA \
+LC_ALL=$LOCALE_FR_UTF8 \
 ${CHECKER} ./test-mbrtoc16${EXEEXT} 3
index 8fa66efe218f012d23c8fdab6cf799141d7b836e..826feb5c1e5d20a1c38e23d553db1e4f8931ac01 100755 (executable)
@@ -1,15 +1,15 @@
 #!/bin/sh
 
-# Test whether a specific GB18030 locale is installed.
-: "${LOCALE_ZH_CN=zh_CN.GB18030}"
-if test $LOCALE_ZH_CN = none; then
+# Test whether a specific EUC-JP locale is installed.
+: "${LOCALE_JA=ja_JP}"
+if test $LOCALE_JA = none; then
   if test -f /usr/bin/localedef; then
-    echo "Skipping test: no transitional chinese locale is installed"
+    echo "Skipping test: no traditional japanese locale is installed"
   else
-    echo "Skipping test: no transitional chinese locale is supported"
+    echo "Skipping test: no traditional japanese locale is supported"
   fi
   exit 77
 fi
 
-LC_ALL=$LOCALE_ZH_CN \
+LC_ALL=$LOCALE_JA \
 ${CHECKER} ./test-mbrtoc16${EXEEXT} 4
index 71affee23d23ad52f1fd8dfd66ce0d40a37faed9..ae12ae9002af353fe90b119d0024b609259aa24b 100755 (executable)
@@ -1,9 +1,15 @@
 #!/bin/sh
 
-# Test whether the POSIX locale has encoding errors.
-LC_ALL=C \
-${CHECKER} ./test-mbrtoc16${EXEEXT} 5 || exit 1
-LC_ALL=POSIX \
-${CHECKER} ./test-mbrtoc16${EXEEXT} 5 || exit 1
+# Test whether a specific GB18030 locale is installed.
+: "${LOCALE_ZH_CN=zh_CN.GB18030}"
+if test $LOCALE_ZH_CN = none; then
+  if test -f /usr/bin/localedef; then
+    echo "Skipping test: no transitional chinese locale is installed"
+  else
+    echo "Skipping test: no transitional chinese locale is supported"
+  fi
+  exit 77
+fi
 
-exit 0
+LC_ALL=$LOCALE_ZH_CN \
+${CHECKER} ./test-mbrtoc16${EXEEXT} 5
diff --git a/tests/test-mbrtoc16-w32-1.sh b/tests/test-mbrtoc16-w32-1.sh
deleted file mode 100755 (executable)
index db19c94..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-# Test a CP1252 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} French_France 1252
index 05d4cef17f48feae6cc1ce09b57dad94a00e5397..db19c943ac19dcb694429db75b5cea11d2fb6364 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test a CP1256 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+# Test a CP1252 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} French_France 1252
index f00830011c8c350a6ceb7bd942608f4448241bc5..05d4cef17f48feae6cc1ce09b57dad94a00e5397 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test a CP932 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Japanese_Japan 932
+# Test a CP1256 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
index f4cdff6838cb0161f04f4e799f9ecccf698699a0..44ddd7e303554a04168b6e683601bf16304b1448 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test a CP950 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_Taiwan 950
+# Test some UTF-8 locales.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
index f7685a45334ff7ae7b33a0f2c6c15be45396bbb1..f00830011c8c350a6ceb7bd942608f4448241bc5 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test a CP936 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_China 936
+# Test a CP932 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Japanese_Japan 932
index a695af94f92e5ab5985c8fd4ef27fc497af1a9d1..f4cdff6838cb0161f04f4e799f9ecccf698699a0 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test a GB18030 locale.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_China 54936
+# Test a CP950 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_Taiwan 950
index 44ddd7e303554a04168b6e683601bf16304b1448..f7685a45334ff7ae7b33a0f2c6c15be45396bbb1 100755 (executable)
@@ -1,4 +1,4 @@
 #!/bin/sh
 
-# Test some UTF-8 locales.
-${CHECKER} ./test-mbrtoc16-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
+# Test a CP936 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_China 936
diff --git a/tests/test-mbrtoc16-w32-8.sh b/tests/test-mbrtoc16-w32-8.sh
new file mode 100755 (executable)
index 0000000..a695af9
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+# Test a GB18030 locale.
+${CHECKER} ./test-mbrtoc16-w32${EXEEXT} Chinese_China 54936
index c7aef287d54e8a69b458c8a84d0c079f9dc3d110..10ebf6424ad311fe948f103ede1588961f29d01a 100644 (file)
@@ -263,6 +263,144 @@ test_one_locale (const char *name, int codepage)
       }
       return 0;
 
+    case 65001:
+      /* Locale encoding is CP65001 = UTF-8.  */
+      if (strcmp (locale_charset (), "UTF-8") != 0)
+        return 77;
+      {
+        char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
+        memset (&state, '\0', sizeof (mbstate_t));
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input, 1, &state);
+        ASSERT (ret == 1);
+        ASSERT (wc == 's');
+        ASSERT (mbsinit (&state));
+        input[0] = '\0';
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 1, 1, &state);
+        ASSERT (ret == (size_t)(-2));
+        ASSERT (wc == (char16_t) 0xBADF);
+        #if 0
+        ASSERT (!mbsinit (&state));
+        #endif
+        input[1] = '\0';
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 2, 7, &state);
+        ASSERT (ret == 1);
+        ASSERT (c32tob (wc) == EOF);
+        ASSERT (wc == 0x00FC);
+        ASSERT (mbsinit (&state));
+        input[2] = '\0';
+
+        /* Test support of NULL first argument.  */
+        ret = mbrtoc16 (NULL, input + 3, 6, &state);
+        ASSERT (ret == 2);
+        ASSERT (mbsinit (&state));
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 3, 6, &state);
+        ASSERT (ret == 2);
+        ASSERT (c32tob (wc) == EOF);
+        ASSERT (wc == 0x00DF);
+        ASSERT (mbsinit (&state));
+        input[3] = '\0';
+        input[4] = '\0';
+
+        /* Test support of NULL first argument.  */
+        ret = mbrtoc16 (NULL, input + 5, 4, &state);
+        ASSERT (ret == 4);
+        ret = mbrtoc16 (NULL, input + 9, 0, &state);
+        ASSERT (ret == (size_t)(-3));
+        ASSERT (mbsinit (&state));
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 5, 4, &state);
+        ASSERT (ret == 4);
+        ASSERT (c32tob (wc) == EOF);
+        ASSERT (wc == 0xD83D); /* expect UTF-16 encoding */
+        input[5] = '\0';
+        input[6] = '\0';
+        input[7] = '\0';
+        input[8] = '\0';
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 9, 0, &state);
+        ASSERT (ret == (size_t)(-3));
+        ASSERT (c32tob (wc) == EOF);
+        ASSERT (wc == 0xDE0B); /* expect UTF-16 encoding */
+        ASSERT (mbsinit (&state));
+
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, input + 9, 1, &state);
+        ASSERT (ret == 1);
+        ASSERT (wc == '!');
+        ASSERT (mbsinit (&state));
+
+        /* Test some invalid input.  */
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\377", 1, &state); /* 0xFF */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+
+        memset (&state, '\0', sizeof (mbstate_t));
+        wc = (char16_t) 0xBADF;
+        ret = mbrtoc16 (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
+        ASSERT (ret == (size_t)-1);
+        ASSERT (errno == EILSEQ);
+      }
+      return 0;
+
     case 932:
       /* Locale encoding is CP932, similar to Shift_JIS.  */
       {
@@ -595,144 +733,6 @@ test_one_locale (const char *name, int codepage)
       }
       return 0;
 
-    case 65001:
-      /* Locale encoding is CP65001 = UTF-8.  */
-      if (strcmp (locale_charset (), "UTF-8") != 0)
-        return 77;
-      {
-        char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
-        memset (&state, '\0', sizeof (mbstate_t));
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input, 1, &state);
-        ASSERT (ret == 1);
-        ASSERT (wc == 's');
-        ASSERT (mbsinit (&state));
-        input[0] = '\0';
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 1, 1, &state);
-        ASSERT (ret == (size_t)(-2));
-        ASSERT (wc == (char16_t) 0xBADF);
-        #if 0
-        ASSERT (!mbsinit (&state));
-        #endif
-        input[1] = '\0';
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 2, 7, &state);
-        ASSERT (ret == 1);
-        ASSERT (c32tob (wc) == EOF);
-        ASSERT (wc == 0x00FC);
-        ASSERT (mbsinit (&state));
-        input[2] = '\0';
-
-        /* Test support of NULL first argument.  */
-        ret = mbrtoc16 (NULL, input + 3, 6, &state);
-        ASSERT (ret == 2);
-        ASSERT (mbsinit (&state));
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 3, 6, &state);
-        ASSERT (ret == 2);
-        ASSERT (c32tob (wc) == EOF);
-        ASSERT (wc == 0x00DF);
-        ASSERT (mbsinit (&state));
-        input[3] = '\0';
-        input[4] = '\0';
-
-        /* Test support of NULL first argument.  */
-        ret = mbrtoc16 (NULL, input + 5, 4, &state);
-        ASSERT (ret == 4);
-        ret = mbrtoc16 (NULL, input + 9, 0, &state);
-        ASSERT (ret == (size_t)(-3));
-        ASSERT (mbsinit (&state));
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 5, 4, &state);
-        ASSERT (ret == 4);
-        ASSERT (c32tob (wc) == EOF);
-        ASSERT (wc == 0xD83D); /* expect UTF-16 encoding */
-        input[5] = '\0';
-        input[6] = '\0';
-        input[7] = '\0';
-        input[8] = '\0';
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 9, 0, &state);
-        ASSERT (ret == (size_t)(-3));
-        ASSERT (c32tob (wc) == EOF);
-        ASSERT (wc == 0xDE0B); /* expect UTF-16 encoding */
-        ASSERT (mbsinit (&state));
-
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, input + 9, 1, &state);
-        ASSERT (ret == 1);
-        ASSERT (wc == '!');
-        ASSERT (mbsinit (&state));
-
-        /* Test some invalid input.  */
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\377", 1, &state); /* 0xFF */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\303\300", 2, &state); /* 0xC3 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\343\300", 2, &state); /* 0xE3 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\363\300", 2, &state); /* 0xF3 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-
-        memset (&state, '\0', sizeof (mbstate_t));
-        wc = (char16_t) 0xBADF;
-        ret = mbrtoc16 (&wc, "\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
-        ASSERT (ret == (size_t)-1);
-        ASSERT (errno == EILSEQ);
-      }
-      return 0;
-
     default:
       return 1;
     }
index 03732dddb44c9f163783676351817fb104cb64f5..b76a9bed281ce1c7b72d6322211e6b1a10907879 100644 (file)
@@ -131,14 +131,50 @@ main (int argc, char *argv[])
      "C" locale.  Furthermore, when you attempt to set the "C" or "POSIX"
      locale via setlocale(), what you get is a "C" locale with UTF-8 encoding,
      that is, effectively the "C.UTF-8" locale.  */
-  if (argc > 1 && strcmp (argv[1], "5") == 0 && MB_CUR_MAX > 1)
-    argv[1] = "2";
+  if (argc > 1 && strcmp (argv[1], "1") == 0 && MB_CUR_MAX > 1)
+    argv[1] = "3";
 #endif
 
   if (argc > 1)
     switch (argv[1][0])
       {
       case '1':
+        /* C or POSIX locale.  */
+        {
+          int c;
+          char buf[1];
+
+          memset (&state, '\0', sizeof (mbstate_t));
+          for (c = 0; c < 0x100; c++)
+            if (c != 0)
+              {
+                /* We are testing all nonnull bytes.  */
+                buf[0] = c;
+
+                wc = (char16_t) 0xBADF;
+                ret = mbrtoc16 (&wc, buf, 1, &state);
+                /* POSIX:2018 says regarding mbrtowc: "In the POSIX locale an
+                   [EILSEQ] error cannot occur since all byte values are valid
+                   characters."  It is reasonable to expect mbrtoc16 to behave
+                   in the same way.  */
+                ASSERT (ret == 1);
+                if (c < 0x80)
+                  /* c is an ASCII character.  */
+                  ASSERT (wc == c);
+                else
+                  /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
+                     But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF.  */
+                  ASSERT (wc == (btoc32 (c) == 0xDF00 + c ? btoc32 (c) : c));
+                ASSERT (mbsinit (&state));
+
+                ret = mbrtoc16 (NULL, buf, 1, &state);
+                ASSERT (ret == 1);
+                ASSERT (mbsinit (&state));
+              }
+        }
+        return 0;
+
+      case '2':
         /* Locale encoding is ISO-8859-1 or ISO-8859-15.  */
         {
           char input[] = "B\374\337er"; /* "Büßer" */
@@ -187,7 +223,7 @@ main (int argc, char *argv[])
         }
         return 0;
 
-      case '2':
+      case '3':
         /* Locale encoding is UTF-8.  */
         {
           char input[] = "s\303\274\303\237\360\237\230\213!"; /* "süß😋!" */
@@ -262,7 +298,7 @@ main (int argc, char *argv[])
         }
         return 0;
 
-      case '3':
+      case '4':
         /* Locale encoding is EUC-JP.  */
         {
           char input[] = "<\306\374\313\334\270\354>"; /* "<日本語>" */
@@ -323,7 +359,7 @@ main (int argc, char *argv[])
         }
         return 0;
 
-      case '4':
+      case '5':
         /* Locale encoding is GB18030.  */
         #if GL_CHAR32_T_IS_UNICODE && (defined __NetBSD__ || defined __sun)
         fputs ("Skipping test: The GB18030 converter in this system's iconv is broken.\n", stderr);
@@ -403,42 +439,6 @@ main (int argc, char *argv[])
           ASSERT (mbsinit (&state));
         }
         return 0;
-
-      case '5':
-        /* C or POSIX locale.  */
-        {
-          int c;
-          char buf[1];
-
-          memset (&state, '\0', sizeof (mbstate_t));
-          for (c = 0; c < 0x100; c++)
-            if (c != 0)
-              {
-                /* We are testing all nonnull bytes.  */
-                buf[0] = c;
-
-                wc = (char16_t) 0xBADF;
-                ret = mbrtoc16 (&wc, buf, 1, &state);
-                /* POSIX:2018 says regarding mbrtowc: "In the POSIX locale an
-                   [EILSEQ] error cannot occur since all byte values are valid
-                   characters."  It is reasonable to expect mbrtoc16 to behave
-                   in the same way.  */
-                ASSERT (ret == 1);
-                if (c < 0x80)
-                  /* c is an ASCII character.  */
-                  ASSERT (wc == c);
-                else
-                  /* On most platforms, the bytes 0x80..0xFF map to U+0080..U+00FF.
-                     But on musl libc, the bytes 0x80..0xFF map to U+DF80..U+DFFF.  */
-                  ASSERT (wc == (btoc32 (c) == 0xDF00 + c ? btoc32 (c) : c));
-                ASSERT (mbsinit (&state));
-
-                ret = mbrtoc16 (NULL, buf, 1, &state);
-                ASSERT (ret == 1);
-                ASSERT (mbsinit (&state));
-              }
-        }
-        return 0;
       }
 
   return 1;