X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/b90f122bd10bd896f2f9b0cf5676bcd436a7d42e..b9bbb6c8bd8630fe4321045ce57174c4890bfa46:/lib/t-printf.c?ds=sidebyside diff --git a/lib/t-printf.c b/lib/t-printf.c index 057b503..85d1d01 100644 --- a/lib/t-printf.c +++ b/lib/t-printf.c @@ -19,7 +19,12 @@ */ #include "test.h" -void test_printf(void) { +/* launder a string constant to stop gcc warnings */ +static const char *L(const char *s) { + return s; +} + +static void test_printf(void) { char c; short s; int i; @@ -30,10 +35,12 @@ void test_printf(void) { ptrdiff_t p; char *cp; char buffer[16]; + FILE *fp; - fprintf(stderr, "test_printf\n"); check_string(do_printf("%d", 999), "999"); check_string(do_printf("%d", -999), "-999"); + check_string(do_printf("%+d", 999), "+999"); + check_string(do_printf("%+d", -999), "-999"); check_string(do_printf("%i", 999), "999"); check_string(do_printf("%i", -999), "-999"); check_string(do_printf("%u", 999), "999"); @@ -122,8 +129,55 @@ void test_printf(void) { i = byte_asprintf(&cp, f); insist(i == -1); } + + fp = tmpfile(); + insist(byte_fprintf(fp, "%10s\n", "wibble") == 11); + rewind(fp); + insist(fgets(buffer, sizeof buffer, fp) == buffer); + check_string(buffer, " wibble\n"); + fclose(fp); + check_integer(byte_snprintf(buffer, sizeof buffer, + "%18446744073709551616d", 10), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, + "%.18446744073709551616d", 10), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%hs"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%qs"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%js"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%zs"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%ts"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%Ls"), ""), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%hp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%lp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%qp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%jp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%zp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%tp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%Lp"), (void *)0), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%h%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%l%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%q%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%j%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%z%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%t%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, L("%L%")), -1); + check_integer(byte_snprintf(buffer, sizeof buffer, "%2147483647s%2147483647s", "", ""), -1); + check_integer(byte_sinkprintf(sink_error(), ""), 0); + check_integer(byte_sinkprintf(sink_error(), "%5s", ""), -1); + check_integer(byte_sinkprintf(sink_error(), "%d", 0), -1); + check_integer(byte_sinkprintf(sink_error(), "%d", 1), -1); + check_integer(byte_sinkprintf(sink_error(), "%2d", 0), -1); + check_integer(byte_sinkprintf(sink_error(), "%d", -1), -1); + check_integer(byte_sinkprintf(sink_error(), "%#x", 10), -1); + check_integer(byte_sinkprintf(sink_error(), "%-d", 0), -1); + check_integer(byte_sinkprintf(sink_error(), "%-d", 1), -1); + check_integer(byte_sinkprintf(sink_error(), "%-2d", 0), -1); + check_integer(byte_sinkprintf(sink_error(), "%-d", -1), -1); + check_integer(byte_sinkprintf(sink_error(), "%-#x", 10), -1); + } +TEST(printf); + /* Local Variables: c-basic-offset:2