90d5987081
* stdio-common/Makefile (tests): Add tst-fphex. * sysdeps/generic/printf_fphex.c (__printf_fphex): Fix initialization of WNUMEND. Fix counting of decimal point in WIDTH. Print '0' pad chars always before the value digits. Reported by James Antill <james.antill@redhat.com>.
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* Test program for %a printf formats. */
|
|
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
|
|
struct testcase
|
|
{
|
|
double value;
|
|
const char *fmt;
|
|
const char *expect;
|
|
};
|
|
|
|
static const struct testcase testcases[] =
|
|
{
|
|
{ 0x0.0030p+0, "%a", "0x1.8p-11" },
|
|
{ 0x0.0040p+0, "%a", "0x1p-10" },
|
|
{ 0x0.0030p+0, "%040a", "0x00000000000000000000000000000001.8p-11" },
|
|
{ 0x0.0040p+0, "%040a", "0x0000000000000000000000000000000001p-10" },
|
|
{ 0x0.0040p+0, "%40a", " 0x1p-10" },
|
|
{ 0x0.0040p+0, "%#40a", " 0x1.p-10" },
|
|
{ 0x0.0040p+0, "%-40a", "0x1p-10 " },
|
|
{ 0x0.0040p+0, "%#-40a", "0x1.p-10 " },
|
|
{ 0x0.0030p+0, "%040e", "00000000000000000000000000007.324219e-04" },
|
|
{ 0x0.0040p+0, "%040e", "00000000000000000000000000009.765625e-04" },
|
|
};
|
|
|
|
|
|
static int
|
|
do_test (int argc, char **argv)
|
|
{
|
|
const struct testcase *t;
|
|
int result = 0;
|
|
|
|
for (t = testcases;
|
|
t < &testcases[sizeof testcases / sizeof testcases[0]];
|
|
++t)
|
|
{
|
|
char buf[1024];
|
|
int n = snprintf (buf, sizeof buf, t->fmt, t->value);
|
|
if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
|
|
{
|
|
printf ("%s\tExpected \"%s\" (%u)\n\tGot \"%s\" (%d, %u)\n",
|
|
t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
|
|
result = 1;
|
|
}
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
#include "../test-skeleton.c"
|