diff options
| author | Mattias Andrée <m@maandree.se> | 2025-12-13 21:34:26 +0100 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2025-12-13 21:34:26 +0100 |
| commit | 093fb3b0b1f40febf7db6a708720d1198338b924 (patch) | |
| tree | 6751a13a4ee5bb1da0deab7bc570054b257d6bc3 /libj2_j2u_to_str.c | |
| parent | Add missing libj2_j2i_to_str.c (diff) | |
| download | libj2-093fb3b0b1f40febf7db6a708720d1198338b924.tar.gz libj2-093fb3b0b1f40febf7db6a708720d1198338b924.tar.bz2 libj2-093fb3b0b1f40febf7db6a708720d1198338b924.tar.xz | |
Test libj2_j2i_to_str
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to '')
| -rw-r--r-- | libj2_j2u_to_str.c | 57 |
1 files changed, 45 insertions, 12 deletions
diff --git a/libj2_j2u_to_str.c b/libj2_j2u_to_str.c index 40ead84..4fca370 100644 --- a/libj2_j2u_to_str.c +++ b/libj2_j2u_to_str.c @@ -179,6 +179,39 @@ random_ju(void) } +static size_t +j2u_to_str(struct libj2_j2u *a, char *buf, size_t bufsize, const char *digits) +{ + char buf2[BUFFER_SIZE]; + struct libj2_j2i b = {.high = a->high, .low = a->low}; + size_t ret = libj2_j2u_to_str(a, buf, bufsize, digits); + + if (!libj2_j2i_is_positive(&b)) + return ret; + + memset(buf2, '~', sizeof(buf2)); + EXPECT(libj2_j2i_to_str(&b, buf2, bufsize, digits) == ret); + if (ret) + EXPECT(!strncmp(&buf2[0], buf, bufsize)); + + if (bufsize && ret) { + libj2_minus_j2i(&b); + memset(buf2, '~', sizeof(buf2)); + EXPECT(libj2_j2i_to_str(&b, buf2, bufsize, digits) == ret + 1U); + if (bufsize > 1U) { + EXPECT(buf2[0] == '-'); + EXPECT(!strncmp(&buf2[1], buf, bufsize - 2U)); + if (bufsize < ret + 2U) + EXPECT(buf2[bufsize - 1U] == '\0'); + } else if (bufsize == 1U) { + EXPECT(buf2[0] == '\0'); + } + } + + return ret; +} + + static void check_(struct libj2_j2u *a, size_t bufsize, const char *digits, const char *expected_s, size_t expected_n) { @@ -187,7 +220,7 @@ check_(struct libj2_j2u *a, size_t bufsize, const char *digits, const char *expe size_t n; memset(buf, '~', sizeof(buf)); - EXPECT(libj2_j2u_to_str(a, buf, bufsize, digits) == expected_n); + EXPECT(j2u_to_str(a, buf, bufsize, digits) == expected_n); EXPECT(libj2_j2u_eq_j2u(a, &a_saved)); if (expected_s) { n = strlen(expected_s); @@ -211,7 +244,7 @@ check_(struct libj2_j2u *a, size_t bufsize, const char *digits, const char *expe for (; n; n--) { memset(buf, '~', sizeof(buf)); - EXPECT(libj2_j2u_to_str(a, buf, n + 1U, digits) == expected_n); + EXPECT(j2u_to_str(a, buf, n + 1U, digits) == expected_n); EXPECT(libj2_j2u_eq_j2u(a, &a_saved)); EXPECT(!memcmp(buf, expected_s, n)); EXPECT(buf[n] == '\0'); @@ -219,13 +252,13 @@ check_(struct libj2_j2u *a, size_t bufsize, const char *digits, const char *expe } memset(buf, '~', sizeof(buf)); - EXPECT(libj2_j2u_to_str(a, buf, 1, digits) == expected_n); + EXPECT(j2u_to_str(a, buf, 1, digits) == expected_n); EXPECT(libj2_j2u_eq_j2u(a, &a_saved)); EXPECT(buf[0] == '\0'); EXPECT(buf[1] == '~'); memset(buf, '~', sizeof(buf)); - EXPECT(libj2_j2u_to_str(a, buf, 0, digits) == expected_n); + EXPECT(j2u_to_str(a, buf, 0, digits) == expected_n); EXPECT(libj2_j2u_eq_j2u(a, &a_saved)); EXPECT(buf[0] == '~'); } @@ -288,7 +321,7 @@ check_zero_low(const struct libj2_j2u *a_with_low, const char *digits, const cha a = *a_with_low; a.high = 0; - EXPECT(libj2_j2u_to_str(&a, buf1, BUFFER_SIZE, digits) > 0); + EXPECT(j2u_to_str(&a, buf1, BUFFER_SIZE, digits) > 0); i = strlen(expected); j = strlen(buf1); EXPECT(j <= i); @@ -332,19 +365,19 @@ main(void) srand((unsigned)time(NULL)); libj2_j2u_zero(&a); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "") == 0); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "") == 0); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "0") == 0); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "0") == 0); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "01") == 1); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "01") == 1); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "01234") == 1); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "01234") == 1); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "01234567") == 1); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "01234567") == 1); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "0123456789") == 1); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "0123456789") == 1); EXPECT(libj2_j2u_is_zero(&a)); - EXPECT(libj2_j2u_to_str(&a, NULL, SIZE_MAX, "00") == 0); + EXPECT(j2u_to_str(&a, NULL, SIZE_MAX, "00") == 0); EXPECT(libj2_j2u_is_zero(&a)); libj2_j2u_zero(&a); |
