119 lines
2.9 KiB
C
119 lines
2.9 KiB
C
#include <assert.h>
|
|
#include <errno.h>
|
|
#include <limits.h>
|
|
#include <stddef.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <eDir.h>
|
|
#include <library/xStdlib.h>
|
|
#include <public/zOmni.h>
|
|
|
|
static void test_integer_conversions(void)
|
|
{
|
|
char *end = NULL;
|
|
const char *no_digits = "xyz";
|
|
|
|
assert(LB_atoi("0") == 0);
|
|
assert(LB_atoi("42") == 42);
|
|
assert(LB_atoi("+123") == 123);
|
|
assert(LB_atoi(" -17tail") == -17);
|
|
assert(LB_atoi("no-digits") == 0);
|
|
|
|
assert(LB_atoq("0") == (SQUAD)0);
|
|
assert(LB_atoq(" 42") == (SQUAD)42);
|
|
assert(LB_atoq(" -12345tail") == (SQUAD)-12345);
|
|
assert(LB_atoq("+9876543210") == (SQUAD)9876543210LL);
|
|
assert(LB_atoq("no-digits") == (SQUAD)0);
|
|
|
|
|
|
assert(LB_atol("-12345") == -12345L);
|
|
|
|
end = NULL;
|
|
assert(LB_strtoul("ff!", &end, 16) == 255UL);
|
|
assert(*end == '!');
|
|
|
|
end = NULL;
|
|
assert(LB_strtoq("-8000000000000000", &end, 16) == (SQUAD)0x8000000000000000ULL);
|
|
assert(*end == '\0');
|
|
|
|
end = NULL;
|
|
assert(LB_strtouq("123456789abcdef!", &end, 16) == (QUAD)0x123456789abcdefULL);
|
|
assert(*end == '!');
|
|
|
|
errno = 0;
|
|
assert(LB_strtol("7f", &end, 16) == 127);
|
|
assert(*end == '\0');
|
|
assert(errno == 0);
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("-19suffix", &end, 10) == -19);
|
|
assert(*end == 's');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("+123", &end, 10) == 123);
|
|
assert(*end == '\0');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("0755", &end, 0) == 0755);
|
|
assert(*end == '\0');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("0x2a!", &end, 0) == 42);
|
|
assert(*end == '!');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("10102", &end, 2) == 10);
|
|
assert(*end == '2');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol("zZ!", &end, 36) == (35 * 36 + 35));
|
|
assert(*end == '!');
|
|
|
|
end = NULL;
|
|
assert(LB_strtol(no_digits, &end, 10) == 0);
|
|
assert(end == no_digits);
|
|
|
|
errno = 0;
|
|
end = NULL;
|
|
assert(LB_strtol("999999999999999999999999999999999999", &end, 10) == LONG_MAX);
|
|
assert(*end == '\0');
|
|
assert(errno == ERANGE);
|
|
|
|
errno = 0;
|
|
end = NULL;
|
|
assert(LB_strtol("-999999999999999999999999999999999999", &end, 10) == LONG_MIN);
|
|
assert(*end == '\0');
|
|
assert(errno == ERANGE);
|
|
}
|
|
|
|
static void test_ds_name_parser(void)
|
|
{
|
|
{
|
|
utf8_t fullName[] = ".CN=SERVER.O=EXAMPLE.";
|
|
utf8_t container[128];
|
|
utf8_t objectName[128];
|
|
|
|
LB_ParseDSObjectName(fullName, container, objectName);
|
|
assert(strcmp((const char *)objectName, "SERVER") == 0);
|
|
assert(strcmp((const char *)container, "\\EXAMPLE") == 0);
|
|
}
|
|
|
|
{
|
|
utf8_t fullName[] = "\\TREE\\ORG\\SERVER";
|
|
utf8_t container[128];
|
|
utf8_t objectName[128];
|
|
|
|
LB_ParseDSObjectName(fullName, container, objectName);
|
|
assert(strcmp((const char *)objectName, "SERVER") == 0);
|
|
assert(strcmp((const char *)container, "\\TREE\\ORG") == 0);
|
|
}
|
|
}
|
|
|
|
int main(void)
|
|
{
|
|
test_integer_conversions();
|
|
test_ds_name_parser();
|
|
return 0;
|
|
}
|