-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathheader.h
144 lines (128 loc) · 4.6 KB
/
header.h
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* ************************************************************************** */
/* */
/* ::: :::::::: */
/* header.h :+: :+: :+: */
/* +:+ +:+ +:+ */
/* By: apuchill <[email protected]> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2020/02/09 17:26:19 by apuchill #+# #+# */
/* Updated: 2020/02/19 14:00:38 by apuchill ### ########.fr */
/* */
/* ************************************************************************** */
#ifndef HEADER_H
# define HEADER_H
# include <unistd.h>
# include <stdlib.h>
# include <stdio.h>
# include <string.h>
# include <ctype.h>
# include <sys/types.h>
# include <sys/wait.h>
# include <stdbool.h>
# include <fcntl.h>
# define BLACK(string) "\033[30m" string "\033[0m"
# define GRAY(string) "\033[38;5;8m" string "\033[0m"
# define L_GRAY(string) "\033[38;5;245m" string "\033[0m"
# define RED(string) "\033[31m" string "\033[0m"
# define L_RED(string) "\033[38;5;9m" string "\033[0m"
# define GREEN(string) "\033[32m" string "\033[0m"
# define D_GREEN(string) "\033[38;5;22m" string "\033[0m"
# define V_GREEN(string) "\033[38;5;82m" string "\033[0m"
# define PETROL_G(string) "\033[38;5;23m" string "\033[0m"
# define PETROL_B(string) "\033[38;5;24m" string "\033[0m"
# define YELLOW(string) "\033[38;5;11m" string "\033[0m"
# define V_YELLOW(string) "\033[33m" string "\033[0m"
# define L_YELLOW(string) "\033[38;5;191m" string "\033[0m"
# define BLUE(string) "\033[34m" string "\033[0m"
# define V_BLUE(string) "\033[38;5;27m" string "\033[0m"
# define VIOLET(string) "\033[35m" string "\033[0m"
# define PINK(string) "\033[38;5;199m" string "\033[0m"
# define LILAC(string) "\033[38;5;13m" string "\033[0m"
# define PURPLE(string) "\033[38;5;93m" string "\033[0m"
# define CYAN(string) "\033[36m" string "\033[0m"
# define V_CYAN(string) "\033[38;5;44m" string "\033[0m"
# define ORANGE(string) "\033[38;5;166m" string "\033[0m"
# define V_ORANGE(string) "\033[38;5;202m" string "\033[0m"
# define HEADER_T(string) "\033[1m\033[38;5;199m" string "\033[0m"
# define HEADER_L(string) "\033[38;5;43m" string "\033[0m"
# define HEADER_A(string) "\033[1m\033[38;5;23m" string "\033[0m"
# define PARTS(string) "\033[38;5;13m" string "\033[0m"
# define FUNCTION(string) "\033[1m\033[38;5;75m" string "\033[0m"
enum e_values {
TEST_OK,
TEST_KO,
TEST_KO_11,
TEST_KO_10,
TEST_KO_6,
TEST_KO_I,
TEST_KO_I_11,
TEST_KO_I_10,
TEST_KO_I_6,
TEST_ABORT
};
/***********************/
/* Auxiliary functions */
/***********************/
int pid;
int signal_code;
void res_test(int n);
void test_nbr(int nbr);
void test_description(char *s);
void test_type1(size_t (*p_ft)(const char *), size_t (*p_libc)(const char *), char *str);
void test_type1_showres(size_t r1, size_t r2);
void test_type2(int (*p_ft)(int), int (*p_libc)(int), int lower, int upper);
# define SANDBOX(x) do { \
if ((pid = fork()) < 0) \
exit(EXIT_FAILURE); \
if (pid == 0) { \
do { x } while(0); \
exit(EXIT_SUCCESS); \
} else { \
wait(&pid); \
if (pid != 0) { \
res_test(TEST_KO); \
if ((signal_code = WTERMSIG(pid)) == 11) \
printf(L_RED("function segfaulted\t(SIGSEGV)\n")); \
if ((signal_code = WTERMSIG(pid)) == 10) \
printf(L_RED("function got bus error\t(SIGBUS)\n")); \
if ((signal_code = WTERMSIG(pid)) == 6) \
printf(L_RED("function aborted\t(SIGABRT)\n")); \
} \
} \
} while(0);
# define SANDBOX_I(x) do { \
if ((pid = fork()) < 0) \
exit(EXIT_FAILURE); \
if (pid == 0) { \
do { x } while(0); \
exit(EXIT_SUCCESS); \
} else { \
wait(&pid); \
if (pid != 0) { \
res_test(TEST_OK); \
if ((signal_code = WTERMSIG(pid)) == 11) \
printf("function segfaulted\t"); \
if ((signal_code = WTERMSIG(pid)) == 10) \
printf("function got bus error\t"); \
if ((signal_code = WTERMSIG(pid)) == 6) \
printf("function sigaborted\t"); \
} \
} \
} while(0);
/******************/
/* Test functions */
/******************/
/* ft_strlen */
void test_strlen_0(void);
void test_strlen_1(void);
void test_strlen_2(void);
void test_strlen_3(void);
void test_strlen_4(void);
void test_strlen_5(void);
/* ft_isxxxxx */
void test_isalnum(void);
void test_isalpha(void);
void test_isascii(void);
void test_isdigit(void);
void test_isprint(void);
#endif