1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
#include "libft.h"
#include "test_utils.h"
#include <limits.h>
_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);
}
|