Let me add some more unit tests.
2023-01-28 Bruno Haible <br...@clisp.org> vasnprintf-posix: Add more unit tests. * tests/test-vasnprintf-posix.c (test_function): Add tests for width given as argument for the directives %a, %f, %e, %g. * tests/test-vasprintf-posix.c (test_function): Likewise. * tests/test-snprintf-posix.h (test_function): Likewise. * tests/test-sprintf-posix.h (test_function): Likewise. diff --git a/tests/test-snprintf-posix.h b/tests/test-snprintf-posix.h index a69abb5622..42662a498e 100644 --- a/tests/test-snprintf-posix.h +++ b/tests/test-snprintf-posix.h @@ -277,6 +277,26 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*a %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*a %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* Small precision. */ int retval = my_snprintf (result, sizeof (result), "%.10a %d", 1.75, 33, 44, 55); @@ -581,6 +601,26 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*La %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*La %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* Small precision. */ int retval = my_snprintf (result, sizeof (result), "%.10La %d", 1.75L, 33, 44, 55); @@ -839,6 +879,20 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*f %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*f %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-10f %d", 1.75, 33, 44, 55); @@ -1139,6 +1193,20 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*Lf %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*Lf %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-10Lf %d", 1.75L, 33, 44, 55); @@ -1587,6 +1655,22 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*e %d", 15, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*e %d", -15, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-15e %d", 1.75, 33, 44, 55); @@ -1918,6 +2002,22 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*Le %d", 15, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*Le %d", -15, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-15Le %d", 1.75L, 33, 44, 55); @@ -2183,6 +2283,20 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*g %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*g %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-10g %d", 1.75, 33, 44, 55); @@ -2502,6 +2616,20 @@ test_function (int (*my_snprintf) (char *, size_t, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_snprintf (result, sizeof (result), "%*Lg %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_snprintf (result, sizeof (result), "%*Lg %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_snprintf (result, sizeof (result), "%-10Lg %d", 1.75L, 33, 44, 55); diff --git a/tests/test-sprintf-posix.h b/tests/test-sprintf-posix.h index 62d2b4ed56..3b54cabd64 100644 --- a/tests/test-sprintf-posix.h +++ b/tests/test-sprintf-posix.h @@ -263,6 +263,26 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*a %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*a %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* Small precision. */ int retval = my_sprintf (result, "%.10a %d", 1.75, 33, 44, 55); @@ -567,6 +587,26 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*La %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*La %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* Small precision. */ int retval = my_sprintf (result, "%.10La %d", 1.75L, 33, 44, 55); @@ -825,6 +865,20 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*f %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*f %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-10f %d", 1.75, 33, 44, 55); @@ -1125,6 +1179,20 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*Lf %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*Lf %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-10Lf %d", 1.75L, 33, 44, 55); @@ -1573,6 +1641,22 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*e %d", 15, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*e %d", -15, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-15e %d", 1.75, 33, 44, 55); @@ -1904,6 +1988,22 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*Le %d", 15, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*Le %d", -15, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-15Le %d", 1.75L, 33, 44, 55); @@ -2169,6 +2269,20 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*g %d", 10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*g %d", -10, 1.75, 33, 44, 55); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-10g %d", 1.75, 33, 44, 55); @@ -2488,6 +2602,20 @@ test_function (int (*my_sprintf) (char *, const char *, ...)) ASSERT (retval == strlen (result)); } + { /* Width given as argument. */ + int retval = + my_sprintf (result, "%*Lg %d", 10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + int retval = + my_sprintf (result, "%*Lg %d", -10, 1.75L, 33, 44, 55); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + } + { /* FLAG_LEFT. */ int retval = my_sprintf (result, "%-10Lg %d", 1.75L, 33, 44, 55); diff --git a/tests/test-vasnprintf-posix.c b/tests/test-vasnprintf-posix.c index ce894b5001..6c81c7c5f4 100644 --- a/tests/test-vasnprintf-posix.c +++ b/tests/test-vasnprintf-posix.c @@ -353,6 +353,32 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*a %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*a %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Small precision. */ size_t length; char *result = @@ -753,6 +779,32 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*La %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*La %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Small precision. */ size_t length; char *result = @@ -1071,6 +1123,26 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*f %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*f %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = @@ -1455,6 +1527,26 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Lf %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Lf %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = @@ -2044,6 +2136,28 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*e %d", 15, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*e %d", -15, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = @@ -2458,6 +2572,28 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Le %d", 15, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Le %d", -15, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = @@ -2789,6 +2925,26 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*g %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*g %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = @@ -3195,6 +3351,26 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } + { /* Width given as argument. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Lg %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%*Lg %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ size_t length; char *result = diff --git a/tests/test-vasprintf-posix.c b/tests/test-vasprintf-posix.c index 6cfc3aa7f9..5bef8d4a2a 100644 --- a/tests/test-vasprintf-posix.c +++ b/tests/test-vasprintf-posix.c @@ -334,6 +334,32 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*a %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*a %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* Small precision. */ char *result; int retval = @@ -734,6 +760,32 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*La %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 0x1.cp+0 33") == 0 + || strcmp (result, " 0x3.8p-1 33") == 0 + || strcmp (result, " 0x7p-2 33") == 0 + || strcmp (result, " 0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*La %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "0x1.cp+0 33") == 0 + || strcmp (result, "0x3.8p-1 33") == 0 + || strcmp (result, "0x7p-2 33") == 0 + || strcmp (result, "0xep-3 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* Small precision. */ char *result; int retval = @@ -1052,6 +1104,26 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*f %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*f %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval = @@ -1436,6 +1508,26 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*Lf %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*Lf %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval = @@ -2025,6 +2117,28 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*e %d", 15, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*e %d", -15, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval = @@ -2443,6 +2557,28 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*Le %d", 15, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.750000e+00 33") == 0 + || strcmp (result, " 1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*Le %d", -15, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.750000e+00 33") == 0 + || strcmp (result, "1.750000e+000 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval = @@ -2774,6 +2910,26 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*g %d", 10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*g %d", -10, 1.75, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval = @@ -3180,6 +3336,26 @@ test_function (int (*my_asprintf) (char **, const char *, ...)) free (result); } + { /* Width given as argument. */ + char *result; + int retval = + my_asprintf (&result, "%*Lg %d", 10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " 1.75 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + + { /* Negative width given as argument (cf. FLAG_LEFT below). */ + char *result; + int retval = + my_asprintf (&result, "%*Lg %d", -10, 1.75L, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "1.75 33") == 0); + ASSERT (retval == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ char *result; int retval =