#include "libft.h" #include "test_utils.h" #include _S_CRASH_I (ft_atoi_null, ft_atoi (NULL)) _S_CRASH_I (libc_atoi_null, atoi (NULL)) int main (void) { int i; char buf[64]; char label[64]; srand (time (NULL)); _s_section ("ft_atoi"); _s_check_both_crash ("atoi NULL", _s_crash_ft_atoi_null, _s_crash_libc_atoi_null); /* edge cases */ _s_check_eq_int ("zero", ft_atoi ("0"), atoi ("0")); _s_check_eq_int ("INT_MAX", ft_atoi ("2147483647"), atoi ("2147483647")); _s_check_eq_int ("INT_MIN", ft_atoi ("-2147483648"), atoi ("-2147483648")); _s_check_eq_int ("negative", ft_atoi ("-42"), atoi ("-42")); _s_check_eq_int ("explicit +", ft_atoi ("+42"), atoi ("+42")); _s_check_eq_int ("leading spaces", ft_atoi (" 42"), atoi (" 42")); _s_check_eq_int ("leading tabs", ft_atoi ("\t\n\v\f\r 42"), atoi ("\t\n\v\f\r 42")); _s_check_eq_int ("trailing chars", ft_atoi ("42abc"), atoi ("42abc")); _s_check_eq_int ("empty string", ft_atoi (""), atoi ("")); _s_check_eq_int ("only spaces", ft_atoi (" "), atoi (" ")); _s_check_eq_int ("only sign", ft_atoi ("-"), atoi ("-")); _s_check_eq_int ("sign then space", ft_atoi ("- 42"), atoi ("- 42")); _s_check_eq_int ("double sign", ft_atoi ("--42"), atoi ("--42")); _s_check_eq_int ("space between", ft_atoi ("4 2"), atoi ("4 2")); _s_check_eq_int ("leading zeros", ft_atoi ("00042"), atoi ("00042")); /* randomized */ for (i = 0; i < _S_RAND_ITERS; i++) { int v = rand () - RAND_MAX / 2; snprintf (buf, sizeof (buf), "%d", v); snprintf (label, sizeof (label), "random %s", buf); _s_check_eq_int (label, ft_atoi (buf), atoi (buf)); } _s_print_results (); return (_s_fail != 0); }