From: Bruno Haible Date: Sun, 30 Jun 2024 15:43:45 +0000 (+0200) Subject: dzprintf-gnu: Add tests. X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=e448eb14bfc259dddb9f1368bff2dff166d9be91;p=gnulib.git dzprintf-gnu: Add tests. * tests/test-dprintf-gnu.h: New file, extracted from tests/test-dprintf-gnu.c. * tests/test-dprintf-gnu.c: Include it. (test_function): Remove function. * modules/dprintf-gnu-tests (Files): Add it. * tests/test-dzprintf-gnu.c: New file, based on tests/test-dprintf-gnu.c. * tests/test-dzprintf-gnu.sh: New file, based on tests/test-dprintf-gnu.sh. * modules/dzprintf-gnu-tests: New file. --- diff --git a/ChangeLog b/ChangeLog index f8de098bca..a1c3732254 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 2024-06-30 Bruno Haible + dzprintf-gnu: Add tests. + * tests/test-dprintf-gnu.h: New file, extracted from + tests/test-dprintf-gnu.c. + * tests/test-dprintf-gnu.c: Include it. + (test_function): Remove function. + * modules/dprintf-gnu-tests (Files): Add it. + * tests/test-dzprintf-gnu.c: New file, based on + tests/test-dprintf-gnu.c. + * tests/test-dzprintf-gnu.sh: New file, based on + tests/test-dprintf-gnu.sh. + * modules/dzprintf-gnu-tests: New file. + dzprintf-gnu: New module. * modules/dzprintf-gnu: New file. diff --git a/modules/dprintf-gnu-tests b/modules/dprintf-gnu-tests index 176d64c10c..d76b14719a 100644 --- a/modules/dprintf-gnu-tests +++ b/modules/dprintf-gnu-tests @@ -1,6 +1,7 @@ Files: tests/test-dprintf-gnu.sh tests/test-dprintf-gnu.c +tests/test-dprintf-gnu.h tests/test-printf-gnu.output tests/macros.h diff --git a/modules/dzprintf-gnu-tests b/modules/dzprintf-gnu-tests new file mode 100644 index 0000000000..51d462bb47 --- /dev/null +++ b/modules/dzprintf-gnu-tests @@ -0,0 +1,15 @@ +Files: +tests/test-dzprintf-gnu.sh +tests/test-dzprintf-gnu.c +tests/test-dprintf-gnu.h +tests/test-printf-gnu.output +tests/macros.h + +Depends-on: +stdint + +configure.ac: + +Makefile.am: +TESTS += test-dzprintf-gnu.sh +check_PROGRAMS += test-dzprintf-gnu diff --git a/tests/test-dprintf-gnu.c b/tests/test-dprintf-gnu.c index 9f59c1cafd..497f262a03 100644 --- a/tests/test-dprintf-gnu.c +++ b/tests/test-dprintf-gnu.c @@ -25,69 +25,8 @@ #include "macros.h" -static void -test_function (int (*my_dprintf) (int, const char *, ...)) -{ - /* Here we don't test output that may be platform dependent. - The bulk of the tests is done as part of the 'vasnprintf-posix' module. */ - - /* Test the support of the 'B' conversion specifier for binary output of - integers. */ - - /* Zero. */ - my_dprintf (fileno (stdout), "%B %d\n", 0, 33, 44, 55); - - /* A positive number. */ - my_dprintf (fileno (stdout), "%B %d\n", 12345, 33, 44, 55); - - /* A large positive number. */ - my_dprintf (fileno (stdout), "%B %d\n", 0xFFFFFFFEU, 33, 44, 55); - - /* Width. */ - my_dprintf (fileno (stdout), "%20B %d\n", 12345, 33, 44, 55); - - /* Width given as argument. */ - my_dprintf (fileno (stdout), "%*B %d\n", 20, 12345, 33, 44, 55); - - /* Negative width given as argument (cf. FLAG_LEFT below). */ - my_dprintf (fileno (stdout), "%*B %d\n", -20, 12345, 33, 44, 55); - - /* Precision. */ - my_dprintf (fileno (stdout), "%.20B %d\n", 12345, 33, 44, 55); - - /* Zero precision and a positive number. */ - my_dprintf (fileno (stdout), "%.0B %d\n", 12345, 33, 44, 55); - - /* Zero precision and a zero number. */ - my_dprintf (fileno (stdout), "%.0B %d\n", 0, 33, 44, 55); - - /* Width and precision. */ - my_dprintf (fileno (stdout), "%25.20B %d\n", 12345, 33, 44, 55); - - /* FLAG_LEFT. */ - my_dprintf (fileno (stdout), "%-20B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with zero. */ - my_dprintf (fileno (stdout), "%#B %d\n", 0, 33, 44, 55); - - /* FLAG_ALT with a positive number. */ - my_dprintf (fileno (stdout), "%#B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with a positive number and width. */ - my_dprintf (fileno (stdout), "%#20B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with a positive number and padding. */ - my_dprintf (fileno (stdout), "%0#20B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with a positive number and precision. */ - my_dprintf (fileno (stdout), "%0#.20B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with a positive number and width and precision. */ - my_dprintf (fileno (stdout), "%#25.20B %d\n", 12345, 33, 44, 55); - - /* FLAG_ALT with a zero precision and a zero number. */ - my_dprintf (fileno (stdout), "%#.0B %d\n", 0, 33, 44, 55); -} +#define RETTYPE int +#include "test-dprintf-gnu.h" int main (int argc, char *argv[]) diff --git a/tests/test-dprintf-gnu.h b/tests/test-dprintf-gnu.h new file mode 100644 index 0000000000..deeabdaaa2 --- /dev/null +++ b/tests/test-dprintf-gnu.h @@ -0,0 +1,81 @@ +/* Test of POSIX and GNU compatible d[z]printf() function. + Copyright (C) 2007-2024 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. */ + +static void +test_function (RETTYPE (*my_dprintf) (int, const char *, ...)) +{ + /* Here we don't test output that may be platform dependent. + The bulk of the tests is done as part of the 'vasnprintf-posix' module. */ + + /* Test the support of the 'B' conversion specifier for binary output of + integers. */ + + /* Zero. */ + my_dprintf (fileno (stdout), "%B %d\n", 0, 33, 44, 55); + + /* A positive number. */ + my_dprintf (fileno (stdout), "%B %d\n", 12345, 33, 44, 55); + + /* A large positive number. */ + my_dprintf (fileno (stdout), "%B %d\n", 0xFFFFFFFEU, 33, 44, 55); + + /* Width. */ + my_dprintf (fileno (stdout), "%20B %d\n", 12345, 33, 44, 55); + + /* Width given as argument. */ + my_dprintf (fileno (stdout), "%*B %d\n", 20, 12345, 33, 44, 55); + + /* Negative width given as argument (cf. FLAG_LEFT below). */ + my_dprintf (fileno (stdout), "%*B %d\n", -20, 12345, 33, 44, 55); + + /* Precision. */ + my_dprintf (fileno (stdout), "%.20B %d\n", 12345, 33, 44, 55); + + /* Zero precision and a positive number. */ + my_dprintf (fileno (stdout), "%.0B %d\n", 12345, 33, 44, 55); + + /* Zero precision and a zero number. */ + my_dprintf (fileno (stdout), "%.0B %d\n", 0, 33, 44, 55); + + /* Width and precision. */ + my_dprintf (fileno (stdout), "%25.20B %d\n", 12345, 33, 44, 55); + + /* FLAG_LEFT. */ + my_dprintf (fileno (stdout), "%-20B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with zero. */ + my_dprintf (fileno (stdout), "%#B %d\n", 0, 33, 44, 55); + + /* FLAG_ALT with a positive number. */ + my_dprintf (fileno (stdout), "%#B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with a positive number and width. */ + my_dprintf (fileno (stdout), "%#20B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with a positive number and padding. */ + my_dprintf (fileno (stdout), "%0#20B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with a positive number and precision. */ + my_dprintf (fileno (stdout), "%0#.20B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with a positive number and width and precision. */ + my_dprintf (fileno (stdout), "%#25.20B %d\n", 12345, 33, 44, 55); + + /* FLAG_ALT with a zero precision and a zero number. */ + my_dprintf (fileno (stdout), "%#.0B %d\n", 0, 33, 44, 55); +} diff --git a/tests/test-dzprintf-gnu.c b/tests/test-dzprintf-gnu.c new file mode 100644 index 0000000000..b324bf9332 --- /dev/null +++ b/tests/test-dzprintf-gnu.c @@ -0,0 +1,36 @@ +/* Test of POSIX and GNU compatible dzprintf() function. + Copyright (C) 2007-2024 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 + +#include +#include + +#include "macros.h" + +#define RETTYPE off64_t +#include "test-dprintf-gnu.h" + +int +main (int argc, char *argv[]) +{ + test_function (dzprintf); + return test_exit_status; +} diff --git a/tests/test-dzprintf-gnu.sh b/tests/test-dzprintf-gnu.sh new file mode 100755 index 0000000000..b7753da4d0 --- /dev/null +++ b/tests/test-dzprintf-gnu.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +tmpfiles="" +trap 'rm -fr $tmpfiles' HUP INT QUIT TERM + +tmpfiles="$tmpfiles t-dzprintf-gnu.tmp t-dzprintf-gnu.out" +${CHECKER} ./test-dzprintf-gnu${EXEEXT} > t-dzprintf-gnu.tmp || exit 1 +LC_ALL=C tr -d '\r' < t-dzprintf-gnu.tmp > t-dzprintf-gnu.out || exit 1 + +: "${DIFF=diff}" +${DIFF} "${srcdir}/test-printf-gnu.output" t-dzprintf-gnu.out +result=$? + +rm -fr $tmpfiles + +exit $result