test-strnum.c revision b800cdab69e2dfe6bf1b35f7dd836e9b8d512cc3
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen/* Copyright (c) 2014-2014 Dovecot authors, see the included COPYING file */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#include "test-lib.h"
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#include <stdlib.h>
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
af99ca825f4b7674ec6dd0269bbca665775205aaTimo Sirainen#define INVALID(n) { #n, -1, 0 }
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#define VALID(n) { #n, 0, n }
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen/* always pads with leading zeros to a size of 9 digits */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainenstatic int crappy_uintmax_to_str(char *into, uintmax_t val)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen{
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#define BIGBASE 1000000000u
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#define STRINGIFY(s) #s
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#define STRINGIFY2(s) STRINGIFY(s)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int len = 0;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen if(val >= BIGBASE) {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen len = crappy_uintmax_to_str(into, val/BIGBASE);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen }
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen i_snprintf(into + len, 10, "%09lu", (unsigned long)(val % BIGBASE));
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen return len + strlen(STRINGIFY2(BIGBASE))-2;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#undef STRINGIFY2
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen#undef STRINGIFY
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen#undef BIGBASE
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen}
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainenstatic void test_str_to_uintmax(void)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen{
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen unsigned int i=0;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int randrange = rand()%15+1; /* when 1, will max out on 1s */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen uintmax_t value = 0;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int len, ret;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen char buff[50]; /* totally assumes < 159 bits */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen test_begin("str_to_uintmax in range");
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen while (i < sizeof(uintmax_t)*CHAR_BIT) {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen uintmax_t value_back;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen const char *endp;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen value = (value << 1) + 1;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen if (value >= 64)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen value -= rand()%randrange; /* don't always test the same numbers */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen len = crappy_uintmax_to_str(buff, value);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen ret = str_to_uintmax(buff, &value_back);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(ret == 0, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(value == value_back, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen /* test with trailing noise */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen buff[len] = 'x'; /* don't even null-terminate, let's be evil */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen value_back = 0x1234567890123456;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen ret = str_to_uintmax(buff, &value_back);
2200adee458ca662d32b5ec0e01d8c5cba0cc0a8Timo Sirainen test_assert_idx(ret < 0, i);
b215322367dbd94df3e2e4bb643b53460e6adc51Timo Sirainen test_assert_idx(value_back == 0x1234567890123456, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen ret = str_parse_uintmax(buff, &value_back, &endp);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(ret == 0, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(value_back == value, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(endp == &buff[len], i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen i++;
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen }
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_end();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen /* not knowing exactly how large a uintmax_t is, we have to construct
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen the troublesome near-10/9*MAX strings manually by appending digits
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen to a MAX/9 string which we can easily create. Do a wider range
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen of 30 rather than the obvious 10, just in case - all are too large.*/
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_begin("str_to_uintmax overflow corner case");
35ef661bd85c64834e3e34eeeb3c393b81108760Timo Sirainen value = UINTMAX_MAX/9-1;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen len = crappy_uintmax_to_str(buff, value);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen buff[len] = '0';
35ef661bd85c64834e3e34eeeb3c393b81108760Timo Sirainen buff[len+1] = '\0';
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen for(i = 0; i <= 30; ++i) {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int j = len + 1;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen while (buff[--j] == '9')
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen buff[j] = '0';
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen buff[j]++;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen ret = str_to_uintmax(buff, &value);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(ret < 0 && value == UINTMAX_MAX/9-1, i);
c39c3d8089fbdd8eb34646c25167aa4551064cf4Timo Sirainen }
c39c3d8089fbdd8eb34646c25167aa4551064cf4Timo Sirainen test_end();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen}
bd63b5b860658b01b1f46f26d406e1e4a9dc019aTimo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainenstatic void test_str_to_u64(void)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen{
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen unsigned int i;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen const struct {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen const char *input;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int ret;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen uint64_t val;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen } u64tests[] = {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(-1),
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(foo),
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen VALID(0),
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen VALID(000000000000000000000000000000000000000000000000000000000000000),
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen { "000000000000000000000000000000000000000000000000000001000000001", 0, 1000000001 },
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen { "18446744073709551615", 0, 18446744073709551615ULL },
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(18446744073709551616),
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(20496382304121724010), /* 2^64*10/9 doesn't wrap */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(20496382304121724017), /* 2^64*10/9 wraps only after addition */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen INVALID(20496382304121724020), /* 2^64*10/9 wraps on multiply*/
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen };
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_begin("str_to_uint64");
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen for (i = 0; i < N_ELEMENTS(u64tests); ++i) {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen uint64_t val = 0xBADBEEF15BADF00D;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int ret = str_to_uint64(u64tests[i].input, &val);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(ret == u64tests[i].ret, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen if (ret == 0)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(val == u64tests[i].val, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen else
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(val == 0xBADBEEF15BADF00D, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen if (ret == 0)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen T_BEGIN {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen const char *longer = t_strconcat(u64tests[i].input, "x", NULL);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen ret = str_to_uint64(longer, &val);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(ret < 0, i);
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen } T_END;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen }
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_end();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen}
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainenstatic void test_str_to_u32(void)
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen{
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen unsigned int i;
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen const struct {
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen const char *input;
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen int ret;
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen uint32_t val;
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen } u32tests[] = {
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(0),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(-0),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(4294967295),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(4294967296),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(4772185880),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(4772185884),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(4772185890),
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen };
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen test_begin("str_to_uint32");
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen for (i = 0; i < N_ELEMENTS(u32tests); ++i) {
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen uint32_t val = 0xDEADF00D;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int ret = str_to_uint32(u32tests[i].input, &val);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_assert_idx(ret == u32tests[i].ret, i);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen if (ret == 0)
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_assert_idx(val == u32tests[i].val, i);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen else
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_assert_idx(val == 0xDEADF00D, i);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen }
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_end();
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen}
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen/* Assumes long long is 64 bit, 2's complement */
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainenstatic void test_str_to_llong(void)
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen{
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen unsigned int i;
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen const struct {
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen const char *input;
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen int ret;
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen long long val;
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen } i64tests[] = {
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(0),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(-0),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen INVALID(--0),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(2147483648),
5fa253bd316540ec280ca76b39d62a9e32da228bTimo Sirainen VALID(-2147483649),
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen VALID(9223372036854775807),
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen { "-9223372036854775808", 0, -9223372036854775807-1 },
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen INVALID(9223372036854775808),
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen INVALID(-9223372036854775809),
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen };
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_begin("str_to_llong");
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen for (i = 0; i < N_ELEMENTS(i64tests); ++i) {
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen long long val = 123456789;
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen int ret = str_to_llong(i64tests[i].input, &val);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen test_assert_idx(ret == i64tests[i].ret, i);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen if (ret == 0)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(val == i64tests[i].val, i);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen else
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_assert_idx(val == 123456789, i);
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen }
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen test_end();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen}
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen/* Assumes int is 32 bit, 2's complement */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainenstatic void test_str_to_i32(void)
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen{
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen unsigned int i;
b10c3f9ed997748fdbb03b9daadc8c31eed02120Timo Sirainen const struct {
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen const char *input;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int ret;
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen int val;
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen } i32tests[] = {
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen VALID(0),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen VALID(-0),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen INVALID(--0),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen VALID(2147483647),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen VALID(-2147483648),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen INVALID(2147483648),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen INVALID(-2147483649),
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen };
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen test_begin("str_to_int");
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen for (i = 0; i < N_ELEMENTS(i32tests); ++i) {
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen int val = 123456789;
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen int ret = str_to_int(i32tests[i].input, &val);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen test_assert_idx(ret == i32tests[i].ret, i);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen if (ret == 0)
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen test_assert_idx(val == i32tests[i].val, i);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen else
8c3872c26b18421d62c52cbfe0b81b1d79239f89Timo Sirainen test_assert_idx(val == 123456789, i);
2f19f8ff906a0017b906763e0f7675d49ab0e58fTimo Sirainen }
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_end();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen}
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainenvoid test_strnum(void)
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen{
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen /* If the above isn't true, then we do expect some failures possibly */
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_str_to_uintmax();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_str_to_u64();
31fd39a3a3d544b1a8afb9aef07f180d0d40fda2Timo Sirainen test_str_to_u32();
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen test_str_to_llong();
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen test_str_to_i32();
e18e90938ffd9e31c796c405404be0b7dcd5c807Timo Sirainen}
c8593b070319d0ff83f8d6c4b5ed5abf2d578a06Timo Sirainen