| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| |
|
|
| static void |
| test_function (uint16_t * (*my_asnprintf) (uint16_t *, size_t *, const char *, ...)) |
| { |
| uint16_t buf[8]; |
| int size; |
|
|
| |
|
|
| for (size = 0; size <= 8; size++) |
| { |
| size_t length = size; |
| uint16_t *result = my_asnprintf (NULL, &length, "%d", 12345); |
| static const uint16_t expected[] = |
| { '1', '2', '3', '4', '5', 0 }; |
| ASSERT (result != NULL); |
| ASSERT (u16_strcmp (result, expected) == 0); |
| ASSERT (length == 5); |
| free (result); |
| } |
|
|
| for (size = 0; size <= 8; size++) |
| { |
| static const uint16_t initializer[] = |
| { 'D', 'E', 'A', 'D', 'B', 'E', 'E', 'F', 0 }; |
| static const uint16_t expected[] = |
| { '1', '2', '3', '4', '5', 0 }; |
| size_t length; |
| uint16_t *result; |
|
|
| u16_cpy (buf, initializer, 8); |
| length = size; |
| result = my_asnprintf (buf, &length, "%d", 12345); |
| ASSERT (result != NULL); |
| ASSERT (u16_strcmp (result, expected) == 0); |
| ASSERT (length == 5); |
| if (size < 6) |
| ASSERT (result != buf); |
| ASSERT (u16_cmp (buf + size, initializer + size, 8 - size) == 0); |
| if (result != buf) |
| free (result); |
| } |
|
|
| |
| { |
| size_t length; |
| uint16_t *s = my_asnprintf (NULL, &length, "x%03000000000dy\n", -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint16_t arg[] = { '@', 0 }; |
| size_t length; |
| uint16_t *s = my_asnprintf (NULL, &length, "x%03000000000lUy\n", arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
|
|
| |
| { |
| size_t length; |
| uint16_t *s = |
| my_asnprintf (NULL, &length, |
| "x%04294967306dy\n", |
| -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint16_t arg[] = { '@', 0 }; |
| size_t length; |
| uint16_t *s = |
| my_asnprintf (NULL, &length, |
| "x%04294967306lUy\n", |
| arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| size_t length; |
| uint16_t *s = |
| my_asnprintf (NULL, &length, |
| "x%018446744073709551626dy\n", |
| -17); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| { |
| static const uint16_t arg[] = { '@', 0 }; |
| size_t length; |
| uint16_t *s = |
| my_asnprintf (NULL, &length, |
| "x%018446744073709551626lUy\n", |
| arg); |
| ASSERT (s == NULL); |
| ASSERT (errno == EOVERFLOW); |
| } |
| } |
|
|