Mercurial > hg > octave-nkf > gnulib-hg
annotate tests/test-snprintf-posix.h @ 8803:6c1d98929550
Work around lack of support of grouping flag.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sun, 06 May 2007 15:29:04 +0000 |
parents | 9ea5590b49d1 |
children | 6ce313658b4d |
rev | line source |
---|---|
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1 /* Test of POSIX compatible vsnprintf() and snprintf() functions. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
2 Copyright (C) 2007 Free Software Foundation, Inc. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
3 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
4 This program is free software; you can redistribute it and/or modify |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
5 it under the terms of the GNU General Public License as published by |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
6 the Free Software Foundation; either version 2, or (at your option) |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
7 any later version. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
8 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
9 This program is distributed in the hope that it will be useful, |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
10 but WITHOUT ANY WARRANTY; without even the implied warranty of |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
12 GNU General Public License for more details. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
13 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
14 You should have received a copy of the GNU General Public License |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
15 along with this program; if not, write to the Free Software Foundation, |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
17 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
18 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
19 |
8543
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
20 /* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */ |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
21 #ifdef __DECC |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
22 static double |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
23 NaN () |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
24 { |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
25 static double zero = 0.0; |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
26 return zero / zero; |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
27 } |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
28 #else |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
29 # define NaN() (0.0 / 0.0) |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
30 #endif |
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
31 |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
32 static void |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
33 test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
34 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
35 char buf[8]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
36 int size; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
37 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
38 /* Test return value convention. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
39 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
40 for (size = 0; size <= 8; size++) |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
41 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
42 int retval; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
43 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
44 memcpy (buf, "DEADBEEF", 8); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
45 retval = my_snprintf (buf, size, "%d", 12345); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
46 ASSERT (retval == 5); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
47 if (size < 6) |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
48 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
49 if (size > 0) |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
50 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
51 ASSERT (memcmp (buf, "12345", size - 1) == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
52 ASSERT (buf[size - 1] == '\0'); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
53 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
54 ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
55 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
56 else |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
57 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
58 ASSERT (memcmp (buf, "12345\0EF", 8) == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
59 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
60 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
61 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
62 /* Test support of size specifiers as in C99. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
63 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
64 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
65 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
66 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
67 my_snprintf (result, sizeof (result), "%ju %d", (uintmax_t) 12345671, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
68 ASSERT (strcmp (result, "12345671 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
69 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
70 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
71 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
72 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
73 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
74 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
75 my_snprintf (result, sizeof (result), "%zu %d", (size_t) 12345672, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
76 ASSERT (strcmp (result, "12345672 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
77 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
78 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
79 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
80 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
81 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
82 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
83 my_snprintf (result, sizeof (result), "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
84 ASSERT (strcmp (result, "12345673 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
85 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
86 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
87 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
88 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
89 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
90 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
91 my_snprintf (result, sizeof (result), "%Lg %d", (long double) 1.5, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
92 ASSERT (strcmp (result, "1.5 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
93 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
94 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
95 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
96 /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
97 output of floating-point numbers. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
98 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
99 { /* A positive number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
100 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
101 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
102 my_snprintf (result, sizeof (result), "%a %d", 3.1416015625, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
103 ASSERT (strcmp (result, "0x1.922p+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
104 || strcmp (result, "0x3.244p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
105 || strcmp (result, "0x6.488p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
106 || strcmp (result, "0xc.91p-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
107 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
108 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
109 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
110 { /* A negative number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
111 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
112 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
113 my_snprintf (result, sizeof (result), "%A %d", -3.1416015625, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
114 ASSERT (strcmp (result, "-0X1.922P+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
115 || strcmp (result, "-0X3.244P+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
116 || strcmp (result, "-0X6.488P-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
117 || strcmp (result, "-0XC.91P-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
118 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
119 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
120 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
121 { /* Positive zero. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
122 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
123 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
124 my_snprintf (result, sizeof (result), "%a %d", 0.0, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
125 ASSERT (strcmp (result, "0x0p+0 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
126 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
127 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
128 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
129 { /* Negative zero. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
130 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
131 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
132 my_snprintf (result, sizeof (result), "%a %d", -0.0, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
133 ASSERT (strcmp (result, "-0x0p+0 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
134 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
135 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
136 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
137 { /* Positive infinity. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
138 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
139 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
140 my_snprintf (result, sizeof (result), "%a %d", 1.0 / 0.0, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
141 ASSERT (strcmp (result, "inf 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
142 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
143 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
144 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
145 { /* Negative infinity. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
146 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
147 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
148 my_snprintf (result, sizeof (result), "%a %d", -1.0 / 0.0, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
149 ASSERT (strcmp (result, "-inf 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
150 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
151 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
152 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
153 { /* NaN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
154 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
155 int retval = |
8543
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
156 my_snprintf (result, sizeof (result), "%a %d", NaN (), 33, 44, 55); |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
157 ASSERT (strcmp (result, "nan 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
158 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
159 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
160 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
161 { /* Rounding near the decimal point. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
162 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
163 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
164 my_snprintf (result, sizeof (result), "%.0a %d", 1.5, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
165 ASSERT (strcmp (result, "0x2p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
166 || strcmp (result, "0x3p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
167 || strcmp (result, "0x6p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
168 || strcmp (result, "0xcp-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
169 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
170 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
171 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
172 { /* Rounding with precision 0. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
173 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
174 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
175 my_snprintf (result, sizeof (result), "%.0a %d", 1.51, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
176 ASSERT (strcmp (result, "0x2p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
177 || strcmp (result, "0x3p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
178 || strcmp (result, "0x6p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
179 || strcmp (result, "0xcp-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
180 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
181 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
182 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
183 { /* Rounding with precision 1. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
184 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
185 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
186 my_snprintf (result, sizeof (result), "%.1a %d", 1.51, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
187 ASSERT (strcmp (result, "0x1.8p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
188 || strcmp (result, "0x3.0p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
189 || strcmp (result, "0x6.1p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
190 || strcmp (result, "0xc.1p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
191 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
192 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
193 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
194 { /* Rounding with precision 2. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
195 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
196 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
197 my_snprintf (result, sizeof (result), "%.2a %d", 1.51, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
198 ASSERT (strcmp (result, "0x1.83p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
199 || strcmp (result, "0x3.05p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
200 || strcmp (result, "0x6.0ap-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
201 || strcmp (result, "0xc.14p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
202 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
203 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
204 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
205 { /* Rounding with precision 3. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
206 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
207 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
208 my_snprintf (result, sizeof (result), "%.3a %d", 1.51, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
209 ASSERT (strcmp (result, "0x1.829p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
210 || strcmp (result, "0x3.052p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
211 || strcmp (result, "0x6.0a4p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
212 || strcmp (result, "0xc.148p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
213 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
214 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
215 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
216 { /* Rounding can turn a ...FFF into a ...000. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
217 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
218 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
219 my_snprintf (result, sizeof (result), "%.3a %d", 1.49999, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
220 ASSERT (strcmp (result, "0x1.800p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
221 || strcmp (result, "0x3.000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
222 || strcmp (result, "0x6.000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
223 || strcmp (result, "0xc.000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
224 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
225 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
226 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
227 { /* Rounding can turn a ...FFF into a ...000. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
228 This shows a MacOS X 10.3.9 (Darwin 7.9) bug. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
229 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
230 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
231 my_snprintf (result, sizeof (result), "%.1a %d", 1.999, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
232 ASSERT (strcmp (result, "0x1.0p+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
233 || strcmp (result, "0x2.0p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
234 || strcmp (result, "0x4.0p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
235 || strcmp (result, "0x8.0p-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
236 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
237 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
238 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
239 { /* Width. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
240 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
241 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
242 my_snprintf (result, sizeof (result), "%10a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
243 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
244 || strcmp (result, " 0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
245 || strcmp (result, " 0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
246 || strcmp (result, " 0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
247 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
248 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
249 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
250 { /* Small precision. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
251 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
252 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
253 my_snprintf (result, sizeof (result), "%.10a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
254 ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
255 || strcmp (result, "0x3.8000000000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
256 || strcmp (result, "0x7.0000000000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
257 || strcmp (result, "0xe.0000000000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
258 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
259 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
260 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
261 { /* Large precision. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
262 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
263 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
264 my_snprintf (result, sizeof (result), "%.50a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
265 ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
266 || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
267 || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
268 || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
269 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
270 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
271 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
272 { /* FLAG_LEFT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
273 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
274 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
275 my_snprintf (result, sizeof (result), "%-10a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
276 ASSERT (strcmp (result, "0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
277 || strcmp (result, "0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
278 || strcmp (result, "0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
279 || strcmp (result, "0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
280 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
281 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
282 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
283 { /* FLAG_SHOWSIGN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
284 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
285 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
286 my_snprintf (result, sizeof (result), "%+a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
287 ASSERT (strcmp (result, "+0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
288 || strcmp (result, "+0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
289 || strcmp (result, "+0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
290 || strcmp (result, "+0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
291 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
292 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
293 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
294 { /* FLAG_SPACE. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
295 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
296 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
297 my_snprintf (result, sizeof (result), "% a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
298 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
299 || strcmp (result, " 0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
300 || strcmp (result, " 0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
301 || strcmp (result, " 0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
302 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
303 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
304 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
305 { /* FLAG_ALT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
306 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
307 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
308 my_snprintf (result, sizeof (result), "%#a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
309 ASSERT (strcmp (result, "0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
310 || strcmp (result, "0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
311 || strcmp (result, "0x7.p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
312 || strcmp (result, "0xe.p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
313 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
314 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
315 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
316 { /* FLAG_ALT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
317 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
318 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
319 my_snprintf (result, sizeof (result), "%#a %d", 1.0, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
320 ASSERT (strcmp (result, "0x1.p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
321 || strcmp (result, "0x2.p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
322 || strcmp (result, "0x4.p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
323 || strcmp (result, "0x8.p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
324 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
325 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
326 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
327 { /* FLAG_ZERO with finite number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
328 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
329 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
330 my_snprintf (result, sizeof (result), "%010a %d", 1.75, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
331 ASSERT (strcmp (result, "0x001.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
332 || strcmp (result, "0x003.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
333 || strcmp (result, "0x00007p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
334 || strcmp (result, "0x0000ep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
335 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
336 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
337 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
338 { /* FLAG_ZERO with infinite number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
339 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
340 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
341 my_snprintf (result, sizeof (result), "%010a %d", 1.0 / 0.0, 33, 44, 55); |
8662
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
342 /* "0000000inf 33" is not a valid result; see |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
343 <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
344 ASSERT (strcmp (result, " inf 33") == 0); |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
345 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
346 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
347 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
348 { /* FLAG_ZERO with NaN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
349 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
350 int retval = |
8543
e1fdf02d5cdc
Work around a DEC C compiler bug.
Bruno Haible <bruno@clisp.org>
parents:
8364
diff
changeset
|
351 my_snprintf (result, sizeof (result), "%010a %d", NaN (), 33, 44, 55); |
8662
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
352 /* "0000000nan 33" is not a valid result; see |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
353 <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
354 ASSERT (strcmp (result, " nan 33") == 0); |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
355 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
356 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
357 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
358 { /* A positive number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
359 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
360 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
361 my_snprintf (result, sizeof (result), "%La %d", 3.1416015625L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
362 ASSERT (strcmp (result, "0x1.922p+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
363 || strcmp (result, "0x3.244p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
364 || strcmp (result, "0x6.488p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
365 || strcmp (result, "0xc.91p-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
366 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
367 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
368 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
369 { /* A negative number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
370 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
371 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
372 my_snprintf (result, sizeof (result), "%LA %d", -3.1416015625L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
373 ASSERT (strcmp (result, "-0X1.922P+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
374 || strcmp (result, "-0X3.244P+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
375 || strcmp (result, "-0X6.488P-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
376 || strcmp (result, "-0XC.91P-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
377 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
378 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
379 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
380 { /* Positive zero. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
381 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
382 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
383 my_snprintf (result, sizeof (result), "%La %d", 0.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
384 ASSERT (strcmp (result, "0x0p+0 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
385 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
386 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
387 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
388 { /* Negative zero. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
389 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
390 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
391 my_snprintf (result, sizeof (result), "%La %d", -0.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
392 ASSERT (strcmp (result, "-0x0p+0 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
393 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
394 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
395 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
396 { /* Positive infinity. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
397 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
398 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
399 my_snprintf (result, sizeof (result), "%La %d", 1.0L / 0.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
400 ASSERT (strcmp (result, "inf 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
401 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
402 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
403 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
404 { /* Negative infinity. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
405 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
406 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
407 my_snprintf (result, sizeof (result), "%La %d", -1.0L / 0.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
408 ASSERT (strcmp (result, "-inf 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
409 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
410 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
411 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
412 { /* NaN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
413 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
414 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
415 my_snprintf (result, sizeof (result), "%La %d", 0.0L / 0.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
416 ASSERT (strcmp (result, "nan 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
417 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
418 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
419 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
420 { /* Rounding near the decimal point. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
421 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
422 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
423 my_snprintf (result, sizeof (result), "%.0La %d", 1.5L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
424 ASSERT (strcmp (result, "0x2p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
425 || strcmp (result, "0x3p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
426 || strcmp (result, "0x6p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
427 || strcmp (result, "0xcp-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
428 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
429 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
430 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
431 { /* Rounding with precision 0. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
432 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
433 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
434 my_snprintf (result, sizeof (result), "%.0La %d", 1.51L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
435 ASSERT (strcmp (result, "0x2p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
436 || strcmp (result, "0x3p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
437 || strcmp (result, "0x6p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
438 || strcmp (result, "0xcp-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
439 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
440 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
441 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
442 { /* Rounding with precision 1. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
443 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
444 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
445 my_snprintf (result, sizeof (result), "%.1La %d", 1.51L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
446 ASSERT (strcmp (result, "0x1.8p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
447 || strcmp (result, "0x3.0p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
448 || strcmp (result, "0x6.1p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
449 || strcmp (result, "0xc.1p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
450 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
451 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
452 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
453 { /* Rounding with precision 2. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
454 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
455 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
456 my_snprintf (result, sizeof (result), "%.2La %d", 1.51L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
457 ASSERT (strcmp (result, "0x1.83p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
458 || strcmp (result, "0x3.05p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
459 || strcmp (result, "0x6.0ap-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
460 || strcmp (result, "0xc.14p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
461 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
462 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
463 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
464 { /* Rounding with precision 3. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
465 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
466 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
467 my_snprintf (result, sizeof (result), "%.3La %d", 1.51L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
468 ASSERT (strcmp (result, "0x1.829p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
469 || strcmp (result, "0x3.052p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
470 || strcmp (result, "0x6.0a4p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
471 || strcmp (result, "0xc.148p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
472 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
473 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
474 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
475 { /* Rounding can turn a ...FFF into a ...000. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
476 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
477 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
478 my_snprintf (result, sizeof (result), "%.3La %d", 1.49999L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
479 ASSERT (strcmp (result, "0x1.800p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
480 || strcmp (result, "0x3.000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
481 || strcmp (result, "0x6.000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
482 || strcmp (result, "0xc.000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
483 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
484 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
485 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
486 { /* Rounding can turn a ...FFF into a ...000. |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
487 This shows a MacOS X 10.3.9 (Darwin 7.9) bug and a |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
488 glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
489 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
490 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
491 my_snprintf (result, sizeof (result), "%.1La %d", 1.999L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
492 ASSERT (strcmp (result, "0x1.0p+1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
493 || strcmp (result, "0x2.0p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
494 || strcmp (result, "0x4.0p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
495 || strcmp (result, "0x8.0p-2 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
496 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
497 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
498 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
499 { /* Width. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
500 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
501 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
502 my_snprintf (result, sizeof (result), "%10La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
503 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
504 || strcmp (result, " 0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
505 || strcmp (result, " 0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
506 || strcmp (result, " 0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
507 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
508 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
509 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
510 { /* Small precision. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
511 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
512 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
513 my_snprintf (result, sizeof (result), "%.10La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
514 ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
515 || strcmp (result, "0x3.8000000000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
516 || strcmp (result, "0x7.0000000000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
517 || strcmp (result, "0xe.0000000000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
518 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
519 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
520 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
521 { /* Large precision. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
522 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
523 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
524 my_snprintf (result, sizeof (result), "%.50La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
525 ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
526 || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
527 || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
528 || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
529 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
530 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
531 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
532 { /* FLAG_LEFT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
533 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
534 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
535 my_snprintf (result, sizeof (result), "%-10La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
536 ASSERT (strcmp (result, "0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
537 || strcmp (result, "0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
538 || strcmp (result, "0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
539 || strcmp (result, "0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
540 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
541 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
542 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
543 { /* FLAG_SHOWSIGN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
544 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
545 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
546 my_snprintf (result, sizeof (result), "%+La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
547 ASSERT (strcmp (result, "+0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
548 || strcmp (result, "+0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
549 || strcmp (result, "+0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
550 || strcmp (result, "+0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
551 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
552 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
553 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
554 { /* FLAG_SPACE. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
555 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
556 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
557 my_snprintf (result, sizeof (result), "% La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
558 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
559 || strcmp (result, " 0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
560 || strcmp (result, " 0x7p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
561 || strcmp (result, " 0xep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
562 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
563 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
564 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
565 { /* FLAG_ALT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
566 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
567 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
568 my_snprintf (result, sizeof (result), "%#La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
569 ASSERT (strcmp (result, "0x1.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
570 || strcmp (result, "0x3.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
571 || strcmp (result, "0x7.p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
572 || strcmp (result, "0xe.p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
573 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
574 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
575 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
576 { /* FLAG_ALT. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
577 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
578 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
579 my_snprintf (result, sizeof (result), "%#La %d", 1.0L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
580 ASSERT (strcmp (result, "0x1.p+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
581 || strcmp (result, "0x2.p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
582 || strcmp (result, "0x4.p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
583 || strcmp (result, "0x8.p-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
584 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
585 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
586 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
587 { /* FLAG_ZERO with finite number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
588 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
589 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
590 my_snprintf (result, sizeof (result), "%010La %d", 1.75L, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
591 ASSERT (strcmp (result, "0x001.cp+0 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
592 || strcmp (result, "0x003.8p-1 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
593 || strcmp (result, "0x00007p-2 33") == 0 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
594 || strcmp (result, "0x0000ep-3 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
595 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
596 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
597 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
598 { /* FLAG_ZERO with infinite number. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
599 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
600 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
601 my_snprintf (result, sizeof (result), "%010La %d", 1.0L / 0.0L, 33, 44, 55); |
8662
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
602 /* "0000000inf 33" is not a valid result; see |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
603 <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
604 ASSERT (strcmp (result, " inf 33") == 0); |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
605 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
606 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
607 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
608 { /* FLAG_ZERO with NaN. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
609 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
610 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
611 my_snprintf (result, sizeof (result), "%010La %d", 0.0L / 0.0L, 33, 44, 55); |
8662
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
612 /* "0000000nan 33" is not a valid result; see |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
613 <http://lists.gnu.org/archive/html/bug-gnulib/2007-04/msg00107.html> */ |
023aa5c883a7
Guard against FreeBSD 6.1 bug.
Bruno Haible <bruno@clisp.org>
parents:
8648
diff
changeset
|
614 ASSERT (strcmp (result, " nan 33") == 0); |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
615 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
616 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
617 |
8684
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
618 /* Test the support of the %f format directive. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
619 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
620 { /* A positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
621 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
622 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
623 my_snprintf (result, sizeof (result), "%f %d", 12.75, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
624 ASSERT (strcmp (result, "12.750000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
625 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
626 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
627 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
628 { /* A larger positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
629 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
630 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
631 my_snprintf (result, sizeof (result), "%f %d", 1234567.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
632 ASSERT (strcmp (result, "1234567.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
633 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
634 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
635 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
636 { /* A negative number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
637 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
638 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
639 my_snprintf (result, sizeof (result), "%f %d", -0.03125, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
640 ASSERT (strcmp (result, "-0.031250 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
641 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
642 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
643 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
644 { /* Positive zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
645 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
646 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
647 my_snprintf (result, sizeof (result), "%f %d", 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
648 ASSERT (strcmp (result, "0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
649 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
650 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
651 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
652 { /* Negative zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
653 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
654 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
655 my_snprintf (result, sizeof (result), "%f %d", -0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
656 ASSERT (strcmp (result, "-0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
657 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
658 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
659 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
660 { /* Positive infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
661 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
662 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
663 my_snprintf (result, sizeof (result), "%f %d", 1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
664 ASSERT (strcmp (result, "inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
665 || strcmp (result, "infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
666 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
667 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
668 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
669 { /* Negative infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
670 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
671 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
672 my_snprintf (result, sizeof (result), "%f %d", -1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
673 ASSERT (strcmp (result, "-inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
674 || strcmp (result, "-infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
675 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
676 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
677 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
678 { /* NaN. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
679 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
680 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
681 my_snprintf (result, sizeof (result), "%f %d", NaN (), 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
682 ASSERT (strcmp (result, "nan 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
683 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
684 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
685 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
686 { /* FLAG_ZERO. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
687 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
688 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
689 my_snprintf (result, sizeof (result), "%015f %d", 1234.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
690 ASSERT (strcmp (result, "00001234.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
691 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
692 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
693 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
694 { /* FLAG_ZERO with infinite number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
695 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
696 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
697 my_snprintf (result, sizeof (result), "%015f %d", -1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
698 ASSERT (strcmp (result, " -inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
699 || strcmp (result, " -infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
700 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
701 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
702 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
703 { /* Precision. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
704 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
705 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
706 my_snprintf (result, sizeof (result), "%.f %d", 1234.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
707 ASSERT (strcmp (result, "1234 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
708 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
709 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
710 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
711 { /* A positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
712 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
713 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
714 my_snprintf (result, sizeof (result), "%Lf %d", 12.75L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
715 ASSERT (strcmp (result, "12.750000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
716 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
717 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
718 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
719 { /* A larger positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
720 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
721 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
722 my_snprintf (result, sizeof (result), "%Lf %d", 1234567.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
723 ASSERT (strcmp (result, "1234567.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
724 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
725 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
726 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
727 { /* A negative number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
728 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
729 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
730 my_snprintf (result, sizeof (result), "%Lf %d", -0.03125L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
731 ASSERT (strcmp (result, "-0.031250 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
732 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
733 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
734 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
735 { /* Positive zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
736 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
737 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
738 my_snprintf (result, sizeof (result), "%Lf %d", 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
739 ASSERT (strcmp (result, "0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
740 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
741 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
742 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
743 { /* Negative zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
744 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
745 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
746 my_snprintf (result, sizeof (result), "%Lf %d", -0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
747 ASSERT (strcmp (result, "-0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
748 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
749 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
750 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
751 { /* Positive infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
752 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
753 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
754 my_snprintf (result, sizeof (result), "%Lf %d", 1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
755 ASSERT (strcmp (result, "inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
756 || strcmp (result, "infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
757 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
758 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
759 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
760 { /* Negative infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
761 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
762 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
763 my_snprintf (result, sizeof (result), "%Lf %d", -1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
764 ASSERT (strcmp (result, "-inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
765 || strcmp (result, "-infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
766 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
767 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
768 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
769 { /* NaN. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
770 static long double zero = 0.0L; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
771 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
772 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
773 my_snprintf (result, sizeof (result), "%Lf %d", zero / zero, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
774 ASSERT (strcmp (result, "nan 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
775 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
776 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
777 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
778 { /* FLAG_ZERO. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
779 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
780 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
781 my_snprintf (result, sizeof (result), "%015Lf %d", 1234.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
782 ASSERT (strcmp (result, "00001234.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
783 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
784 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
785 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
786 { /* FLAG_ZERO with infinite number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
787 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
788 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
789 my_snprintf (result, sizeof (result), "%015Lf %d", -1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
790 ASSERT (strcmp (result, " -inf 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
791 || strcmp (result, " -infinity 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
792 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
793 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
794 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
795 { /* Precision. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
796 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
797 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
798 my_snprintf (result, sizeof (result), "%.Lf %d", 1234.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
799 ASSERT (strcmp (result, "1234 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
800 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
801 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
802 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
803 /* Test the support of the %F format directive. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
804 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
805 { /* A positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
806 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
807 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
808 my_snprintf (result, sizeof (result), "%F %d", 12.75, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
809 ASSERT (strcmp (result, "12.750000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
810 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
811 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
812 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
813 { /* A larger positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
814 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
815 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
816 my_snprintf (result, sizeof (result), "%F %d", 1234567.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
817 ASSERT (strcmp (result, "1234567.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
818 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
819 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
820 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
821 { /* A negative number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
822 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
823 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
824 my_snprintf (result, sizeof (result), "%F %d", -0.03125, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
825 ASSERT (strcmp (result, "-0.031250 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
826 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
827 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
828 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
829 { /* Positive zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
830 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
831 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
832 my_snprintf (result, sizeof (result), "%F %d", 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
833 ASSERT (strcmp (result, "0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
834 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
835 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
836 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
837 { /* Negative zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
838 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
839 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
840 my_snprintf (result, sizeof (result), "%F %d", -0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
841 ASSERT (strcmp (result, "-0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
842 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
843 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
844 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
845 { /* Positive infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
846 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
847 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
848 my_snprintf (result, sizeof (result), "%F %d", 1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
849 ASSERT (strcmp (result, "INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
850 || strcmp (result, "INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
851 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
852 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
853 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
854 { /* Negative infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
855 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
856 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
857 my_snprintf (result, sizeof (result), "%F %d", -1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
858 ASSERT (strcmp (result, "-INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
859 || strcmp (result, "-INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
860 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
861 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
862 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
863 { /* NaN. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
864 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
865 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
866 my_snprintf (result, sizeof (result), "%F %d", NaN (), 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
867 ASSERT (strcmp (result, "NAN 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
868 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
869 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
870 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
871 { /* FLAG_ZERO. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
872 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
873 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
874 my_snprintf (result, sizeof (result), "%015F %d", 1234.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
875 ASSERT (strcmp (result, "00001234.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
876 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
877 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
878 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
879 { /* FLAG_ZERO with infinite number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
880 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
881 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
882 my_snprintf (result, sizeof (result), "%015F %d", -1.0 / 0.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
883 ASSERT (strcmp (result, " -INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
884 || strcmp (result, " -INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
885 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
886 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
887 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
888 { /* Precision. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
889 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
890 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
891 my_snprintf (result, sizeof (result), "%.F %d", 1234.0, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
892 ASSERT (strcmp (result, "1234 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
893 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
894 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
895 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
896 { /* A positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
897 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
898 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
899 my_snprintf (result, sizeof (result), "%LF %d", 12.75L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
900 ASSERT (strcmp (result, "12.750000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
901 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
902 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
903 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
904 { /* A larger positive number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
905 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
906 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
907 my_snprintf (result, sizeof (result), "%LF %d", 1234567.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
908 ASSERT (strcmp (result, "1234567.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
909 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
910 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
911 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
912 { /* A negative number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
913 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
914 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
915 my_snprintf (result, sizeof (result), "%LF %d", -0.03125L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
916 ASSERT (strcmp (result, "-0.031250 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
917 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
918 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
919 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
920 { /* Positive zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
921 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
922 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
923 my_snprintf (result, sizeof (result), "%LF %d", 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
924 ASSERT (strcmp (result, "0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
925 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
926 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
927 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
928 { /* Negative zero. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
929 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
930 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
931 my_snprintf (result, sizeof (result), "%LF %d", -0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
932 ASSERT (strcmp (result, "-0.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
933 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
934 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
935 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
936 { /* Positive infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
937 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
938 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
939 my_snprintf (result, sizeof (result), "%LF %d", 1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
940 ASSERT (strcmp (result, "INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
941 || strcmp (result, "INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
942 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
943 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
944 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
945 { /* Negative infinity. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
946 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
947 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
948 my_snprintf (result, sizeof (result), "%LF %d", -1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
949 ASSERT (strcmp (result, "-INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
950 || strcmp (result, "-INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
951 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
952 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
953 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
954 { /* NaN. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
955 static long double zero = 0.0L; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
956 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
957 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
958 my_snprintf (result, sizeof (result), "%LF %d", zero / zero, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
959 ASSERT (strcmp (result, "NAN 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
960 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
961 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
962 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
963 { /* FLAG_ZERO. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
964 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
965 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
966 my_snprintf (result, sizeof (result), "%015LF %d", 1234.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
967 ASSERT (strcmp (result, "00001234.000000 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
968 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
969 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
970 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
971 { /* FLAG_ZERO with infinite number. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
972 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
973 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
974 my_snprintf (result, sizeof (result), "%015LF %d", -1.0L / 0.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
975 ASSERT (strcmp (result, " -INF 33") == 0 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
976 || strcmp (result, " -INFINITY 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
977 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
978 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
979 |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
980 { /* Precision. */ |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
981 char result[100]; |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
982 int retval = |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
983 my_snprintf (result, sizeof (result), "%.LF %d", 1234.0L, 33, 44, 55); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
984 ASSERT (strcmp (result, "1234 33") == 0); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
985 ASSERT (retval == strlen (result)); |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
986 } |
9ea5590b49d1
Add tests for %f and %F directives.
Bruno Haible <bruno@clisp.org>
parents:
8662
diff
changeset
|
987 |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
988 /* Test the support of the %n format directive. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
989 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
990 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
991 int count = -1; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
992 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
993 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
994 my_snprintf (result, sizeof (result), "%d %n", 123, &count, 33, 44, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
995 ASSERT (strcmp (result, "123 ") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
996 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
997 ASSERT (count == 4); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
998 } |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
999 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1000 /* Test the support of the POSIX/XSI format strings with positions. */ |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1001 |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1002 { |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1003 char result[100]; |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1004 int retval = |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1005 my_snprintf (result, sizeof (result), "%2$d %1$d", 33, 55); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1006 ASSERT (strcmp (result, "55 33") == 0); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1007 ASSERT (retval == strlen (result)); |
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1008 } |
8803
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1009 |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1010 /* Test the support of the grouping flag. */ |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1011 |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1012 { |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1013 char result[100]; |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1014 int retval = |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1015 my_snprintf (result, sizeof (result), "%'d %d", 1234567, 99); |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1016 ASSERT (result[strlen (result) - 1] == '9'); |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1017 ASSERT (retval == strlen (result)); |
6c1d98929550
Work around lack of support of grouping flag.
Bruno Haible <bruno@clisp.org>
parents:
8684
diff
changeset
|
1018 } |
8364
6b68eeda7e0a
Test for gnulib modules 'snprintf-posix' and 'vsnprintf-posix'.
Bruno Haible <bruno@clisp.org>
parents:
diff
changeset
|
1019 } |