From: Bruno Haible Date: Wed, 13 Sep 2023 14:31:56 +0000 (+0200) Subject: mbfile: Add tests. X-Git-Tag: v1.0~784 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=fbd3fbba93628b8e747a53d49ad55e8436ad201d;p=gnulib.git mbfile: Add tests. * tests/test-mbfile.sh: New file. * tests/test-mbfile.c: New file. * modules/mbfile-tests: New file. --- diff --git a/ChangeLog b/ChangeLog index 10be2e2aad..1761f7a9bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2023-09-13 Bruno Haible + mbfile: Add tests. + * tests/test-mbfile.sh: New file. + * tests/test-mbfile.c: New file. + * modules/mbfile-tests: New file. + mbfile: Fix major bug (regression 2023-07-04). Reported by Gleb Fotengauer-Malinovskiy in . diff --git a/modules/mbfile-tests b/modules/mbfile-tests new file mode 100644 index 0000000000..246702fc04 --- /dev/null +++ b/modules/mbfile-tests @@ -0,0 +1,14 @@ +Files: +tests/test-mbfile.sh +tests/test-mbfile.c +tests/macros.h + +Depends-on: +setlocale + +configure.ac: + +Makefile.am: +TESTS += test-mbfile.sh +check_PROGRAMS += test-mbfile +test_mbfile_LDADD = $(LDADD) $(LIBUNISTRING) $(SETLOCALE_LIB) $(MBRTOWC_LIB) $(LIBC32CONV) diff --git a/tests/test-mbfile.c b/tests/test-mbfile.c new file mode 100644 index 0000000000..0462390454 --- /dev/null +++ b/tests/test-mbfile.c @@ -0,0 +1,66 @@ +/* Test of multibyte character I/O. + Copyright (C) 2023 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* Written by Bruno Haible , 2023. */ + +#include + +#include "mbfile.h" + +#include + +#include "macros.h" + +int +main () +{ + if (setlocale (LC_ALL, "en_US.UTF-8") == NULL) + { + fprintf (stderr, "Skipping test: English Unicode locale is not installed\n"); + return 77; + } + + mb_file_t mbstdin; + mbf_init (mbstdin, stdin); + /* The input consists of 4 UTF-8 characters: + '$', U+00A5, U+20AC, U+0001F403. */ + mbf_char_t next; + + mbf_getc (next, mbstdin); + ASSERT (!mb_iseof (next)); + ASSERT (mb_len (next) == 1); + ASSERT (mb_iseq (next, 0x0024)); + + mbf_getc (next, mbstdin); + ASSERT (!mb_iseof (next)); + ASSERT (mb_len (next) == 2); + ASSERT (mb_iseq (next, 0x00A5)); + + mbf_getc (next, mbstdin); + ASSERT (!mb_iseof (next)); + ASSERT (mb_len (next) == 3); + ASSERT (mb_iseq (next, 0x20AC)); + + mbf_getc (next, mbstdin); + ASSERT (!mb_iseof (next)); + ASSERT (mb_len (next) == 4); + ASSERT (mb_iseq (next, 0x1F403)); + + mbf_getc (next, mbstdin); + ASSERT (mb_iseof (next)); + + return 0; +} diff --git a/tests/test-mbfile.sh b/tests/test-mbfile.sh new file mode 100755 index 0000000000..f2fa91239b --- /dev/null +++ b/tests/test-mbfile.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +printf '$\302\245\342\202\254\360\237\220\203' | ${CHECKER} ./test-mbfile${EXEEXT}