1e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#include "test/jemalloc_test.h" 2e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 3e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_BEGIN(test_pow2_ceil) 4e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 5e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans unsigned i, pow2; 6e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans size_t x; 7e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 8e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_zu_eq(pow2_ceil(0), 0, "Unexpected result"); 9e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 10e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (i = 0; i < sizeof(size_t) * 8; i++) { 11e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_zu_eq(pow2_ceil(ZU(1) << i), ZU(1) << i, 12e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result"); 13e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 14e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 15e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (i = 2; i < sizeof(size_t) * 8; i++) { 16e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_zu_eq(pow2_ceil((ZU(1) << i) - 1), ZU(1) << i, 17e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result"); 18e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 19e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 20e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (i = 0; i < sizeof(size_t) * 8 - 1; i++) { 21e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_zu_eq(pow2_ceil((ZU(1) << i) + 1), ZU(1) << (i+1), 22e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result"); 23e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 24e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 25e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (pow2 = 1; pow2 < 25; pow2++) { 26e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (x = (ZU(1) << (pow2-1)) + 1; x <= ZU(1) << pow2; x++) { 27e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_zu_eq(pow2_ceil(x), ZU(1) << pow2, 28e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result, x=%zu", x); 29e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 30e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 31e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 32e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_END 33e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 34e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_BEGIN(test_malloc_strtoumax_no_endptr) 35e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 36e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int err; 37e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 38e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans set_errno(0); 39e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_ju_eq(malloc_strtoumax("0", NULL, 0), 0, "Unexpected result"); 40e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans err = get_errno(); 41e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_d_eq(err, 0, "Unexpected failure"); 42e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 43e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_END 44e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 45e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_BEGIN(test_malloc_strtoumax) 46e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 47e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans struct test_s { 48e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans const char *input; 49e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans const char *expected_remainder; 50e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int base; 51e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int expected_errno; 52e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans const char *expected_errno_name; 53e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans uintmax_t expected_x; 54e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans }; 55da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans#define ERR(e) e, #e 56da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans#define KUMAX(x) ((uintmax_t)x##ULL) 57e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans struct test_s tests[] = { 58e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"0", "0", -1, ERR(EINVAL), UINTMAX_MAX}, 59e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"0", "0", 1, ERR(EINVAL), UINTMAX_MAX}, 60e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"0", "0", 37, ERR(EINVAL), UINTMAX_MAX}, 61e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 62e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"", "", 0, ERR(EINVAL), UINTMAX_MAX}, 63e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"+", "+", 0, ERR(EINVAL), UINTMAX_MAX}, 64e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"++3", "++3", 0, ERR(EINVAL), UINTMAX_MAX}, 65e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans {"-", "-", 0, ERR(EINVAL), UINTMAX_MAX}, 66e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 67da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"42", "", 0, ERR(0), KUMAX(42)}, 68da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"+42", "", 0, ERR(0), KUMAX(42)}, 69da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"-42", "", 0, ERR(0), KUMAX(-42)}, 70da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"042", "", 0, ERR(0), KUMAX(042)}, 71da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"+042", "", 0, ERR(0), KUMAX(042)}, 72da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"-042", "", 0, ERR(0), KUMAX(-042)}, 73da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0x42", "", 0, ERR(0), KUMAX(0x42)}, 74da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"+0x42", "", 0, ERR(0), KUMAX(0x42)}, 75da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"-0x42", "", 0, ERR(0), KUMAX(-0x42)}, 76da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 77da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0", "", 0, ERR(0), KUMAX(0)}, 78da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"1", "", 0, ERR(0), KUMAX(1)}, 79da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 80da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"42", "", 0, ERR(0), KUMAX(42)}, 81da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {" 42", "", 0, ERR(0), KUMAX(42)}, 82da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"42 ", " ", 0, ERR(0), KUMAX(42)}, 83da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0x", "x", 0, ERR(0), KUMAX(0)}, 84da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"42x", "x", 0, ERR(0), KUMAX(42)}, 85da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 86da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"07", "", 0, ERR(0), KUMAX(7)}, 87da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"010", "", 0, ERR(0), KUMAX(8)}, 88da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"08", "8", 0, ERR(0), KUMAX(0)}, 89da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0_", "_", 0, ERR(0), KUMAX(0)}, 90da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 91da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0x", "x", 0, ERR(0), KUMAX(0)}, 92da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0X", "X", 0, ERR(0), KUMAX(0)}, 93da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0xg", "xg", 0, ERR(0), KUMAX(0)}, 94da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0XA", "", 0, ERR(0), KUMAX(10)}, 95da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 96da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"010", "", 10, ERR(0), KUMAX(10)}, 97da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0x3", "x3", 10, ERR(0), KUMAX(0)}, 98da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans 99da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"12", "2", 2, ERR(0), KUMAX(1)}, 100da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"78", "8", 8, ERR(0), KUMAX(7)}, 101da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"9a", "a", 10, ERR(0), KUMAX(9)}, 102da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"9A", "A", 10, ERR(0), KUMAX(9)}, 103da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"fg", "g", 16, ERR(0), KUMAX(15)}, 104da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"FG", "G", 16, ERR(0), KUMAX(15)}, 105da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0xfg", "g", 16, ERR(0), KUMAX(15)}, 106da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"0XFG", "G", 16, ERR(0), KUMAX(15)}, 107da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"z_", "_", 36, ERR(0), KUMAX(35)}, 108da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans {"Z_", "_", 36, ERR(0), KUMAX(35)} 109e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans }; 110e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#undef ERR 111da74e77beefbc6ea0f9d7dbf663bc5df48fbd887Jason Evans#undef KUMAX 112e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans unsigned i; 113e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 114e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (i = 0; i < sizeof(tests)/sizeof(struct test_s); i++) { 115e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans struct test_s *test = &tests[i]; 116e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int err; 117e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans uintmax_t result; 118e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans char *remainder; 119e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 120e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans set_errno(0); 121e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans result = malloc_strtoumax(test->input, &remainder, test->base); 122e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans err = get_errno(); 123e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_d_eq(err, test->expected_errno, 124e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Expected errno %s for \"%s\", base %d", 125e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test->expected_errno_name, test->input, test->base); 126e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_str_eq(remainder, test->expected_remainder, 127e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected remainder for \"%s\", base %d", 128e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test->input, test->base); 129e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans if (err == 0) { 130e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_ju_eq(result, test->expected_x, 131e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result for \"%s\", base %d", 132e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test->input, test->base); 133e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 134e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 135e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 136e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_END 137e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 138e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_BEGIN(test_malloc_snprintf_truncated) 139e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 140e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#define BUFLEN 15 141e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans char buf[BUFLEN]; 142e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int result; 143e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans size_t len; 144b105e65e3ceb60def3908aa2945f94011d61e3fdMike Hommey#define TEST(expected_str_untruncated, ...) do { \ 145b105e65e3ceb60def3908aa2945f94011d61e3fdMike Hommey result = malloc_snprintf(buf, len, __VA_ARGS__); \ 146e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_d_eq(strncmp(buf, expected_str_untruncated, len-1), 0, \ 147e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected string inequality (\"%s\" vs \"%s\")", \ 148e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans buf, expected_str_untruncated); \ 149e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_d_eq(result, strlen(expected_str_untruncated), \ 150e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans "Unexpected result"); \ 151e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} while (0) 152e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 153e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans for (len = 1; len < BUFLEN; len++) { 154e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("012346789", "012346789"); 155e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123b", "a%sb", "0123"); 156e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a01234567", "a%s%s", "0123", "4567"); 157e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123 ", "a%-6s", "0123"); 158e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 0123", "a%6s", "0123"); 159e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012", "a%6.3s", "0123"); 160e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012", "a%*.*s", 6, 3, "0123"); 161e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 123b", "a% db", 123); 162e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a123b", "a%-db", 123); 163e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a-123b", "a%-db", -123); 164e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a+123b", "a%+db", 123); 165e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans } 166e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#undef BUFLEN 167e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#undef TEST 168e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 169e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_END 170e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 171e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_BEGIN(test_malloc_snprintf) 172e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 173e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#define BUFLEN 128 174e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans char buf[BUFLEN]; 175e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans int result; 176b105e65e3ceb60def3908aa2945f94011d61e3fdMike Hommey#define TEST(expected_str, ...) do { \ 177b105e65e3ceb60def3908aa2945f94011d61e3fdMike Hommey result = malloc_snprintf(buf, sizeof(buf), __VA_ARGS__); \ 178e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_str_eq(buf, expected_str, "Unexpected output"); \ 179e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans assert_d_eq(result, strlen(expected_str), "Unexpected result"); \ 180e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} while (0) 181e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 182e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("hello", "hello"); 183e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 1840c4e743eaf2ab6bcfd56e002fb82f95801b9292eJason Evans TEST("50%, 100%", "50%%, %d%%", 100); 1850c4e743eaf2ab6bcfd56e002fb82f95801b9292eJason Evans 186e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123b", "a%sb", "0123"); 187e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 188e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 0123b", "a%5sb", "0123"); 189e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 0123b", "a%*sb", 5, "0123"); 190e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 191e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123 b", "a%-5sb", "0123"); 192e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123b", "a%*sb", -1, "0123"); 193e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123 b", "a%*sb", -5, "0123"); 194e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123 b", "a%-*sb", -5, "0123"); 195e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 196e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a012b", "a%.3sb", "0123"); 197e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a012b", "a%.*sb", 3, "0123"); 198e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a0123b", "a%.*sb", -3, "0123"); 199e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 200e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012b", "a%5.3sb", "0123"); 201e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012b", "a%5.*sb", 3, "0123"); 202e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012b", "a%*.3sb", 5, "0123"); 203e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 012b", "a%*.*sb", 5, 3, "0123"); 204e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("a 0123b", "a%*.*sb", 5, -3, "0123"); 205e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 206e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_abcd_", "_%x_", 0xabcd); 207e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0xabcd_", "_%#x_", 0xabcd); 208e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%o_", 01234); 209e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#o_", 01234); 210e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%u_", 1234); 211e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 212e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%d_", 1234); 213e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_ 1234_", "_% d_", 1234); 214e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_+1234_", "_%+d_", 1234); 215e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%d_", -1234); 216e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_% d_", -1234); 217e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%+d_", -1234); 218e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 219e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%d_", -1234); 220e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%d_", 1234); 221e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%i_", -1234); 222e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%i_", 1234); 223e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#o_", 01234); 224e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%u_", 1234); 225e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#x_", 0x1234abc); 226e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#X_", 0x1234abc); 227e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_c_", "_%c_", 'c'); 228e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_string_", "_%s_", "string"); 229e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x42_", "_%p_", ((void *)0x42)); 230e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 231e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%ld_", ((long)-1234)); 232e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%ld_", ((long)1234)); 233e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%li_", ((long)-1234)); 234e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%li_", ((long)1234)); 235e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#lo_", ((long)01234)); 236e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%lu_", ((long)1234)); 237e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#lx_", ((long)0x1234abc)); 238e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#lX_", ((long)0x1234ABC)); 239e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 240e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%lld_", ((long long)-1234)); 241e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%lld_", ((long long)1234)); 242e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%lli_", ((long long)-1234)); 243e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%lli_", ((long long)1234)); 244e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#llo_", ((long long)01234)); 245e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%llu_", ((long long)1234)); 246e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#llx_", ((long long)0x1234abc)); 247e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#llX_", ((long long)0x1234ABC)); 248e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 249e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%qd_", ((long long)-1234)); 250e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%qd_", ((long long)1234)); 251e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%qi_", ((long long)-1234)); 252e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%qi_", ((long long)1234)); 253e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#qo_", ((long long)01234)); 254e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%qu_", ((long long)1234)); 255e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#qx_", ((long long)0x1234abc)); 256e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#qX_", ((long long)0x1234ABC)); 257e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 258e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%jd_", ((intmax_t)-1234)); 259e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%jd_", ((intmax_t)1234)); 260e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%ji_", ((intmax_t)-1234)); 261e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%ji_", ((intmax_t)1234)); 262e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#jo_", ((intmax_t)01234)); 263e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%ju_", ((intmax_t)1234)); 264e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#jx_", ((intmax_t)0x1234abc)); 265e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#jX_", ((intmax_t)0x1234ABC)); 266e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 267e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%td_", ((ptrdiff_t)1234)); 268e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%td_", ((ptrdiff_t)-1234)); 269e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%ti_", ((ptrdiff_t)1234)); 270e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%ti_", ((ptrdiff_t)-1234)); 271e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 272e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%zd_", ((ssize_t)-1234)); 273e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%zd_", ((ssize_t)1234)); 274e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_-1234_", "_%zi_", ((ssize_t)-1234)); 275e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%zi_", ((ssize_t)1234)); 276e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_01234_", "_%#zo_", ((ssize_t)01234)); 277e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_1234_", "_%zu_", ((ssize_t)1234)); 278e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0x1234abc_", "_%#zx_", ((ssize_t)0x1234abc)); 279e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans TEST("_0X1234ABC_", "_%#zX_", ((ssize_t)0x1234ABC)); 280e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans#undef BUFLEN 281e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 282e18c25d23de0e845f0ee7e11d02c1be044738a3cJason EvansTEST_END 283e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 284e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evansint 285e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evansmain(void) 286e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans{ 287e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans 288e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans return (test( 289e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test_pow2_ceil, 290e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test_malloc_strtoumax_no_endptr, 291e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test_malloc_strtoumax, 292e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test_malloc_snprintf_truncated, 293e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans test_malloc_snprintf)); 294e18c25d23de0e845f0ee7e11d02c1be044738a3cJason Evans} 295