1 /* Test of POSIX compatible vasnprintf() and asnprintf() functions.
2 Copyright (C) 2007 Free Software Foundation, Inc.
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software Foundation,
16 Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
18 /* Written by Bruno Haible <bruno@clisp.org>, 2007. */
24 #include "vasnprintf.h"
32 #define ASSERT(expr) if (!(expr)) abort ();
35 test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...))
40 /* Test return value convention. */
42 for (size = 0; size <= 8; size++)
45 char *result = my_asnprintf (NULL, &length, "%d", 12345);
46 ASSERT (result != NULL);
47 ASSERT (strcmp (result, "12345") == 0);
52 for (size = 0; size <= 8; size++)
57 memcpy (buf, "DEADBEEF", 8);
59 result = my_asnprintf (buf, &length, "%d", 12345);
60 ASSERT (result != NULL);
61 ASSERT (strcmp (result, "12345") == 0);
64 ASSERT (result != buf);
65 ASSERT (memcmp (buf + size, "DEADBEEF" + size, 8 - size) == 0);
70 /* Test support of size specifiers as in C99. */
75 my_asnprintf (NULL, &length, "%ju %d", (uintmax_t) 12345671, 33, 44, 55);
76 ASSERT (result != NULL);
77 ASSERT (strcmp (result, "12345671 33") == 0);
78 ASSERT (length == strlen (result));
85 my_asnprintf (NULL, &length, "%zu %d", (size_t) 12345672, 33, 44, 55);
86 ASSERT (result != NULL);
87 ASSERT (strcmp (result, "12345672 33") == 0);
88 ASSERT (length == strlen (result));
95 my_asnprintf (NULL, &length, "%tu %d", (ptrdiff_t) 12345673, 33, 44, 55);
96 ASSERT (result != NULL);
97 ASSERT (strcmp (result, "12345673 33") == 0);
98 ASSERT (length == strlen (result));
106 my_asnprintf (NULL, &length, "%Lg %d", (long double) 1.5, 33, 44, 55);
107 ASSERT (result != NULL);
108 ASSERT (strcmp (result, "1.5 33") == 0);
109 ASSERT (length == strlen (result));
114 /* Test the support of the 'a' and 'A' conversion specifier for hexadecimal
115 output of floating-point numbers. */
117 { /* A positive number. */
120 my_asnprintf (NULL, &length, "%a %d", 3.1416015625, 33, 44, 55);
121 ASSERT (result != NULL);
122 ASSERT (strcmp (result, "0x1.922p+1 33") == 0
123 || strcmp (result, "0x3.244p+0 33") == 0
124 || strcmp (result, "0x6.488p-1 33") == 0
125 || strcmp (result, "0xc.91p-2 33") == 0);
126 ASSERT (length == strlen (result));
130 { /* A negative number. */
133 my_asnprintf (NULL, &length, "%A %d", -3.1416015625, 33, 44, 55);
134 ASSERT (result != NULL);
135 ASSERT (strcmp (result, "-0X1.922P+1 33") == 0
136 || strcmp (result, "-0X3.244P+0 33") == 0
137 || strcmp (result, "-0X6.488P-1 33") == 0
138 || strcmp (result, "-0XC.91P-2 33") == 0);
139 ASSERT (length == strlen (result));
143 { /* Positive zero. */
146 my_asnprintf (NULL, &length, "%a %d", 0.0, 33, 44, 55);
147 ASSERT (result != NULL);
148 ASSERT (strcmp (result, "0x0p+0 33") == 0);
149 ASSERT (length == strlen (result));
153 { /* Negative zero. */
156 my_asnprintf (NULL, &length, "%a %d", -0.0, 33, 44, 55);
157 ASSERT (result != NULL);
158 ASSERT (strcmp (result, "-0x0p+0 33") == 0);
159 ASSERT (length == strlen (result));
163 { /* Positive infinity. */
166 my_asnprintf (NULL, &length, "%a %d", 1.0 / 0.0, 33, 44, 55);
167 ASSERT (result != NULL);
168 ASSERT (strcmp (result, "inf 33") == 0);
169 ASSERT (length == strlen (result));
173 { /* Negative infinity. */
176 my_asnprintf (NULL, &length, "%a %d", -1.0 / 0.0, 33, 44, 55);
177 ASSERT (result != NULL);
178 ASSERT (strcmp (result, "-inf 33") == 0);
179 ASSERT (length == strlen (result));
186 my_asnprintf (NULL, &length, "%a %d", 0.0 / 0.0, 33, 44, 55);
187 ASSERT (result != NULL);
188 ASSERT (strcmp (result, "nan 33") == 0);
189 ASSERT (length == strlen (result));
193 { /* Rounding near the decimal point. */
196 my_asnprintf (NULL, &length, "%.0a %d", 1.5, 33, 44, 55);
197 ASSERT (result != NULL);
198 ASSERT (strcmp (result, "0x2p+0 33") == 0
199 || strcmp (result, "0x3p-1 33") == 0
200 || strcmp (result, "0x6p-2 33") == 0
201 || strcmp (result, "0xcp-3 33") == 0);
202 ASSERT (length == strlen (result));
206 { /* Rounding with precision 0. */
209 my_asnprintf (NULL, &length, "%.0a %d", 1.51, 33, 44, 55);
210 ASSERT (result != NULL);
211 ASSERT (strcmp (result, "0x2p+0 33") == 0
212 || strcmp (result, "0x3p-1 33") == 0
213 || strcmp (result, "0x6p-2 33") == 0
214 || strcmp (result, "0xcp-3 33") == 0);
215 ASSERT (length == strlen (result));
219 { /* Rounding with precision 1. */
222 my_asnprintf (NULL, &length, "%.1a %d", 1.51, 33, 44, 55);
223 ASSERT (result != NULL);
224 ASSERT (strcmp (result, "0x1.8p+0 33") == 0
225 || strcmp (result, "0x3.0p-1 33") == 0
226 || strcmp (result, "0x6.1p-2 33") == 0
227 || strcmp (result, "0xc.1p-3 33") == 0);
228 ASSERT (length == strlen (result));
232 { /* Rounding with precision 2. */
235 my_asnprintf (NULL, &length, "%.2a %d", 1.51, 33, 44, 55);
236 ASSERT (result != NULL);
237 ASSERT (strcmp (result, "0x1.83p+0 33") == 0
238 || strcmp (result, "0x3.05p-1 33") == 0
239 || strcmp (result, "0x6.0ap-2 33") == 0
240 || strcmp (result, "0xc.14p-3 33") == 0);
241 ASSERT (length == strlen (result));
245 { /* Rounding with precision 3. */
248 my_asnprintf (NULL, &length, "%.3a %d", 1.51, 33, 44, 55);
249 ASSERT (result != NULL);
250 ASSERT (strcmp (result, "0x1.829p+0 33") == 0
251 || strcmp (result, "0x3.052p-1 33") == 0
252 || strcmp (result, "0x6.0a4p-2 33") == 0
253 || strcmp (result, "0xc.148p-3 33") == 0);
254 ASSERT (length == strlen (result));
258 { /* Rounding can turn a ...FFF into a ...000. */
261 my_asnprintf (NULL, &length, "%.3a %d", 1.49999, 33, 44, 55);
262 ASSERT (result != NULL);
263 ASSERT (strcmp (result, "0x1.800p+0 33") == 0
264 || strcmp (result, "0x3.000p-1 33") == 0
265 || strcmp (result, "0x6.000p-2 33") == 0
266 || strcmp (result, "0xc.000p-3 33") == 0);
267 ASSERT (length == strlen (result));
271 { /* Rounding can turn a ...FFF into a ...000.
272 This shows a MacOS X 10.3.9 (Darwin 7.9) bug. */
275 my_asnprintf (NULL, &length, "%.1a %d", 1.999, 33, 44, 55);
276 ASSERT (result != NULL);
277 ASSERT (strcmp (result, "0x1.0p+1 33") == 0
278 || strcmp (result, "0x2.0p+0 33") == 0
279 || strcmp (result, "0x4.0p-1 33") == 0
280 || strcmp (result, "0x8.0p-2 33") == 0);
281 ASSERT (length == strlen (result));
288 my_asnprintf (NULL, &length, "%10a %d", 1.75, 33, 44, 55);
289 ASSERT (result != NULL);
290 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
291 || strcmp (result, " 0x3.8p-1 33") == 0
292 || strcmp (result, " 0x7p-2 33") == 0
293 || strcmp (result, " 0xep-3 33") == 0);
294 ASSERT (length == strlen (result));
298 { /* Small precision. */
301 my_asnprintf (NULL, &length, "%.10a %d", 1.75, 33, 44, 55);
302 ASSERT (result != NULL);
303 ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0
304 || strcmp (result, "0x3.8000000000p-1 33") == 0
305 || strcmp (result, "0x7.0000000000p-2 33") == 0
306 || strcmp (result, "0xe.0000000000p-3 33") == 0);
307 ASSERT (length == strlen (result));
311 { /* Large precision. */
314 my_asnprintf (NULL, &length, "%.50a %d", 1.75, 33, 44, 55);
315 ASSERT (result != NULL);
316 ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0
317 || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0
318 || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0
319 || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0);
320 ASSERT (length == strlen (result));
327 my_asnprintf (NULL, &length, "%-10a %d", 1.75, 33, 44, 55);
328 ASSERT (result != NULL);
329 ASSERT (strcmp (result, "0x1.cp+0 33") == 0
330 || strcmp (result, "0x3.8p-1 33") == 0
331 || strcmp (result, "0x7p-2 33") == 0
332 || strcmp (result, "0xep-3 33") == 0);
333 ASSERT (length == strlen (result));
337 { /* FLAG_SHOWSIGN. */
340 my_asnprintf (NULL, &length, "%+a %d", 1.75, 33, 44, 55);
341 ASSERT (result != NULL);
342 ASSERT (strcmp (result, "+0x1.cp+0 33") == 0
343 || strcmp (result, "+0x3.8p-1 33") == 0
344 || strcmp (result, "+0x7p-2 33") == 0
345 || strcmp (result, "+0xep-3 33") == 0);
346 ASSERT (length == strlen (result));
353 my_asnprintf (NULL, &length, "% a %d", 1.75, 33, 44, 55);
354 ASSERT (result != NULL);
355 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
356 || strcmp (result, " 0x3.8p-1 33") == 0
357 || strcmp (result, " 0x7p-2 33") == 0
358 || strcmp (result, " 0xep-3 33") == 0);
359 ASSERT (length == strlen (result));
366 my_asnprintf (NULL, &length, "%#a %d", 1.75, 33, 44, 55);
367 ASSERT (result != NULL);
368 ASSERT (strcmp (result, "0x1.cp+0 33") == 0
369 || strcmp (result, "0x3.8p-1 33") == 0
370 || strcmp (result, "0x7.p-2 33") == 0
371 || strcmp (result, "0xe.p-3 33") == 0);
372 ASSERT (length == strlen (result));
379 my_asnprintf (NULL, &length, "%#a %d", 1.0, 33, 44, 55);
380 ASSERT (result != NULL);
381 ASSERT (strcmp (result, "0x1.p+0 33") == 0
382 || strcmp (result, "0x2.p-1 33") == 0
383 || strcmp (result, "0x4.p-2 33") == 0
384 || strcmp (result, "0x8.p-3 33") == 0);
385 ASSERT (length == strlen (result));
389 { /* FLAG_ZERO with finite number. */
392 my_asnprintf (NULL, &length, "%010a %d", 1.75, 33, 44, 55);
393 ASSERT (result != NULL);
394 ASSERT (strcmp (result, "0x001.cp+0 33") == 0
395 || strcmp (result, "0x003.8p-1 33") == 0
396 || strcmp (result, "0x00007p-2 33") == 0
397 || strcmp (result, "0x0000ep-3 33") == 0);
398 ASSERT (length == strlen (result));
402 { /* FLAG_ZERO with infinite number. */
405 my_asnprintf (NULL, &length, "%010a %d", 1.0 / 0.0, 33, 44, 55);
406 ASSERT (result != NULL);
407 ASSERT (strcmp (result, " inf 33") == 0);
408 ASSERT (length == strlen (result));
412 { /* FLAG_ZERO with NaN. */
415 my_asnprintf (NULL, &length, "%010a %d", 0.0 / 0.0, 33, 44, 55);
416 ASSERT (result != NULL);
417 ASSERT (strcmp (result, " nan 33") == 0);
418 ASSERT (length == strlen (result));
424 { /* A positive number. */
427 my_asnprintf (NULL, &length, "%La %d", 3.1416015625L, 33, 44, 55);
428 ASSERT (result != NULL);
429 ASSERT (strcmp (result, "0x1.922p+1 33") == 0
430 || strcmp (result, "0x3.244p+0 33") == 0
431 || strcmp (result, "0x6.488p-1 33") == 0
432 || strcmp (result, "0xc.91p-2 33") == 0);
433 ASSERT (length == strlen (result));
437 { /* A negative number. */
440 my_asnprintf (NULL, &length, "%LA %d", -3.1416015625L, 33, 44, 55);
441 ASSERT (result != NULL);
442 ASSERT (strcmp (result, "-0X1.922P+1 33") == 0
443 || strcmp (result, "-0X3.244P+0 33") == 0
444 || strcmp (result, "-0X6.488P-1 33") == 0
445 || strcmp (result, "-0XC.91P-2 33") == 0);
446 ASSERT (length == strlen (result));
450 { /* Positive zero. */
453 my_asnprintf (NULL, &length, "%La %d", 0.0L, 33, 44, 55);
454 ASSERT (result != NULL);
455 ASSERT (strcmp (result, "0x0p+0 33") == 0);
456 ASSERT (length == strlen (result));
460 { /* Negative zero. */
463 my_asnprintf (NULL, &length, "%La %d", -0.0L, 33, 44, 55);
464 ASSERT (result != NULL);
465 ASSERT (strcmp (result, "-0x0p+0 33") == 0);
466 ASSERT (length == strlen (result));
470 { /* Positive infinity. */
473 my_asnprintf (NULL, &length, "%La %d", 1.0L / 0.0L, 33, 44, 55);
474 ASSERT (result != NULL);
475 ASSERT (strcmp (result, "inf 33") == 0);
476 ASSERT (length == strlen (result));
480 { /* Negative infinity. */
483 my_asnprintf (NULL, &length, "%La %d", -1.0L / 0.0L, 33, 44, 55);
484 ASSERT (result != NULL);
485 ASSERT (strcmp (result, "-inf 33") == 0);
486 ASSERT (length == strlen (result));
493 my_asnprintf (NULL, &length, "%La %d", 0.0L / 0.0L, 33, 44, 55);
494 ASSERT (result != NULL);
495 ASSERT (strcmp (result, "nan 33") == 0);
496 ASSERT (length == strlen (result));
500 { /* Rounding near the decimal point. */
503 my_asnprintf (NULL, &length, "%.0La %d", 1.5L, 33, 44, 55);
504 ASSERT (result != NULL);
505 ASSERT (strcmp (result, "0x2p+0 33") == 0
506 || strcmp (result, "0x3p-1 33") == 0
507 || strcmp (result, "0x6p-2 33") == 0
508 || strcmp (result, "0xcp-3 33") == 0);
509 ASSERT (length == strlen (result));
513 { /* Rounding with precision 0. */
516 my_asnprintf (NULL, &length, "%.0La %d", 1.51L, 33, 44, 55);
517 ASSERT (result != NULL);
518 ASSERT (strcmp (result, "0x2p+0 33") == 0
519 || strcmp (result, "0x3p-1 33") == 0
520 || strcmp (result, "0x6p-2 33") == 0
521 || strcmp (result, "0xcp-3 33") == 0);
522 ASSERT (length == strlen (result));
526 { /* Rounding with precision 1. */
529 my_asnprintf (NULL, &length, "%.1La %d", 1.51L, 33, 44, 55);
530 ASSERT (result != NULL);
531 ASSERT (strcmp (result, "0x1.8p+0 33") == 0
532 || strcmp (result, "0x3.0p-1 33") == 0
533 || strcmp (result, "0x6.1p-2 33") == 0
534 || strcmp (result, "0xc.1p-3 33") == 0);
535 ASSERT (length == strlen (result));
539 { /* Rounding with precision 2. */
542 my_asnprintf (NULL, &length, "%.2La %d", 1.51L, 33, 44, 55);
543 ASSERT (result != NULL);
544 ASSERT (strcmp (result, "0x1.83p+0 33") == 0
545 || strcmp (result, "0x3.05p-1 33") == 0
546 || strcmp (result, "0x6.0ap-2 33") == 0
547 || strcmp (result, "0xc.14p-3 33") == 0);
548 ASSERT (length == strlen (result));
552 { /* Rounding with precision 3. */
555 my_asnprintf (NULL, &length, "%.3La %d", 1.51L, 33, 44, 55);
556 ASSERT (result != NULL);
557 ASSERT (strcmp (result, "0x1.829p+0 33") == 0
558 || strcmp (result, "0x3.052p-1 33") == 0
559 || strcmp (result, "0x6.0a4p-2 33") == 0
560 || strcmp (result, "0xc.148p-3 33") == 0);
561 ASSERT (length == strlen (result));
565 { /* Rounding can turn a ...FFF into a ...000. */
568 my_asnprintf (NULL, &length, "%.3La %d", 1.49999L, 33, 44, 55);
569 ASSERT (result != NULL);
570 ASSERT (strcmp (result, "0x1.800p+0 33") == 0
571 || strcmp (result, "0x3.000p-1 33") == 0
572 || strcmp (result, "0x6.000p-2 33") == 0
573 || strcmp (result, "0xc.000p-3 33") == 0);
574 ASSERT (length == strlen (result));
578 { /* Rounding can turn a ...FFF into a ...000.
579 This shows a MacOS X 10.3.9 (Darwin 7.9) bug and a
580 glibc 2.4 bug <http://sourceware.org/bugzilla/show_bug.cgi?id=2908>. */
583 my_asnprintf (NULL, &length, "%.1La %d", 1.999L, 33, 44, 55);
584 ASSERT (result != NULL);
585 ASSERT (strcmp (result, "0x1.0p+1 33") == 0
586 || strcmp (result, "0x2.0p+0 33") == 0
587 || strcmp (result, "0x4.0p-1 33") == 0
588 || strcmp (result, "0x8.0p-2 33") == 0);
589 ASSERT (length == strlen (result));
596 my_asnprintf (NULL, &length, "%10La %d", 1.75L, 33, 44, 55);
597 ASSERT (result != NULL);
598 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
599 || strcmp (result, " 0x3.8p-1 33") == 0
600 || strcmp (result, " 0x7p-2 33") == 0
601 || strcmp (result, " 0xep-3 33") == 0);
602 ASSERT (length == strlen (result));
606 { /* Small precision. */
609 my_asnprintf (NULL, &length, "%.10La %d", 1.75L, 33, 44, 55);
610 ASSERT (result != NULL);
611 ASSERT (strcmp (result, "0x1.c000000000p+0 33") == 0
612 || strcmp (result, "0x3.8000000000p-1 33") == 0
613 || strcmp (result, "0x7.0000000000p-2 33") == 0
614 || strcmp (result, "0xe.0000000000p-3 33") == 0);
615 ASSERT (length == strlen (result));
619 { /* Large precision. */
622 my_asnprintf (NULL, &length, "%.50La %d", 1.75L, 33, 44, 55);
623 ASSERT (result != NULL);
624 ASSERT (strcmp (result, "0x1.c0000000000000000000000000000000000000000000000000p+0 33") == 0
625 || strcmp (result, "0x3.80000000000000000000000000000000000000000000000000p-1 33") == 0
626 || strcmp (result, "0x7.00000000000000000000000000000000000000000000000000p-2 33") == 0
627 || strcmp (result, "0xe.00000000000000000000000000000000000000000000000000p-3 33") == 0);
628 ASSERT (length == strlen (result));
635 my_asnprintf (NULL, &length, "%-10La %d", 1.75L, 33, 44, 55);
636 ASSERT (result != NULL);
637 ASSERT (strcmp (result, "0x1.cp+0 33") == 0
638 || strcmp (result, "0x3.8p-1 33") == 0
639 || strcmp (result, "0x7p-2 33") == 0
640 || strcmp (result, "0xep-3 33") == 0);
641 ASSERT (length == strlen (result));
645 { /* FLAG_SHOWSIGN. */
648 my_asnprintf (NULL, &length, "%+La %d", 1.75L, 33, 44, 55);
649 ASSERT (result != NULL);
650 ASSERT (strcmp (result, "+0x1.cp+0 33") == 0
651 || strcmp (result, "+0x3.8p-1 33") == 0
652 || strcmp (result, "+0x7p-2 33") == 0
653 || strcmp (result, "+0xep-3 33") == 0);
654 ASSERT (length == strlen (result));
661 my_asnprintf (NULL, &length, "% La %d", 1.75L, 33, 44, 55);
662 ASSERT (result != NULL);
663 ASSERT (strcmp (result, " 0x1.cp+0 33") == 0
664 || strcmp (result, " 0x3.8p-1 33") == 0
665 || strcmp (result, " 0x7p-2 33") == 0
666 || strcmp (result, " 0xep-3 33") == 0);
667 ASSERT (length == strlen (result));
674 my_asnprintf (NULL, &length, "%#La %d", 1.75L, 33, 44, 55);
675 ASSERT (result != NULL);
676 ASSERT (strcmp (result, "0x1.cp+0 33") == 0
677 || strcmp (result, "0x3.8p-1 33") == 0
678 || strcmp (result, "0x7.p-2 33") == 0
679 || strcmp (result, "0xe.p-3 33") == 0);
680 ASSERT (length == strlen (result));
687 my_asnprintf (NULL, &length, "%#La %d", 1.0L, 33, 44, 55);
688 ASSERT (result != NULL);
689 ASSERT (strcmp (result, "0x1.p+0 33") == 0
690 || strcmp (result, "0x2.p-1 33") == 0
691 || strcmp (result, "0x4.p-2 33") == 0
692 || strcmp (result, "0x8.p-3 33") == 0);
693 ASSERT (length == strlen (result));
697 { /* FLAG_ZERO with finite number. */
700 my_asnprintf (NULL, &length, "%010La %d", 1.75L, 33, 44, 55);
701 ASSERT (result != NULL);
702 ASSERT (strcmp (result, "0x001.cp+0 33") == 0
703 || strcmp (result, "0x003.8p-1 33") == 0
704 || strcmp (result, "0x00007p-2 33") == 0
705 || strcmp (result, "0x0000ep-3 33") == 0);
706 ASSERT (length == strlen (result));
710 { /* FLAG_ZERO with infinite number. */
713 my_asnprintf (NULL, &length, "%010La %d", 1.0L / 0.0L, 33, 44, 55);
714 ASSERT (result != NULL);
715 ASSERT (strcmp (result, " inf 33") == 0);
716 ASSERT (length == strlen (result));
720 { /* FLAG_ZERO with NaN. */
723 my_asnprintf (NULL, &length, "%010La %d", 0.0L / 0.0L, 33, 44, 55);
724 ASSERT (result != NULL);
725 ASSERT (strcmp (result, " nan 33") == 0);
726 ASSERT (length == strlen (result));
732 /* Test the support of the %n format directive. */
738 my_asnprintf (NULL, &length, "%d %n", 123, &count, 33, 44, 55);
739 ASSERT (result != NULL);
740 ASSERT (strcmp (result, "123 ") == 0);
741 ASSERT (length == strlen (result));
746 /* Test the support of the POSIX/XSI format strings with positions. */
751 my_asnprintf (NULL, &length, "%2$d %1$d", 33, 55);
752 ASSERT (result != NULL);
753 ASSERT (strcmp (result, "55 33") == 0);
754 ASSERT (length == strlen (result));
760 my_asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...)
765 va_start (args, format);
766 ret = vasnprintf (resultbuf, lengthp, format, args);
774 test_function (my_asnprintf);
780 test_function (asnprintf);
784 main (int argc, char *argv[])