diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2025-03-22 18:00:25 +0100 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2025-03-22 18:00:25 +0100 |
commit | 0737819efdd0bae112d16d874cac7e747e43cd08 (patch) | |
tree | 98a9ac84f7f347ae530c14852c68870682f3d04c /tests/unistdio/test-ulc-vasnprintf3.c | |
parent | 163a663518f33bab48b28431972e580b366b4d49 (diff) | |
parent | e670957a8693f860cf7d77fed4ce6b4b056a8083 (diff) |
Merge branch 'release/debian/1.3-1'debian/1.3-1
Diffstat (limited to 'tests/unistdio/test-ulc-vasnprintf3.c')
-rw-r--r-- | tests/unistdio/test-ulc-vasnprintf3.c | 76 |
1 files changed, 75 insertions, 1 deletions
diff --git a/tests/unistdio/test-ulc-vasnprintf3.c b/tests/unistdio/test-ulc-vasnprintf3.c index 717e9850..f73b4539 100644 --- a/tests/unistdio/test-ulc-vasnprintf3.c +++ b/tests/unistdio/test-ulc-vasnprintf3.c @@ -72,6 +72,16 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } } + { /* Width with a non-BMP argument. */ + static const uint8_t unicode_string[] = "\360\237\220\203"; /* 🐃 */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10U %d", unicode_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " \360\237\220\203 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } { static const uint16_t unicode_string[] = /* Rafał Maszkowski */ @@ -116,6 +126,16 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } } + { /* Width with a non-BMP argument. */ + static const uint16_t unicode_string[] = { 0xd83d, 0xdc03, 0 }; /* 🐃 */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10lU %d", unicode_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " \360\237\220\203 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } { static const uint32_t unicode_string[] = /* Rafał Maszkowski */ @@ -160,6 +180,16 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } } + { /* Width with a non-BMP argument. */ + static const uint32_t unicode_string[] = { 0x1f403, 0 }; /* 🐃 */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%10llU %d", unicode_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " \360\237\220\203 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } /* Test the support of the 's' conversion specifier for strings. */ @@ -202,6 +232,50 @@ test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) free (result); } } + + /* Test the support of the 'ls' conversion specifier for wide strings. */ + + { + const char *locale_string = "h\303\251t\303\251rog\303\251n\303\251it\303\251"; /* hétérogénéité */ + wchar_t wide_string[20]; + ASSERT (mbstowcs (wide_string, locale_string, SIZEOF (wide_string)) == 13); + { + size_t length; + char *result = + my_asnprintf (NULL, &length, "%ls %d", wide_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "h\303\251t\303\251rog\303\251n\303\251it\303\251 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* Width. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%20ls %d", wide_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " h\303\251t\303\251rog\303\251n\303\251it\303\251 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_LEFT. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%-20ls %d", wide_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, "h\303\251t\303\251rog\303\251n\303\251it\303\251 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + { /* FLAG_ZERO: no effect. */ + size_t length; + char *result = + my_asnprintf (NULL, &length, "%020ls %d", wide_string, 33, 44, 55); + ASSERT (result != NULL); + ASSERT (strcmp (result, " h\303\251t\303\251rog\303\251n\303\251it\303\251 33") == 0); + ASSERT (length == strlen (result)); + free (result); + } + } } static char * @@ -230,5 +304,5 @@ main (int argc, char *argv[]) return 1; test_vasnprintf (); - return 0; + return test_exit_status; } |