Files
mars-nwe/tests/nwnss/stdlib/test_nwnss_stdlib.c
2026-06-17 15:30:23 +02:00

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;
}