stdlib: add tests for abs, labs, llabs, div, ldiv, lldiv
This commit is contained in:
parent
c7a6d0484a
commit
770388a6e5
|
@ -24,6 +24,8 @@ set(SOURCES
|
|||
src/ctype/charprops.c
|
||||
src/ctype/classes.c
|
||||
src/ctype/convert.c
|
||||
# stdlib
|
||||
src/stdlib/arith.c
|
||||
# string
|
||||
src/string/memarray.c
|
||||
src/string/core.c
|
||||
|
|
|
@ -13,6 +13,9 @@ extern ft_test ft_ctype_functions;
|
|||
extern ft_test ft_ctype_convert_macros;
|
||||
extern ft_test ft_ctype_convert_functions;
|
||||
|
||||
/* stdlib */
|
||||
extern ft_test ft_stdlib_arith;
|
||||
|
||||
/* string */
|
||||
extern ft_test ft_string_memset;
|
||||
extern ft_test ft_string_memcpy;
|
||||
|
|
|
@ -28,7 +28,10 @@ ft_list headers_libc[] = {
|
|||
{ "Format types and options", NULL, NULL },
|
||||
{ NULL },
|
||||
}}, */
|
||||
{ "<stdlib.h>", NULL },
|
||||
{ "<stdlib.h>", (ft_test*[]){
|
||||
&ft_stdlib_arith,
|
||||
NULL,
|
||||
}},
|
||||
{ "<string.h>", (ft_test*[]){
|
||||
&ft_string_memset,
|
||||
&ft_string_memcpy,
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
#include <ft/test.h>
|
||||
#include <ft/all-tests.h>
|
||||
|
||||
static void _ft_stdlib_arith(ft_test *t)
|
||||
{
|
||||
div_t d;
|
||||
ldiv_t ld;
|
||||
lldiv_t lld;
|
||||
|
||||
ft_log(t, "abs with functions:\n");
|
||||
ft_assert_eval(t, abs(73), 73, "%d");
|
||||
ft_assert_eval(t, abs(-73), 73, "%d");
|
||||
ft_assert_eval(t, labs(73l), 73l, "%ld");
|
||||
ft_assert_eval(t, labs(-73l), 73l, "%ld");
|
||||
ft_assert_eval(t, llabs(73ll), 73ll, "%lld");
|
||||
ft_assert_eval(t, llabs(-73ll), 73ll, "%lld");
|
||||
|
||||
#undef abs
|
||||
#undef labs
|
||||
#undef llabs
|
||||
|
||||
ft_log(t, "\nabs with macros:\n");
|
||||
ft_assert_eval(t, abs(73), 73, "%d");
|
||||
ft_assert_eval(t, abs(-73), 73, "%d");
|
||||
ft_assert_eval(t, labs(73l), 73l, "%ld");
|
||||
ft_assert_eval(t, labs(-73l), 73l, "%ld");
|
||||
ft_assert_eval(t, llabs(73ll), 73ll, "%lld");
|
||||
ft_assert_eval(t, llabs(-73ll), 73ll, "%lld");
|
||||
|
||||
ft_log(t, "\ndiv: by asserts (not shown)\n");
|
||||
d = div(73, 8);
|
||||
ft_assert(t, d.quot == 9 && d.rem == 1);
|
||||
d = div(-73, 8);
|
||||
ft_assert(t, d.quot == -9 && d.rem == -1);
|
||||
d = div(73, -8);
|
||||
ft_assert(t, d.quot == -9 && d.rem == 1);
|
||||
d = div(-73, -8);
|
||||
ft_assert(t, d.quot == 9 && d.rem == -1);
|
||||
|
||||
ld = ldiv(73l, 8l);
|
||||
ft_assert(t, ld.quot == 9l && ld.rem == 1l);
|
||||
ld = ldiv(-73l, 8l);
|
||||
ft_assert(t, ld.quot == -9l && ld.rem == -1l);
|
||||
ld = ldiv(73l, -8l);
|
||||
ft_assert(t, ld.quot == -9l && ld.rem == 1l);
|
||||
ld = ldiv(-73l, -8l);
|
||||
ft_assert(t, ld.quot == 9l && ld.rem == -1l);
|
||||
|
||||
lld = lldiv(73ll, 8ll);
|
||||
ft_assert(t, lld.quot == 9ll && lld.rem == 1ll);
|
||||
lld = lldiv(-73ll, 8ll);
|
||||
ft_assert(t, lld.quot == -9ll && lld.rem == -1ll);
|
||||
lld = lldiv(73ll, -8ll);
|
||||
ft_assert(t, lld.quot == -9ll && lld.rem == 1ll);
|
||||
lld = lldiv(-73ll, -8ll);
|
||||
ft_assert(t, lld.quot == 9ll && lld.rem == -1ll);
|
||||
}
|
||||
|
||||
ft_test ft_stdlib_arith = {
|
||||
.name = "Integer arithmetic functions",
|
||||
.function = _ft_stdlib_arith,
|
||||
};
|
Loading…
Reference in New Issue