#include #include #include #include static void _ft_inttypes_functions(ft_test *t) { ft_log(t, "abs with function:\n"); ft_assert_eval(t, imaxabs(73ll), 73ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(-73ll), 73ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(0ll), 0ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(LLONG_MAX), LLONG_MAX, "%" PRIdMAX); /* Very edgy corner case */ ft_assert_eval(t, imaxabs(LLONG_MIN), LLONG_MIN, "%" PRIdMAX); #undef imaxabs ft_log(t, "\nabs with macro:\n"); ft_assert_eval(t, imaxabs(73ll), 73ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(-73ll), 73ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(0ll), 0ll, "%" PRIdMAX); ft_assert_eval(t, imaxabs(LLONG_MAX), LLONG_MAX, "%" PRIdMAX); /* Very edgy corner case */ ft_assert_eval(t, imaxabs(LLONG_MIN), LLONG_MIN, "%" PRIdMAX); ft_log(t, "\ndiv: by asserts (not shown)\n"); imaxdiv_t imd; imd = imaxdiv(73ll, 8ll); ft_assert(t, imd.quot == 9ll && imd.rem == 1ll); imd = imaxdiv(-73ll, 8ll); ft_assert(t, imd.quot == -9ll && imd.rem == -1ll); imd = imaxdiv(73ll, -8ll); ft_assert(t, imd.quot == -9ll && imd.rem == 1ll); imd = imaxdiv(-73ll, -8ll); ft_assert(t, imd.quot == 9ll && imd.rem == -1ll); ft_log(t, "\nstrtoimax and strtoumax:\n"); ft_assert_eval(t, strtoimax("-281474976710656", NULL, 0), -281474976710656ll, "%" PRIdMAX); ft_assert_eval(t, strtoumax("281474976710656", NULL, 0), 281474976710656ll, "%" PRIuMAX); } ft_test ft_inttypes_functions = { .name = "Extended integer functions", .function = _ft_inttypes_functions, };