aboutsummaryrefslogtreecommitdiff
path: root/stdio-common/tst-fphex.c
diff options
context:
space:
mode:
Diffstat (limited to 'stdio-common/tst-fphex.c')
-rw-r--r--stdio-common/tst-fphex.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/stdio-common/tst-fphex.c b/stdio-common/tst-fphex.c
new file mode 100644
index 0000000000..aca2c0500d
--- /dev/null
+++ b/stdio-common/tst-fphex.c
@@ -0,0 +1,51 @@
+/* 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"