diff options
Diffstat (limited to 'tests/portable/snprintf-t.c')
-rw-r--r-- | tests/portable/snprintf-t.c | 43 |
1 files changed, 19 insertions, 24 deletions
diff --git a/tests/portable/snprintf-t.c b/tests/portable/snprintf-t.c index 7e8a68f..d14712f 100644 --- a/tests/portable/snprintf-t.c +++ b/tests/portable/snprintf-t.c @@ -5,7 +5,7 @@ * which can be found at <https://www.eyrie.org/~eagle/software/rra-c-util/>. * * Written by Russ Allbery <eagle@eyrie.org> - * Copyright 2000-2006, 2018 Russ Allbery <eagle@eyrie.org> + * Copyright 2000-2006, 2018-2020 Russ Allbery <eagle@eyrie.org> * Copyright 2009-2010 * The Board of Trustees of the Leland Stanford Junior University * Copyright 1995 Patrick Powell @@ -28,7 +28,7 @@ * formats for easy testing. */ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2) || defined(__clang__) -# pragma GCC diagnostic ignored "-Wformat-nonliteral" +# pragma GCC diagnostic ignored "-Wformat-nonliteral" #endif /* @@ -40,20 +40,12 @@ int test_vsnprintf(char *str, size_t count, const char *fmt, va_list args); static const char string[] = "abcdefghijklmnopqrstuvwxyz0123456789"; +/* clang-format off */ + static const char *const fp_formats[] = { - "%-1.5f", "%1.5f", "%31.9f", "%10.5f", "% 10.5f", "%+22.9f", - "%+4.9f", "%01.3f", "%3.1f", "%3.2f", "%.0f", "%.1f", + "%-1.5f", "%1.5f", "%31.6f", "%10.5f", "% 10.5f", "%+22.6f", + "%+4.6f", "%01.3f", "%3.1f", "%3.2f", "%.0f", "%.1f", "%f", - - /* %e and %g formats aren't really implemented yet. */ -#if 0 - "%-1.5e", "%1.5e", "%31.9e", "%10.5e", "% 10.5e", "%+22.9e", - "%+4.9e", "%01.3e", "%3.1e", "%3.2e", "%.0e", "%.1e", - "%e", - "%-1.5g", "%1.5g", "%31.9g", "%10.5g", "% 10.5g", "%+22.9g", - "%+4.9g", "%01.3g", "%3.1g", "%3.2g", "%.0g", "%.1g", - "%g", -#endif NULL }; static const char *const int_formats[] = { @@ -99,10 +91,12 @@ static unsigned long long ullong_nums[] = { 0 }; +/* clang-format on */ + static void -test_format(bool trunc, const char *expected, int count, - const char *format, ...) +test_format(bool trunc, const char *expected, int count, const char *format, + ...) { char buf[128]; int result; @@ -124,12 +118,13 @@ main(void) long lcount; char lgbuf[128]; - plan(8 + - (18 + (ARRAY_SIZE(fp_formats) - 1) * ARRAY_SIZE(fp_nums) - + (ARRAY_SIZE(int_formats) - 1) * ARRAY_SIZE(int_nums) - + (ARRAY_SIZE(uint_formats) - 1) * ARRAY_SIZE(uint_nums) - + (ARRAY_SIZE(llong_formats) - 1) * ARRAY_SIZE(llong_nums) - + (ARRAY_SIZE(ullong_formats) - 1) * ARRAY_SIZE(ullong_nums)) * 2); + plan(8 + + (18 + (ARRAY_SIZE(fp_formats) - 1) * ARRAY_SIZE(fp_nums) + + (ARRAY_SIZE(int_formats) - 1) * ARRAY_SIZE(int_nums) + + (ARRAY_SIZE(uint_formats) - 1) * ARRAY_SIZE(uint_nums) + + (ARRAY_SIZE(llong_formats) - 1) * ARRAY_SIZE(llong_nums) + + (ARRAY_SIZE(ullong_formats) - 1) * ARRAY_SIZE(ullong_nums)) + * 2); is_int(4, test_snprintf(NULL, 0, "%s", "abcd"), "simple string length"); is_int(2, test_snprintf(NULL, 0, "%d", 20), "number length"); @@ -156,8 +151,8 @@ main(void) string, -2.5); test_format(true, "abcdefghij4444", 14, "%.10s%n%d", string, &count, 4444); is_int(10, count, "correct output from %%n"); - test_format(true, "abcdefghijklmnopqrstuvwxyz01234", 36, "%n%s%ln", - &count, string, &lcount); + test_format(true, "abcdefghijklmnopqrstuvwxyz01234", 36, "%n%s%ln", &count, + string, &lcount); is_int(0, count, "correct output from two %%n"); is_int(31, lcount, "correct output from long %%ln"); test_format(true, "(null)", 6, "%s", (char *) NULL); |