mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-08 17:22:05 +03:00
vprintf-gnu: Add tests.
* tests/test-vprintf-gnu.sh: New file, based on tests/test-vprintf-posix.sh. * tests/test-vprintf-gnu.c: New file, based on tests/test-vprintf-posix.c. * tests/test-printf-gnu.h: New file, based on tests/test-vasnprintf-gnu.c. * modules/vprintf-gnu-tests: New file, based on modules/vprintf-posix-tests.
This commit is contained in:
10
ChangeLog
10
ChangeLog
@@ -1,5 +1,15 @@
|
||||
2023-03-24 Bruno Haible <bruno@clisp.org>
|
||||
|
||||
vprintf-gnu: Add tests.
|
||||
* tests/test-vprintf-gnu.sh: New file, based on
|
||||
tests/test-vprintf-posix.sh.
|
||||
* tests/test-vprintf-gnu.c: New file, based on
|
||||
tests/test-vprintf-posix.c.
|
||||
* tests/test-printf-gnu.h: New file, based on
|
||||
tests/test-vasnprintf-gnu.c.
|
||||
* modules/vprintf-gnu-tests: New file, based on
|
||||
modules/vprintf-posix-tests.
|
||||
|
||||
vprintf-gnu: New module.
|
||||
* m4/vprintf-posix.m4 (gl_FUNC_VPRINTF_IS_POSIX): New macro.
|
||||
(gl_FUNC_VPRINTF_POSIX): Require it. Don't require
|
||||
|
15
modules/vprintf-gnu-tests
Normal file
15
modules/vprintf-gnu-tests
Normal file
@@ -0,0 +1,15 @@
|
||||
Files:
|
||||
tests/test-vprintf-gnu.sh
|
||||
tests/test-vprintf-gnu.c
|
||||
tests/test-printf-gnu.h
|
||||
tests/test-printf-gnu.output
|
||||
tests/macros.h
|
||||
|
||||
Depends-on:
|
||||
vprintf-posix-tests
|
||||
|
||||
configure.ac:
|
||||
|
||||
Makefile.am:
|
||||
TESTS += test-vprintf-gnu.sh
|
||||
check_PROGRAMS += test-vprintf-gnu
|
81
tests/test-printf-gnu.h
Normal file
81
tests/test-printf-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_printf) (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_printf ("%B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* A positive number. */
|
||||
my_printf ("%B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* A large positive number. */
|
||||
my_printf ("%B %d\n", 0xFFFFFFFEU, 33, 44, 55);
|
||||
|
||||
/* Width. */
|
||||
my_printf ("%20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Width given as argument. */
|
||||
my_printf ("%*B %d\n", 20, 12345, 33, 44, 55);
|
||||
|
||||
/* Negative width given as argument (cf. FLAG_LEFT below). */
|
||||
my_printf ("%*B %d\n", -20, 12345, 33, 44, 55);
|
||||
|
||||
/* Precision. */
|
||||
my_printf ("%.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Zero precision and a positive number. */
|
||||
my_printf ("%.0B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* Zero precision and a zero number. */
|
||||
my_printf ("%.0B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* Width and precision. */
|
||||
my_printf ("%25.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_LEFT. */
|
||||
my_printf ("%-20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with zero. */
|
||||
my_printf ("%#B %d\n", 0, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number. */
|
||||
my_printf ("%#B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and width. */
|
||||
my_printf ("%#20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and padding. */
|
||||
my_printf ("%0#20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and precision. */
|
||||
my_printf ("%0#.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a positive number and width and precision. */
|
||||
my_printf ("%#25.20B %d\n", 12345, 33, 44, 55);
|
||||
|
||||
/* FLAG_ALT with a zero precision and a zero number. */
|
||||
my_printf ("%#.0B %d\n", 0, 33, 44, 55);
|
||||
}
|
48
tests/test-vprintf-gnu.c
Normal file
48
tests/test-vprintf-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-printf-gnu.h"
|
||||
|
||||
static int
|
||||
my_printf (const char *format, ...)
|
||||
{
|
||||
va_list args;
|
||||
int ret;
|
||||
|
||||
va_start (args, format);
|
||||
ret = vprintf (format, args);
|
||||
va_end (args);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
test_function (my_printf);
|
||||
return 0;
|
||||
}
|
16
tests/test-vprintf-gnu.sh
Executable file
16
tests/test-vprintf-gnu.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
tmpfiles=""
|
||||
trap 'rm -fr $tmpfiles' HUP INT QUIT TERM
|
||||
|
||||
tmpfiles="$tmpfiles t-vprintf-gnu.tmp t-vprintf-gnu.out"
|
||||
${CHECKER} ./test-vprintf-gnu${EXEEXT} > t-vprintf-gnu.tmp || exit 1
|
||||
LC_ALL=C tr -d '\r' < t-vprintf-gnu.tmp > t-vprintf-gnu.out || exit 1
|
||||
|
||||
: "${DIFF=diff}"
|
||||
${DIFF} "${srcdir}/test-printf-gnu.output" t-vprintf-gnu.out
|
||||
result=$?
|
||||
|
||||
rm -fr $tmpfiles
|
||||
|
||||
exit $result
|
Reference in New Issue
Block a user