-
Notifications
You must be signed in to change notification settings - Fork 279
/
ex_config.c
119 lines (83 loc) · 3.26 KB
/
ex_config.c
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
/*
* Example program for the Allegro library.
*
* Test config file reading and writing.
*/
#include <stdio.h>
#include "allegro5/allegro.h"
#include "common.c"
static int passed = true;
#define TEST(name, expr) \
do { \
if (expr) \
log_printf(" PASS - %s\n", name); \
else { \
log_printf("!FAIL - %s\n", name); \
passed = false; \
} \
} while (0)
int main(int argc, char **argv)
{
ALLEGRO_CONFIG *cfg;
const char *value;
ALLEGRO_CONFIG_SECTION *iterator;
ALLEGRO_CONFIG_ENTRY *iterator2;
(void)argc;
(void)argv;
if (!al_init()) {
abort_example("Could not init Allegro.\n");
}
open_log();
cfg = al_load_config_file("data/sample.cfg");
if (!cfg) {
abort_example("Couldn't load data/sample.cfg\n");
}
value = al_get_config_value(cfg, NULL, "old_var");
TEST("global var", value && !strcmp(value, "old global value"));
value = al_get_config_value(cfg, "section", "old_var");
TEST("section var", value && !strcmp(value, "old section value"));
value = al_get_config_value(cfg, "", "mysha.xpm");
TEST("long value", value && strlen(value) == 1394);
/* Test removing. */
al_set_config_value(cfg, "empty", "key_remove", "to be removed");
al_remove_config_key(cfg, "empty", "key_remove");
al_set_config_value(cfg, "schrödinger", "box", "cat");
al_remove_config_section(cfg, "schrödinger");
/* Test whether iterating through our whole sample.cfg returns all
* sections and entries, in order.
*/
value = al_get_first_config_section(cfg, &iterator);
TEST("section1", value && !strcmp(value, ""));
value = al_get_first_config_entry(cfg, value, &iterator2);
TEST("entry1", value && !strcmp(value, "old_var"));
value = al_get_next_config_entry(&iterator2);
TEST("entry2", value && !strcmp(value, "mysha.xpm"));
value = al_get_next_config_entry(&iterator2);
TEST("entry3", value == NULL);
value = al_get_next_config_section(&iterator);
TEST("section2", value && !strcmp(value, "section"));
value = al_get_first_config_entry(cfg, value, &iterator2);
TEST("entry4", value && !strcmp(value, "old_var"));
value = al_get_next_config_entry(&iterator2);
TEST("entry5", value == NULL);
value = al_get_next_config_section(&iterator);
TEST("section3", value);
value = al_get_first_config_entry(cfg, value, &iterator2);
TEST("entry6", value);
value = al_get_next_config_entry(&iterator2);
TEST("entry7", value == NULL);
value = al_get_next_config_section(&iterator);
TEST("empty", value && !strcmp(value, "empty"));
value = al_get_first_config_entry(cfg, value, &iterator2);
TEST("empty entry", value == NULL);
value = al_get_next_config_section(&iterator);
TEST("section4", value == NULL);
al_set_config_value(cfg, "", "new_var", "new value");
al_set_config_value(cfg, "section", "old_var", "new value");
TEST("save_config", al_save_config_file("test.cfg", cfg));
log_printf("Done\n");
al_destroy_config(cfg);
close_log(true);
return passed ? 0 : 1;
}
/* vim: set sts=3 sw=3 et: */