/* Test program for %a printf formats. */ #include #include 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\" (%Zu)\n\tGot \"%s\" (%d, %Zu)\n", t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf)); result = 1; } } return result; } #include "../test-skeleton.c"