1 #define _GNU_SOURCE
2 #include <stdio.h>
3 #include <string.h>
4 #include <cgreen/cgreen.h>
5 #include <cgreen/mocks.h>
6
7 #include <config.c>
8
9 #include "config_cf_p_tests.h"
10
11 #include "mock-config.c"
12
13 #include "test-config-api.c"
14
15 char key1[] = "ConfigVar1";
16 char val1[] = "Value1";
17 char key2[] = "ConfigVar2";
18 char val2[] = "Value2";
19 char key3[] = "ConfigVar3";
20 char val3[] = "Value3";
21 char key_unexisting[] = "Some Key";
22
fill_config(void)23 void fill_config(void)
24 {
25 cf_add_string(key1, val1);
26 cf_add_string(key2, val2);
27 cf_add_string(key3, val3);
28 cf_add_string(key1, val2); /* Different value */
29 cf_add_string(key3, val2); /* Different value, end */
30 /* leak the momory */
31 }
32
33
Ensure(config_inits)34 Ensure(config_inits)
35 {
36 int env_owr = 1;
37
38 setenv("FIDOGATE", "/tmp/mock-fidogate-dir", env_owr);
39 expect(cf_s_configdir);
40
41 cf_initialize();
42 }
43
44 GEN_CF_P_TESTS(origin, "FIDOGATE", "Origin")
45 GEN_CF_P_TESTS(organization, "FIDOGATE", "Organization")
46
Ensure(get_string_default_null)47 Ensure(get_string_default_null)
48 {
49 char *ret;
50
51 ret = cf_get_string("some_var", TRUE);
52 assert_that(ret, is_null);
53
54 ret = cf_get_string("some_var", FALSE);
55 assert_that(ret, is_null);
56 }
57
Ensure(get_string_finds_var)58 Ensure(get_string_finds_var)
59 {
60 char *ret;
61 char *exp = val2;
62
63 fill_config();
64
65 ret = cf_get_string(key2, TRUE);
66
67 assert_that(ret, is_equal_to_string(exp));
68 }
69
Ensure(get_string_doesnt_find_unexisting)70 Ensure(get_string_doesnt_find_unexisting)
71 {
72 char *ret;
73
74 fill_config();
75
76 ret = cf_get_string(key_unexisting, TRUE);
77
78 assert_that(ret, is_null);
79 }
80
Ensure(get_string_finds_same_var_from_start)81 Ensure(get_string_finds_same_var_from_start)
82 {
83 char *ret1;
84 char *ret2;
85
86 fill_config();
87
88 ret1 = cf_get_string(key1, TRUE);
89 ret2 = cf_get_string(key1, TRUE);
90
91 assert_that(ret1, is_equal_to_string(ret2));
92 }
93
Ensure(get_string_finds_different_when_continue)94 Ensure(get_string_finds_different_when_continue)
95 {
96 char *ret1;
97 char *ret2;
98
99 fill_config();
100
101 ret1 = cf_get_string(key1, TRUE);
102 ret2 = cf_get_string(key1, FALSE);
103
104 assert_that(ret1, is_not_equal_to_string(ret2));
105 }
106
create_config_suite(void)107 TestSuite *create_config_suite(void)
108 {
109 TestSuite *suite = create_named_test_suite(
110 "Config suite");
111
112 add_test(suite, config_inits);
113 ADD_CF_P_TESTS(suite, origin);
114 ADD_CF_P_TESTS(suite, organization);
115 add_test(suite, get_string_default_null);
116 add_test(suite, get_string_finds_var);
117 add_test(suite, get_string_doesnt_find_unexisting);
118 add_test(suite, get_string_finds_same_var_from_start);
119 add_test(suite, get_string_finds_different_when_continue);
120
121 return suite;
122 }
123
main(int argc,char ** argv)124 int main(int argc, char **argv) {
125 TestSuite *suite = create_config_suite();
126
127 cgreen_mocks_are(loose_mocks);
128 return run_test_suite(suite, create_text_reporter());
129 }
130