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:
@@ -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
@@ -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
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Test a CP1252 locale.
|
||||
${CHECKER} ./test-mbrlen-w32${EXEEXT} French_France 1252
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable
+4
@@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Test a GB18030 locale.
|
||||
${CHECKER} ./test-mbrlen-w32${EXEEXT} Chinese_China 54936
|
||||
+91
-91
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user