1
0
mirror of https://https.git.savannah.gnu.org/git/gnulib.git synced 2026-09-01 02:34:55 +00:00

mbrlen tests: Renumber tests.

* tests/test-mbrlen*.sh: Renamed 1 -> 2 -> 3 -> 4 -> 5 -> 1.
* tests/test-mbrlen.c: Update.
* tests/test-mbrlen-w32-*.sh: Renamed 1 -> 2 -> 3 -> 5 -> 7 -> 4 -> 6
-> 8.
* tests/test-mbrlen-w32.c: Update.
* modules/mbrlen-tests: Update.
This commit is contained in:
Bruno Haible
2023-07-29 23:18:42 +02:00
parent 646c928827
commit 6646bf2eb2
17 changed files with 159 additions and 151 deletions
+8
View File
@@ -1,5 +1,13 @@
2023-07-29 Bruno Haible <bruno@clisp.org>
mbrlen tests: Renumber tests.
* tests/test-mbrlen*.sh: Renamed 1 -> 2 -> 3 -> 4 -> 5 -> 1.
* tests/test-mbrlen.c: Update.
* tests/test-mbrlen-w32-*.sh: Renamed 1 -> 2 -> 3 -> 5 -> 7 -> 4 -> 6
-> 8.
* tests/test-mbrlen-w32.c: Update.
* modules/mbrlen-tests: Update.
mbmemcasecoll tests: Renumber tests.
* tests/test-mbmemcasecoll*.sh: Renamed 1 -> 2 -> 3 -> 4.
* tests/test-mbmemcasecoll.c: Update.
+11 -11
View File
@@ -1,17 +1,17 @@
Files:
tests/test-mbrlen1.sh
tests/test-mbrlen2.sh
tests/test-mbrlen3.sh
tests/test-mbrlen4.sh
tests/test-mbrlen5.sh
tests/test-mbrlen-1.sh
tests/test-mbrlen-2.sh
tests/test-mbrlen-3.sh
tests/test-mbrlen-4.sh
tests/test-mbrlen-5.sh
tests/test-mbrlen.c
tests/test-mbrlen-w32-1.sh
tests/test-mbrlen-w32-2.sh
tests/test-mbrlen-w32-3.sh
tests/test-mbrlen-w32-4.sh
tests/test-mbrlen-w32-5.sh
tests/test-mbrlen-w32-6.sh
tests/test-mbrlen-w32-7.sh
tests/test-mbrlen-w32-8.sh
tests/test-mbrlen-w32.c
tests/signature.h
tests/macros.h
@@ -34,11 +34,11 @@ gt_LOCALE_ZH_CN
Makefile.am:
TESTS += \
test-mbrlen1.sh test-mbrlen2.sh test-mbrlen3.sh test-mbrlen4.sh \
test-mbrlen5.sh \
test-mbrlen-w32-1.sh test-mbrlen-w32-2.sh test-mbrlen-w32-3.sh \
test-mbrlen-w32-4.sh test-mbrlen-w32-5.sh test-mbrlen-w32-6.sh \
test-mbrlen-w32-7.sh
test-mbrlen-1.sh test-mbrlen-2.sh test-mbrlen-3.sh test-mbrlen-4.sh \
test-mbrlen-5.sh \
test-mbrlen-w32-2.sh test-mbrlen-w32-3.sh test-mbrlen-w32-4.sh \
test-mbrlen-w32-5.sh test-mbrlen-w32-6.sh test-mbrlen-w32-7.sh \
test-mbrlen-w32-8.sh
TESTS_ENVIRONMENT += \
LOCALE_FR='@LOCALE_FR@' \
LOCALE_FR_UTF8='@LOCALE_FR_UTF8@' \
@@ -2,8 +2,8 @@
# Test whether the POSIX locale has encoding errors.
LC_ALL=C \
${CHECKER} ./test-mbrlen${EXEEXT} 5 || exit 1
${CHECKER} ./test-mbrlen${EXEEXT} 1 || exit 1
LC_ALL=POSIX \
${CHECKER} ./test-mbrlen${EXEEXT} 5 || exit 1
${CHECKER} ./test-mbrlen${EXEEXT} 1 || exit 1
exit 0
@@ -12,4 +12,4 @@ if test $LOCALE_FR = none; then
fi
LC_ALL=$LOCALE_FR \
${CHECKER} ./test-mbrlen${EXEEXT} 1
${CHECKER} ./test-mbrlen${EXEEXT} 2
@@ -12,4 +12,4 @@ if test $LOCALE_FR_UTF8 = none; then
fi
LC_ALL=$LOCALE_FR_UTF8 \
${CHECKER} ./test-mbrlen${EXEEXT} 2
${CHECKER} ./test-mbrlen${EXEEXT} 3
@@ -12,4 +12,4 @@ if test $LOCALE_JA = none; then
fi
LC_ALL=$LOCALE_JA \
${CHECKER} ./test-mbrlen${EXEEXT} 3
${CHECKER} ./test-mbrlen${EXEEXT} 4
@@ -12,4 +12,4 @@ if test $LOCALE_ZH_CN = none; then
fi
LC_ALL=$LOCALE_ZH_CN \
${CHECKER} ./test-mbrlen${EXEEXT} 4
${CHECKER} ./test-mbrlen${EXEEXT} 5
-4
View File
@@ -1,4 +0,0 @@
#!/bin/sh
# Test a CP1252 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} French_France 1252
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP1256 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
# Test a CP1252 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} French_France 1252
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP932 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Japanese_Japan 932
# Test a CP1256 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} "Arabic_Saudi Arabia" 1256
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP950 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_Taiwan 950
# Test some UTF-8 locales.
${CHECKER} ./test-mbrlen-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a CP936 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_China 936
# Test a CP932 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Japanese_Japan 932
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test a GB18030 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_China 54936
# Test a CP950 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_Taiwan 950
+2 -2
View File
@@ -1,4 +1,4 @@
#!/bin/sh
# Test some UTF-8 locales.
${CHECKER} ./test-mbrlen-w32${EXEEXT} French_France Japanese_Japan Chinese_Taiwan Chinese_China 65001
# Test a CP936 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_China 936
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
# Test a GB18030 locale.
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_China 54936
+91 -91
View File
@@ -216,6 +216,97 @@ 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[] = "B\303\274\303\237er"; /* "Büßer" */
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen (input, 1, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[0] = '\0';
ret = mbrlen (input + 1, 1, &state);
ASSERT (ret == (size_t)(-2));
ASSERT (!mbsinit (&state));
input[1] = '\0';
ret = mbrlen (input + 2, 5, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[2] = '\0';
ret = mbrlen (input + 3, 4, &state);
ASSERT (ret == 2);
ASSERT (mbsinit (&state));
input[3] = '\0';
input[4] = '\0';
ret = mbrlen (input + 5, 2, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[5] = '\0';
ret = mbrlen (input + 6, 1, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
/* Test some invalid input. */
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\377", 1, &state); /* 0xFF */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\303\300", 2, &state); /* 0xC3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\300", 2, &state); /* 0xE3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\300", 2, &state); /* 0xF3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\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. */
{
@@ -433,97 +524,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[] = "B\303\274\303\237er"; /* "Büßer" */
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen (input, 1, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[0] = '\0';
ret = mbrlen (input + 1, 1, &state);
ASSERT (ret == (size_t)(-2));
ASSERT (!mbsinit (&state));
input[1] = '\0';
ret = mbrlen (input + 2, 5, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[2] = '\0';
ret = mbrlen (input + 3, 4, &state);
ASSERT (ret == 2);
ASSERT (mbsinit (&state));
input[3] = '\0';
input[4] = '\0';
ret = mbrlen (input + 5, 2, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
input[5] = '\0';
ret = mbrlen (input + 6, 1, &state);
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
/* Test some invalid input. */
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\377", 1, &state); /* 0xFF */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\303\300", 2, &state); /* 0xC3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\300", 2, &state); /* 0xE3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\300\200", 3, &state); /* 0xE3 0xC0 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\343\200\300", 3, &state); /* 0xE3 0x80 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\300", 2, &state); /* 0xF3 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\300\200\200", 4, &state); /* 0xF3 0xC0 0x80 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\200\300", 3, &state); /* 0xF3 0x80 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\200\300\200", 4, &state); /* 0xF3 0x80 0xC0 0x80 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
memset (&state, '\0', sizeof (mbstate_t));
ret = mbrlen ("\363\200\200\300", 4, &state); /* 0xF3 0x80 0x80 0xC0 */
ASSERT (ret == (size_t)-1);
ASSERT (errno == EILSEQ);
}
return 0;
default:
return 1;
}
+27 -27
View File
@@ -114,14 +114,36 @@ 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;
ret = mbrlen (buf, 1, &state);
/* POSIX:2018 says: "In the POSIX locale an [EILSEQ] error
cannot occur since all byte values are valid characters." */
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" */
@@ -153,7 +175,7 @@ main (int argc, char *argv[])
}
return 0;
case '2':
case '3':
/* Locale encoding is UTF-8. */
{
char input[] = "B\303\274\303\237er"; /* "Büßer" */
@@ -191,7 +213,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>"; /* "<日本語>" */
@@ -230,7 +252,7 @@ main (int argc, char *argv[])
}
return 0;
case '4':
case '5':
/* Locale encoding is GB18030. */
{
char input[] = "B\250\271\201\060\211\070er"; /* "Büßer" */
@@ -269,28 +291,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;
ret = mbrlen (buf, 1, &state);
/* POSIX:2018 says: "In the POSIX locale an [EILSEQ] error
cannot occur since all byte values are valid characters." */
ASSERT (ret == 1);
ASSERT (mbsinit (&state));
}
}
return 0;
}
return 1;