Greenbone Vulnerability Management Libraries 22.32.0
settings_tests.c File Reference
#include "settings.c"
#include <cgreen/cgreen.h>
#include <cgreen/mocks.h>
#include <glib.h>
#include <glib/gstdio.h>
#include <stdio.h>
#include <unistd.h>
Include dependency graph for settings_tests.c:

Go to the source code of this file.

Functions

 Describe (settings)
 BeforeEach (settings)
 AfterEach (settings)
 Ensure (settings, init_settings_iterator_from_file_with_null_params)
 Ensure (settings, init_settings_iterator_from_nonexistent_file)
 Ensure (settings, init_settings_iterator_from_valid_file)
 Ensure (settings, settings_iterator_operations)
 Ensure (settings, settings_group_handling)
 Ensure (settings, settings_cleanup_function)
int main (int argc, char **argv)

Function Documentation

◆ AfterEach()

AfterEach ( settings )

Definition at line 21 of file settings_tests.c.

22{
23}

◆ BeforeEach()

BeforeEach ( settings )

Definition at line 17 of file settings_tests.c.

18{
19}

◆ Describe()

Describe ( settings )

◆ Ensure() [1/6]

Ensure ( settings ,
init_settings_iterator_from_file_with_null_params  )

Definition at line 25 of file settings_tests.c.

26{
27 settings_iterator_t iterator;
28 int ret;
29
30 // Test with NULL filename
31 ret = init_settings_iterator_from_file (&iterator, NULL, "group");
32 assert_that (ret, is_equal_to (-1));
33
34 // Test with NULL group
35 ret = init_settings_iterator_from_file (&iterator, "filename", NULL);
36 assert_that (ret, is_equal_to (-1));
37
38 // Test with both NULL
39 ret = init_settings_iterator_from_file (&iterator, NULL, NULL);
40 assert_that (ret, is_equal_to (-1));
41}
int init_settings_iterator_from_file(settings_iterator_t *iterator, const gchar *filename, const gchar *group)
Initialise a settings iterator from a file.
Definition settings.c:98
Struct holding options to iterate over a GKeyFile.
Definition settings.h:36

References init_settings_iterator_from_file().

Here is the call graph for this function:

◆ Ensure() [2/6]

Ensure ( settings ,
init_settings_iterator_from_nonexistent_file  )

Definition at line 43 of file settings_tests.c.

44{
45 settings_iterator_t iterator;
46 int ret;
47
48 ret = init_settings_iterator_from_file (&iterator, "missing.conf", "group");
49 assert_that (ret, is_equal_to (-1));
50}

References init_settings_iterator_from_file().

Here is the call graph for this function:

◆ Ensure() [3/6]

Ensure ( settings ,
init_settings_iterator_from_valid_file  )

Definition at line 52 of file settings_tests.c.

53{
54 settings_iterator_t iterator;
55 int ret;
56 gchar *config_file = "test_settings.conf";
57 FILE *file;
58
59 // Create a temporary configuration file
60 file = fopen (config_file, "w");
61 assert_that (file, is_not_null);
62 fprintf (file, "key1=value1\nkey2=value2\nkey3=value3\n");
63 fclose (file);
64
65 // Initialize iterator from file
66 ret = init_settings_iterator_from_file (&iterator, config_file, "Misc");
67 assert_that (ret, is_equal_to (0));
68
69 // Clean up
70 cleanup_settings_iterator (&iterator);
71 g_remove (config_file);
72}
void cleanup_settings_iterator(settings_iterator_t *iterator)
Cleanup a settings iterator.
Definition settings.c:136

References cleanup_settings_iterator(), and init_settings_iterator_from_file().

Here is the call graph for this function:

◆ Ensure() [4/6]

Ensure ( settings ,
settings_cleanup_function  )

Definition at line 193 of file settings_tests.c.

194{
195 settings_t settings;
196 settings.file_name = g_strdup ("test.conf");
197 settings.group_name = g_strdup ("test_group");
198 settings.key_file = g_key_file_new ();
199
200 // This should not crash
201 settings_cleanup (&settings);
202}
void settings_cleanup(settings_t *settings)
Cleanup a settings structure.
Definition settings.c:81
Struct holding options for settings taken from a key-value config file.
Definition settings.h:23
GKeyFile * key_file
Definition settings.h:26
gchar * group_name
Definition settings.h:25
gchar * file_name
Definition settings.h:24

References settings_t::file_name, settings_t::group_name, settings_t::key_file, and settings_cleanup().

Here is the call graph for this function:

◆ Ensure() [5/6]

Ensure ( settings ,
settings_group_handling  )

Definition at line 123 of file settings_tests.c.

