| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| static void |
| test_function (char * (*my_asnprintf) (char *, size_t *, const char *, ...)) |
| { |
| char buf[8]; |
| int size; |
|
|
| |
|
|
| for (size = 0; size <= 8; size++) |
| { |
| size_t length = size; |
| char *result = my_asnprintf (NULL, &length, "%d", 12345); |
| ASSERT (result != NULL); |
| ASSERT (strcmp (result, "12345") == 0); |
| ASSERT (length == 5); |
| free (result); |
| } |
|
|
| for (size = 0; size <= 8; size++) |
| { |
| size_t length; |
| char *result; |
|
|
| memcpy (buf, "DEADBEEF", 8); |
| length = size; |
| result = my_asnprintf (buf, &length, "%d", 12345); |
| ASSERT (result != NULL); |
| ASSERT (strcmp (result, "12345") == 0); |
| ASSERT (length == 5); |
| if (size < 6) |
| ASSERT (result != buf); |
| ASSERT (memcmp (buf + size, &"DEADBEEF"[size], 8 - size) == 0); |
| if (result != buf) |
| free (result); |
| } |
|
|
| |
| { |
| size_t length; |
| char *s = my_asnprintf (NULL, &length, "x%03000000000dy\n", -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint8_t arg[] = { '@', 0 }; |
| size_t length; |
| char *s = my_asnprintf (NULL, &length, "x%03000000000Uy\n", arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
|
|
| |
| { |
| size_t length; |
| char *s = |
| my_asnprintf (NULL, &length, |
| "x%04294967306dy\n", |
| -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint8_t arg[] = { '@', 0 }; |
| size_t length; |
| char *s = |
| my_asnprintf (NULL, &length, |
| "x%04294967306Uy\n", |
| arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| size_t length; |
| char *s = |
| my_asnprintf (NULL, &length, |
| "x%018446744073709551626dy\n", |
| -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint8_t arg[] = { '@', 0 }; |
| size_t length; |
| char *s = |
| my_asnprintf (NULL, &length, |
| "x%018446744073709551626Uy\n", |
| arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| } |
|
|