int uf_atoi_base(const char *nbr, size_t base) { unsigned char c; bool neg; int ret; ret = 0; nbr = uf_atoi_check_base(uf_skip_space(nbr), &neg, &c, base); while (true) { if (uf_is_digit(c) == true) c = (unsigned char)(c - '0'); else if (uf_is_alpha(c) == true) c = (unsigned char)(c - (uf_is_upper(c) == true ? 'A' - 10 : 'a' - 10)); else break ; if ((unsigned int)c >= base) break ; ret = ret * (int)base; ret = ret + c; c = *(const unsigned char *)nbr; nbr = nbr + 1; } if (neg == true) ret = -ret; return (ret); }
void D_UNIT_FUNCT(ret_val) { F_UNIT_ASSERT(uf_is_upper('A') == true); F_UNIT_ASSERT(uf_is_upper('a') == false); F_UNIT_ASSERT(uf_is_lower('A') == false); F_UNIT_ASSERT(uf_is_lower('a') == true); F_UNIT_ASSERT(uf_is_alpha('a') == true); F_UNIT_ASSERT(uf_is_alpha('9') == false); F_UNIT_ASSERT(uf_is_printable(0) == false); F_UNIT_ASSERT(uf_is_printable('a') == true); F_UNIT_ASSERT(uf_is_digit('a') == false); F_UNIT_ASSERT(uf_is_digit('9') == true); F_UNIT_ASSERT(uf_is_space(' ') == true); F_UNIT_ASSERT(uf_is_space('9') == false); F_UNIT_ASSERT(uf_str_len("") == 0); F_UNIT_ASSERT(uf_str_len("foo") == 3); F_UNIT_ASSERT(uf_strcmp("foo", "foo") == 0); F_UNIT_ASSERT(uf_strcmp("foo", "fDo") != 0); F_UNIT_ASSERT(uf_strncmp("foo", "foo", 2) == 0); F_UNIT_ASSERT(uf_strncmp("foo", "fDo", 2) != 0); }