124{
125 settings_iterator_t iterator;
126 int ret;
127 gchar *config_file = "test_group_settings.conf";
128 FILE *file;
129 const gchar *name;
130 gchar *value;
131
132 // Create a temporary configuration file with multiple groups
133 file = fopen (config_file, "w");
134 assert_that (file, is_not_null);
135 fprintf (file, "[group1]\n"
136 "key1=value1\nkey2=value2\n\n"
137 "[group2]\n"
138 "key3=value3\nkey4=value4\n");
139 fclose (file);
140
141 // Initialize iterator from file for group1
142 ret = init_settings_iterator_from_file (&iterator, config_file, "group1");
143 assert_that (ret, is_equal_to (0));
144
145 // Test iteration for group1
146 assert_that (settings_iterator_next (&iterator), is_true);
147 name = settings_iterator_name (&iterator);
148 value = settings_iterator_value (&iterator);
149 assert_that (name, is_equal_to_string ("key1"));
150 assert_that (value, is_equal_to_string ("value1"));
151 g_free (value);
152
153 assert_that (settings_iterator_next (&iterator), is_true);
154 name = settings_iterator_name (&iterator);
155 value = settings_iterator_value (&iterator);
156 assert_that (name, is_equal_to_string ("key2"));
157 assert_that (value, is_equal_to_string ("value2"));
158 g_free (value);
159
160 // No more items in group1
161 assert_that (settings_iterator_next (&iterator), is_false);
162
163 // Clean up iterator
164 cleanup_settings_iterator (&iterator);
165
166 // Initialize iterator from file for group2
167 ret = init_settings_iterator_from_file (&iterator, config_file, "group2");
168 assert_that (ret, is_equal_to (0));
169
170 // Test iteration for group2
171 assert_that (settings_iterator_next (&iterator), is_true);
172 name = settings_iterator_name (&iterator);
173 value = settings_iterator_value (&iterator);
174 assert_that (name, is_equal_to_string ("key3"));
175 assert_that (value, is_equal_to_string ("value3"));
176 g_free (value);
177
178 assert_that (settings_iterator_next (&iterator), is_true);
179 name = settings_iterator_name (&iterator);
180 value = settings_iterator_value (&iterator);
181 assert_that (name, is_equal_to_string ("key4"));
182 assert_that (value, is_equal_to_string ("value4"));
183 g_free (value);
184
185 // No more items in group2
186 assert_that (settings_iterator_next (&iterator), is_false);
187
188 // Clean up
189 cleanup_settings_iterator (&iterator);
190 g_remove (config_file);
191}
gboolean settings_iterator_next(settings_iterator_t *iterator)
Increment an iterator.
Definition settings.c:150
gchar * settings_iterator_value(settings_iterator_t *iterator)
Get the value from a settings iterator.
Definition settings.c:179
const gchar * settings_iterator_name(settings_iterator_t *iterator)
Get the name from a settings iterator.
Definition settings.c:166

References cleanup_settings_iterator(), init_settings_iterator_from_file(), settings_iterator_name(), settings_iterator_next(), and settings_iterator_value().

Here is the call graph for this function:

◆ Ensure() [6/6]

Ensure ( settings ,
settings_iterator_operations  )

Definition at line 74 of file settings_tests.c.

75{
76 settings_iterator_t iterator;
77 int ret;
78 gchar *config_file = "test_settings.conf";
79 FILE *file;
80 const gchar *name;
81 gchar *value;
82
83 // Create a temporary configuration file
84 file = fopen (config_file, "w");
85 assert_that (file, is_not_null);
86 fprintf (file, "key1=value1\nkey2=value2\nkey3=value3\n");
87 fclose (file);
88
89 // Initialize iterator from file
90 ret = init_settings_iterator_from_file (&iterator, config_file, "Misc");
91 assert_that (ret, is_equal_to (0));
92
93 // Test iteration
94 assert_that (settings_iterator_next (&iterator), is_true);
95 name = settings_iterator_name (&iterator);
96 value = settings_iterator_value (&iterator);
97 assert_that (name, is_equal_to_string ("key1"));
98 assert_that (value, is_equal_to_string ("value1"));
99 g_free (value);
100
101 assert_that (settings_iterator_next (&iterator), is_true);
102 name = settings_iterator_name (&iterator);
103 value = settings_iterator_value (&iterator);
104 assert_that (name, is_equal_to_string ("key2"));
105 assert_that (value, is_equal_to_string ("value2"));
106 g_free (value);
107
108 assert_that (settings_iterator_next (&iterator), is_true);
109 name = settings_iterator_name (&iterator);
110 value = settings_iterator_value (&iterator);
111 assert_that (name, is_equal_to_string ("key3"));
112 assert_that (value, is_equal_to_string ("value3"));
113 g_free (value);
114
115 // No more items
116 assert_that (settings_iterator_next (&iterator), is_false);
117
118 // Clean up
119 cleanup_settings_iterator (&iterator);
120 g_remove (config_file);
121}

References cleanup_settings_iterator(), init_settings_iterator_from_file(), settings_iterator_name(), settings_iterator_next(), and settings_iterator_value().

Here is the call graph for this function:

◆ main()

int main ( int argc,
char ** argv )

Definition at line 205 of file settings_tests.c.

206{
207 int ret;
208 TestSuite *suite;
209
210 suite = create_test_suite ();
211
212 add_test_with_context (suite, settings,
213 init_settings_iterator_from_file_with_null_params);
214 add_test_with_context (suite, settings,
215 init_settings_iterator_from_nonexistent_file);
216 add_test_with_context (suite, settings,
217 init_settings_iterator_from_valid_file);
218 add_test_with_context (suite, settings, settings_iterator_operations);
219 add_test_with_context (suite, settings, settings_group_handling);
220 add_test_with_context (suite, settings, settings_cleanup_function);
221
222 if (argc > 1)
223 ret = run_single_test (suite, argv[1], create_text_reporter ());
224 else
225 ret = run_test_suite (suite, create_text_reporter ());
226
227 destroy_test_suite (suite);
228
229 return ret;
230}