mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-08 17:22:05 +03:00
vfprintf-gnu: Add tests.
* tests/test-vfprintf-gnu.sh: New file, based on tests/test-vfprintf-posix.sh. * tests/test-vfprintf-gnu.c: New file, based on tests/test-vfprintf-posix.c. * tests/test-fprintf-gnu.h: New file, based on tests/test-vasnprintf-gnu.c. * tests/test-printf-gnu.output: New file, based on tests/test-vasnprintf-gnu.c. * modules/vfprintf-gnu-tests: New file, based on modules/vfprintf-posix-tests.
This commit is contained in:
12
ChangeLog
12
ChangeLog
@@ -1,5 +1,17 @@
|
||||
2023-03-24 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
vfprintf-gnu: Add tests.
|
||||
* tests/test-vfprintf-gnu.sh: New file, based on
|
||||
tests/test-vfprintf-posix.sh.
|
||||
* tests/test-vfprintf-gnu.c: New file, based on
|
||||
tests/test-vfprintf-posix.c.
|
||||
* tests/test-fprintf-gnu.h: New file, based on
|
||||
tests/test-vasnprintf-gnu.c.
|
||||
* tests/test-printf-gnu.output: New file, based on
|
||||
tests/test-vasnprintf-gnu.c.
|
||||
* modules/vfprintf-gnu-tests: New file, based on
|
||||
modules/vfprintf-posix-tests.
|
||||
|
||||
vfprintf-gnu: New module.
|
||||
* m4/vfprintf-posix.m4 (gl_FUNC_VFPRINTF_IS_POSIX): New macro,
|
||||
extracted from gl_FUNC_VFPRINTF_POSIX.
|
||||
|
15
modules/vfprintf-gnu-tests
Normal file
15
modules/vfprintf-gnu-tests
Normal file
@@ -0,0 +1,15 @@
|
||||
Files:
|
||||
tests/test-vfprintf-gnu.sh
|
||||
tests/test-vfprintf-gnu.c
|
||||
tests/test-fprintf-gnu.h
|
||||
tests/test-printf-gnu.output
|
||||
tests/macros.h
|
||||
|
||||
Depends-on:
|
||||
vfprintf-posix-tests
|
||||
|
||||
configure.ac:
|
||||
|
||||
Makefile.am:
|
||||
TESTS += test-vfprintf-gnu.sh
|
||||
check_PROGRAMS += test-vfprintf-gnu
|
81
tests/test-fprintf-gnu.h
Normal file
81
tests/test-fprintf-gnu.h
Normal file
@@ -0,0 +1,81 @@
|
||||
/* Test of POSIX and GNU compatible vsprintf() and sprintf() functions.
|
||||
Copyright (C) 2007-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 <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2023. */
|
||||
|
||||
static void
|
||||
test_function (int (*my_fprintf) (FILE *, 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_fprintf (stdout, "%B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* A positive number. */
|
||||
my_fprintf (stdout, "%B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* A large positive number. */
|
||||
my_fprintf (stdout, "%B %d\n", 0xFFFFFFFEU, 33, 44, 55);
|
||||
|
||||
/* Width. */
|
||||
my_fprintf (stdout, "%20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Width given as argument. */
|
||||
my_fprintf (stdout, "%*B %d\n", 20, 12345, 33, 44, 55);
|
||||
|
||||
/* Negative width given as argument (cf. FLAG_LEFT below). */
|
||||
my_fprintf (stdout, "%*B %d\n", -20, 12345, 33, 44, 55);
|
||||
|
||||
/* Precision. */
|
||||
my_fprintf (stdout, "%.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Zero precision and a positive number. */
|
||||
my_fprintf (stdout, "%.0B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Zero precision and a zero number. */
|
||||
my_fprintf (stdout, "%.0B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* Width and precision. */
|
||||
my_fprintf (stdout, "%25.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_LEFT. */
|
||||
my_fprintf (stdout, "%-20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with zero. */
|
||||
my_fprintf (stdout, "%#B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number. */
|
||||
my_fprintf (stdout, "%#B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and width. */
|
||||
my_fprintf (stdout, "%#20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and padding. */
|
||||
my_fprintf (stdout, "%0#20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and precision. */
|
||||
my_fprintf (stdout, "%0#.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and width and precision. */
|
||||
my_fprintf (stdout, "%#25.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a zero precision and a zero number. */
|
||||
my_fprintf (stdout, "%#.0B %d\n", 0, 33, 44, 55);
|
||||
}
|
18
tests/test-printf-gnu.output
Normal file
18
tests/test-printf-gnu.output
Normal file
@@ -0,0 +1,18 @@
|
||||
0 33
|
||||
11000000111001 33
|
||||
11111111111111111111111111111110 33
|
||||
11000000111001 33
|
||||
11000000111001 33
|
||||
11000000111001 33
|
||||
00000011000000111001 33
|
||||
11000000111001 33
|
||||
33
|
||||
00000011000000111001 33
|
||||
11000000111001 33
|
||||
0 33
|
||||
0B11000000111001 33
|
||||
0B11000000111001 33
|
||||
0B000011000000111001 33
|
||||
0B00000011000000111001 33
|
||||
0B00000011000000111001 33
|
||||
33
|
48
tests/test-vfprintf-gnu.c
Normal file
48
tests/test-vfprintf-gnu.c
Normal file
@@ -0,0 +1,48 @@
|
||||
/* Test of POSIX and GNU compatible vfprintf() function.
|
||||
Copyright (C) 2007-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 <https://www.gnu.org/licenses/>. */
|
||||
|
||||
/* Written by Bruno Haible <bruno@clisp.org>, 2007. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "macros.h"
|
||||
|
||||
#include "test-fprintf-gnu.h"
|
||||
|
||||
static int
|
||||
my_fprintf (FILE *fp, const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
int ret;
|
||||
|
||||
va_start (args, format);
|
||||
ret = vfprintf (fp, format, args);
|
||||
va_end (args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
test_function (my_fprintf);
|
||||
return 0;
|
||||
}
|
16
tests/test-vfprintf-gnu.sh
Executable file
16
tests/test-vfprintf-gnu.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
tmpfiles=""
|
||||
trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
|
||||
|
||||
tmpfiles="$tmpfiles t-vfprintf-gnu.tmp t-vfprintf-gnu.out"
|
||||
${CHECKER} ./test-vfprintf-gnu${EXEEXT} > t-vfprintf-gnu.tmp || exit 1
|
||||
LC_ALL=C tr -d '\r' < t-vfprintf-gnu.tmp > t-vfprintf-gnu.out || exit 1
|
||||
|
||||
: "${DIFF=diff}"
|
||||
${DIFF} "${srcdir}/test-printf-gnu.output" t-vfprintf-gnu.out
|
||||
result=$?
|
||||
|
||||
rm -fr $tmpfiles
|
||||
|
||||
exit $result
|
Reference in New Issue
Block a user