From 49891c106244888123557fca7fddda4fa1f96b1d Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 25 Jan 1998 19:46:25 +0000 Subject: Use most recent localedata from glibc-2.0.91. 1997-10-09 04:56 Ulrich Drepper * locales/is_IS: Update from Debian version. 1997-08-29 03:16 Ulrich Drepper * tst-fmon.c: New file. strfmon test program. * tst-fmon.sh: New file. Script to run strfmon test. * fmon-de_DE.exp: New file. Expected result of strfmon test for de_DE. * fmon-en_US.exp: New file. Expected result of strfmon test for en_US. * locales/cs_CZ: Update from author. --- localedata/tst-fmon.c | 123 ++++++++++++++++++++++++++------------------------ 1 file changed, 64 insertions(+), 59 deletions(-) (limited to 'localedata/tst-fmon.c') diff --git a/localedata/tst-fmon.c b/localedata/tst-fmon.c index 4b71469..23f3cc0 100644 --- a/localedata/tst-fmon.c +++ b/localedata/tst-fmon.c @@ -1,65 +1,70 @@ -#include +/* Testing the implementation of strfmon(3). + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Jochen Hein , 1997. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If + not, write to the Free Software Foundation, Inc., + 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #include #include - -static int -check (const char *fmt, double n) -{ - int result; - char buf[1000]; - - result = strfmon (buf, sizeof buf, fmt, n) == -1; - - printf ("\"%s\"\n", buf); - return result; -} +#include +#include +#include + +/* + test-strfmon gets called with three parameters: + - the locale + - the format-string to be used + - the actual number to be formatted + - the expected string + If the test passes, test-strfmon terminates with returncode 0, + otherwise with 1 +*/ +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 +#define EXIT_SETLOCALE 2 +#define EXIT_STRFMON 3 int -main (void) +main (int argc, char *argv[]) { - int result = 0; - - setlocale (LC_ALL, ""); - - result |= check ("%n", 123.45); - result |= check ("%n", -123.45); - result |= check ("%n", 3456.781); - - result |= check ("%11n", 123.45); - result |= check ("%11n", -123.45); - result |= check ("%11n", 3456.781); - - result |= check ("%#5n", 123.45); - result |= check ("%#5n", -123.45); - result |= check ("%#5n", 3456.781); - - result |= check ("%=*#5n", 123.45); - result |= check ("%=*#5n", -123.45); - result |= check ("%=*#5n", 3456.781); - - result |= check ("%=0#5n", 123.45); - result |= check ("%=0#5n", -123.45); - result |= check ("%=0#5n", 3456.781); - - result |= check ("%^#5n", 123.45); - result |= check ("%^#5n", -123.45); - result |= check ("%^#5n", 3456.781); - - result |= check ("%^#5.0n", 123.45); - result |= check ("%^#5.0n", -123.45); - result |= check ("%^#5.0n", 3456.781); - - result |= check ("%^#5.4n", 123.45); - result |= check ("%^#5.4n", -123.45); - result |= check ("%^#5.4n", 3456.781); - - result |= check ("%(#5n", 123.45); - result |= check ("%(#5n", -123.45); - result |= check ("%(#5n", 3456.781); - - result |= check ("%!(#5n", 123.45); - result |= check ("%!(#5n", -123.45); - result |= check ("%!(#5n", 3456.781); - - return result; + char *s = malloc (201); + double monval; + + if (setlocale (LC_MONETARY, argv[1]) == NULL) + { + perror ("setlocale"); + exit (EXIT_SETLOCALE); + } + /* This is locale-dependent! see setlocale(3) for details */ + monval = strtod (argv[3], NULL); + + if (strfmon (s, 200, argv[2], (double) atof (argv[3])) == -1) + { + perror ("strfmon"); + exit (EXIT_STRFMON); + } + + if (strcmp (s, argv[4]) != 0) + { + printf ("format: \"%s\", expected: \"%s\", got: \"%s\" => %s\n", + argv[2], argv[4], s, + strcmp (s, argv[4]) != 0 ? "false" : "correct"); + exit (EXIT_FAILURE); + } + + exit (EXIT_SUCCESS); } -- cgit v1.1