Zappy - Year end project 2
This is a project that Epitech asked us to create in order to allow us to reveiw the notions of the current year.
Loading...
Searching...
No Matches
arg_parser_test.c
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2023
3** my_zappy
4** File description:
5** arg_parser_test.c
6*/
7
8#include <criterion/criterion.h>
9
10#include "arg_parse.h"
11
12Test(arg_parser, get_nb_mandatory)
13{
14 int nb_mandatory = get_nb_mandatory_option(SERVER_OPTION);
15
16 cr_assert_eq(nb_mandatory, 5);
17}
18
20{
21 int mandatory_ok;
22 const char *av[13] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
23 "toto", "titi", "-c", "2", NULL};
24
25 mandatory_ok = check_mandatory_set(13, av, 5, SERVER_OPTION);
26 cr_assert_eq(mandatory_ok, 0);
27}
28
29Test(arg_parser, check_mandatory_set_with_f)
30{
31 int mandatory_ok;
32 const char *av[15] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
33 "toto", "titi", "-c", "2", "-f", "200", NULL };
34
35 mandatory_ok = check_mandatory_set(15, av, 6, SERVER_OPTION);
36 cr_assert_eq(mandatory_ok, 0);
37}
38
39Test(arg_parser, check_mandatory_set_incorrect, .description = "Port missing")
40{
41 int mandatory_ok;
42 const char *av[11] = {"zappy", "-x", "30", "-y", "100", "-n", "toto",
43 "titi", "-c", "2", NULL };
44
45 mandatory_ok = check_mandatory_set(11, av, 4, SERVER_OPTION);
46 cr_assert_eq(mandatory_ok, -1);
47}
48
50{
51 int nb_parameter;
52 const char *av[13] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
53 "toto", "titi", "-c", "2", NULL };
54
55 nb_parameter = get_nb_parameter(13, av);
56 cr_assert_eq(nb_parameter, 5);
57}
58
59Test(arg_parser, get_nb_parameter_with_f)
60{
61 int nb_parameter;
62 const char *av[15] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
63 "toto", "titi", "-c", "2", "-f", "200", NULL };
64
65 nb_parameter = get_nb_parameter(15, av);
66 cr_assert_eq(nb_parameter, 6);
67}
68
69Test(arg_parser, is_param)
70{
71 int r_val;
72 const char *av[15] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
73 "toto", "titi", "-c", "2", "-f", "200", NULL };
74
75 r_val = is_param(av[1],
76 (const struct option_list_s *)&SERVER_OPTION[0].option);
77 cr_assert(r_val != -1);
78}
79
80Test(arg_parser, is_param_false)
81{
82 int r_val;
83 const char *av[15] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
84 "toto", "titi", "-c", "2", "-f", "200", NULL };
85
86 r_val = is_param(av[0],
87 (const struct option_list_s *)&SERVER_OPTION[0].option);
88 cr_assert(r_val == -1);
89}
90
91Test(arg_parser, get_arg)
92{
93 struct arg_s **args;
94 char **teams;
95 const char *av[13] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
96 "toto", "titi", "-c", "2", NULL };
97
98 args = get_zappy_args(13, av, SERVER_OPTION);
99 if (args == NULL)
100 exit(1);
101 cr_assert_str_eq(args[0]->name, "-p");
102 cr_assert_str_eq((char *)args[0]->value, "8888");
103 cr_assert_str_eq(args[1]->name, "-x");
104 cr_assert_str_eq((char *)args[1]->value, "30");
105 cr_assert_str_eq(args[2]->name, "-y");
106 cr_assert_str_eq((char *)args[2]->value, "100");
107 cr_assert_str_eq(args[3]->name, "-n");
108 cr_assert_eq(args[3]->nb_value, 2);
109 teams = (char **)args[3]->value;
110 cr_assert_str_eq(teams[0], "toto");
111 cr_assert_str_eq(teams[1], "titi");
112 cr_assert_str_eq(args[4]->name, "-c");
113 cr_assert_str_eq((char *)args[4]->value, "2");
114}
115
116Test(arg_parser, get_arg_with_f)
117{
118 struct arg_s **args;
119 char **teams;
120 const char *av[15] = {"zappy", "-p", "8888", "-x", "30", "-y", "100", "-n",
121 "toto", "titi", "-c", "2", "-f", "200", NULL };
122
123 args = get_zappy_args(15, av, SERVER_OPTION);
124 if (args == NULL)
125 exit(1);
126 cr_assert_str_eq(args[0]->name, "-p");
127 cr_assert_str_eq((char *)args[0]->value, "8888");
128 cr_assert_str_eq(args[1]->name, "-x");
129 cr_assert_str_eq((char *)args[1]->value, "30");
130 cr_assert_str_eq(args[2]->name, "-y");
131 cr_assert_str_eq((char *)args[2]->value, "100");
132 cr_assert_str_eq(args[3]->name, "-n");
133 cr_assert_eq(args[3]->nb_value, 2);
134 teams = (char **)args[3]->value;
135 cr_assert_str_eq(teams[0], "toto");
136 cr_assert_str_eq(teams[1], "titi");
137 cr_assert_str_eq(args[4]->name, "-c");
138 cr_assert_str_eq((char *)args[4]->value, "2");
139 cr_assert_str_eq(args[5]->name, "-f");
140 cr_assert_str_eq((char *)args[5]->value, "200");
141
142}
143
144Test(arg_parser, get_arg_fail)
145{
146 struct arg_s **args;
147 const char *av[13] = {"zappy", "-x", "30", "-y", "100", "-n",
148 "toto", "titi", "-c", "2", "-f", "200", NULL };
149
150 args = get_zappy_args(13, av, SERVER_OPTION);
151 cr_assert(args == NULL);
152}
int get_nb_parameter(int ac, const char **av)
Get the number of parameter passed to the program.
int check_mandatory_set(int ac, const char **av, int nb_param, const struct option_list_s *opt_list)
Check if there's every mandatory options in the arguments passed to the program.
struct arg_s ** get_zappy_args(int ac, const char **av, const struct option_list_s *opt_l)
The principal function to get every arguments.
Definition arg_parse.c:89
int is_param(const char *str, const struct option_list_s *opt_list)
Check if a string is a parameter.
int get_nb_mandatory_option(const struct option_list_s *opt_list)
Get the number of mandatory options needed for the server.
Test(arg_parser, get_nb_mandatory)
char * name
Definition arg_parse.h:17
void * value
Definition arg_parse.h:19
size_t nb_value
Definition arg_parse.h:18