root / check-qdict.c @ a8a00822
History | View | Annotate | Download (8.9 kB)
1 | 7b8c51ad | Luiz Capitulino | /*
|
---|---|---|---|
2 | 7b8c51ad | Luiz Capitulino | * QDict unit-tests.
|
3 | 7b8c51ad | Luiz Capitulino | *
|
4 | 7b8c51ad | Luiz Capitulino | * Copyright (C) 2009 Red Hat Inc.
|
5 | 7b8c51ad | Luiz Capitulino | *
|
6 | 7b8c51ad | Luiz Capitulino | * Authors:
|
7 | 7b8c51ad | Luiz Capitulino | * Luiz Capitulino <lcapitulino@redhat.com>
|
8 | 41836a9f | Luiz Capitulino | *
|
9 | 41836a9f | Luiz Capitulino | * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
|
10 | 41836a9f | Luiz Capitulino | * See the COPYING.LIB file in the top-level directory.
|
11 | 7b8c51ad | Luiz Capitulino | */
|
12 | 7b8c51ad | Luiz Capitulino | #include <check.h> |
13 | 7b8c51ad | Luiz Capitulino | |
14 | 7b8c51ad | Luiz Capitulino | #include "qint.h" |
15 | 7b8c51ad | Luiz Capitulino | #include "qdict.h" |
16 | 7b8c51ad | Luiz Capitulino | #include "qstring.h" |
17 | 7b8c51ad | Luiz Capitulino | #include "qemu-common.h" |
18 | 7b8c51ad | Luiz Capitulino | |
19 | 7b8c51ad | Luiz Capitulino | /*
|
20 | 7b8c51ad | Luiz Capitulino | * Public Interface test-cases
|
21 | 7b8c51ad | Luiz Capitulino | *
|
22 | 7b8c51ad | Luiz Capitulino | * (with some violations to access 'private' data)
|
23 | 7b8c51ad | Luiz Capitulino | */
|
24 | 7b8c51ad | Luiz Capitulino | |
25 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_new_test) |
26 | 7b8c51ad | Luiz Capitulino | { |
27 | 7b8c51ad | Luiz Capitulino | QDict *qdict; |
28 | 7b8c51ad | Luiz Capitulino | |
29 | 7b8c51ad | Luiz Capitulino | qdict = qdict_new(); |
30 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict != NULL);
|
31 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(qdict) == 0);
|
32 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict->base.refcnt == 1);
|
33 | 7b8c51ad | Luiz Capitulino | fail_unless(qobject_type(QOBJECT(qdict)) == QTYPE_QDICT); |
34 | 7b8c51ad | Luiz Capitulino | |
35 | 7b8c51ad | Luiz Capitulino | // destroy doesn't exit yet
|
36 | 7b8c51ad | Luiz Capitulino | free(qdict); |
37 | 7b8c51ad | Luiz Capitulino | } |
38 | 7b8c51ad | Luiz Capitulino | END_TEST |
39 | 7b8c51ad | Luiz Capitulino | |
40 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_put_obj_test) |
41 | 7b8c51ad | Luiz Capitulino | { |
42 | 7b8c51ad | Luiz Capitulino | QInt *qi; |
43 | 7b8c51ad | Luiz Capitulino | QDict *qdict; |
44 | 7b8c51ad | Luiz Capitulino | QDictEntry *ent; |
45 | 7b8c51ad | Luiz Capitulino | const int num = 42; |
46 | 7b8c51ad | Luiz Capitulino | |
47 | 7b8c51ad | Luiz Capitulino | qdict = qdict_new(); |
48 | 7b8c51ad | Luiz Capitulino | |
49 | 7b8c51ad | Luiz Capitulino | // key "" will have tdb hash 12345
|
50 | 7b8c51ad | Luiz Capitulino | qdict_put_obj(qdict, "", QOBJECT(qint_from_int(num)));
|
51 | 7b8c51ad | Luiz Capitulino | |
52 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(qdict) == 1);
|
53 | c8bc3cd7 | Luiz Capitulino | ent = QLIST_FIRST(&qdict->table[12345 % QDICT_BUCKET_MAX]);
|
54 | 7b8c51ad | Luiz Capitulino | qi = qobject_to_qint(ent->value); |
55 | 7b8c51ad | Luiz Capitulino | fail_unless(qint_get_int(qi) == num); |
56 | 7b8c51ad | Luiz Capitulino | |
57 | 7b8c51ad | Luiz Capitulino | // destroy doesn't exit yet
|
58 | 7b8c51ad | Luiz Capitulino | QDECREF(qi); |
59 | 7267c094 | Anthony Liguori | g_free(ent->key); |
60 | 7267c094 | Anthony Liguori | g_free(ent); |
61 | 7267c094 | Anthony Liguori | g_free(qdict); |
62 | 7b8c51ad | Luiz Capitulino | } |
63 | 7b8c51ad | Luiz Capitulino | END_TEST |
64 | 7b8c51ad | Luiz Capitulino | |
65 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_destroy_simple_test) |
66 | 7b8c51ad | Luiz Capitulino | { |
67 | 7b8c51ad | Luiz Capitulino | QDict *qdict; |
68 | 7b8c51ad | Luiz Capitulino | |
69 | 7b8c51ad | Luiz Capitulino | qdict = qdict_new(); |
70 | 7b8c51ad | Luiz Capitulino | qdict_put_obj(qdict, "num", QOBJECT(qint_from_int(0))); |
71 | 7b8c51ad | Luiz Capitulino | qdict_put_obj(qdict, "str", QOBJECT(qstring_from_str("foo"))); |
72 | 7b8c51ad | Luiz Capitulino | |
73 | 7b8c51ad | Luiz Capitulino | QDECREF(qdict); |
74 | 7b8c51ad | Luiz Capitulino | } |
75 | 7b8c51ad | Luiz Capitulino | END_TEST |
76 | 7b8c51ad | Luiz Capitulino | |
77 | 7b8c51ad | Luiz Capitulino | static QDict *tests_dict = NULL; |
78 | 7b8c51ad | Luiz Capitulino | |
79 | 7b8c51ad | Luiz Capitulino | static void qdict_setup(void) |
80 | 7b8c51ad | Luiz Capitulino | { |
81 | 7b8c51ad | Luiz Capitulino | tests_dict = qdict_new(); |
82 | 7b8c51ad | Luiz Capitulino | fail_unless(tests_dict != NULL);
|
83 | 7b8c51ad | Luiz Capitulino | } |
84 | 7b8c51ad | Luiz Capitulino | |
85 | 7b8c51ad | Luiz Capitulino | static void qdict_teardown(void) |
86 | 7b8c51ad | Luiz Capitulino | { |
87 | 7b8c51ad | Luiz Capitulino | QDECREF(tests_dict); |
88 | 7b8c51ad | Luiz Capitulino | tests_dict = NULL;
|
89 | 7b8c51ad | Luiz Capitulino | } |
90 | 7b8c51ad | Luiz Capitulino | |
91 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_test) |
92 | 7b8c51ad | Luiz Capitulino | { |
93 | 7b8c51ad | Luiz Capitulino | QInt *qi; |
94 | 7b8c51ad | Luiz Capitulino | QObject *obj; |
95 | 7b8c51ad | Luiz Capitulino | const int value = -42; |
96 | 7b8c51ad | Luiz Capitulino | const char *key = "test"; |
97 | 7b8c51ad | Luiz Capitulino | |
98 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(value)); |
99 | 7b8c51ad | Luiz Capitulino | |
100 | 7b8c51ad | Luiz Capitulino | obj = qdict_get(tests_dict, key); |
101 | 7b8c51ad | Luiz Capitulino | fail_unless(obj != NULL);
|
102 | 7b8c51ad | Luiz Capitulino | |
103 | 7b8c51ad | Luiz Capitulino | qi = qobject_to_qint(obj); |
104 | 7b8c51ad | Luiz Capitulino | fail_unless(qint_get_int(qi) == value); |
105 | 7b8c51ad | Luiz Capitulino | } |
106 | 7b8c51ad | Luiz Capitulino | END_TEST |
107 | 7b8c51ad | Luiz Capitulino | |
108 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_int_test) |
109 | 7b8c51ad | Luiz Capitulino | { |
110 | 7b8c51ad | Luiz Capitulino | int ret;
|
111 | 7b8c51ad | Luiz Capitulino | const int value = 100; |
112 | 7b8c51ad | Luiz Capitulino | const char *key = "int"; |
113 | 7b8c51ad | Luiz Capitulino | |
114 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(value)); |
115 | 7b8c51ad | Luiz Capitulino | |
116 | 7b8c51ad | Luiz Capitulino | ret = qdict_get_int(tests_dict, key); |
117 | 7b8c51ad | Luiz Capitulino | fail_unless(ret == value); |
118 | 7b8c51ad | Luiz Capitulino | } |
119 | 7b8c51ad | Luiz Capitulino | END_TEST |
120 | 7b8c51ad | Luiz Capitulino | |
121 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_try_int_test) |
122 | 7b8c51ad | Luiz Capitulino | { |
123 | 7b8c51ad | Luiz Capitulino | int ret;
|
124 | 7b8c51ad | Luiz Capitulino | const int value = 100; |
125 | 7b8c51ad | Luiz Capitulino | const char *key = "int"; |
126 | 7b8c51ad | Luiz Capitulino | |
127 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(value)); |
128 | 7b8c51ad | Luiz Capitulino | |
129 | 7b8c51ad | Luiz Capitulino | ret = qdict_get_try_int(tests_dict, key, 0);
|
130 | 7b8c51ad | Luiz Capitulino | fail_unless(ret == value); |
131 | 7b8c51ad | Luiz Capitulino | } |
132 | 7b8c51ad | Luiz Capitulino | END_TEST |
133 | 7b8c51ad | Luiz Capitulino | |
134 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_str_test) |
135 | 7b8c51ad | Luiz Capitulino | { |
136 | 7b8c51ad | Luiz Capitulino | const char *p; |
137 | 7b8c51ad | Luiz Capitulino | const char *key = "key"; |
138 | 7b8c51ad | Luiz Capitulino | const char *str = "string"; |
139 | 7b8c51ad | Luiz Capitulino | |
140 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qstring_from_str(str)); |
141 | 7b8c51ad | Luiz Capitulino | |
142 | 7b8c51ad | Luiz Capitulino | p = qdict_get_str(tests_dict, key); |
143 | 7b8c51ad | Luiz Capitulino | fail_unless(p != NULL);
|
144 | 7b8c51ad | Luiz Capitulino | fail_unless(strcmp(p, str) == 0);
|
145 | 7b8c51ad | Luiz Capitulino | } |
146 | 7b8c51ad | Luiz Capitulino | END_TEST |
147 | 7b8c51ad | Luiz Capitulino | |
148 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_try_str_test) |
149 | 7b8c51ad | Luiz Capitulino | { |
150 | 7b8c51ad | Luiz Capitulino | const char *p; |
151 | 7b8c51ad | Luiz Capitulino | const char *key = "key"; |
152 | 7b8c51ad | Luiz Capitulino | const char *str = "string"; |
153 | 7b8c51ad | Luiz Capitulino | |
154 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qstring_from_str(str)); |
155 | 7b8c51ad | Luiz Capitulino | |
156 | 7b8c51ad | Luiz Capitulino | p = qdict_get_try_str(tests_dict, key); |
157 | 7b8c51ad | Luiz Capitulino | fail_unless(p != NULL);
|
158 | 7b8c51ad | Luiz Capitulino | fail_unless(strcmp(p, str) == 0);
|
159 | 7b8c51ad | Luiz Capitulino | } |
160 | 7b8c51ad | Luiz Capitulino | END_TEST |
161 | 7b8c51ad | Luiz Capitulino | |
162 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_haskey_not_test) |
163 | 7b8c51ad | Luiz Capitulino | { |
164 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_haskey(tests_dict, "test") == 0); |
165 | 7b8c51ad | Luiz Capitulino | } |
166 | 7b8c51ad | Luiz Capitulino | END_TEST |
167 | 7b8c51ad | Luiz Capitulino | |
168 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_haskey_test) |
169 | 7b8c51ad | Luiz Capitulino | { |
170 | 7b8c51ad | Luiz Capitulino | const char *key = "test"; |
171 | 7b8c51ad | Luiz Capitulino | |
172 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(0));
|
173 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_haskey(tests_dict, key) == 1);
|
174 | 7b8c51ad | Luiz Capitulino | } |
175 | 7b8c51ad | Luiz Capitulino | END_TEST |
176 | 7b8c51ad | Luiz Capitulino | |
177 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_del_test) |
178 | 7b8c51ad | Luiz Capitulino | { |
179 | 7b8c51ad | Luiz Capitulino | const char *key = "key test"; |
180 | 7b8c51ad | Luiz Capitulino | |
181 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qstring_from_str("foo"));
|
182 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(tests_dict) == 1);
|
183 | 7b8c51ad | Luiz Capitulino | |
184 | 7b8c51ad | Luiz Capitulino | qdict_del(tests_dict, key); |
185 | 7b8c51ad | Luiz Capitulino | |
186 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(tests_dict) == 0);
|
187 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_haskey(tests_dict, key) == 0);
|
188 | 7b8c51ad | Luiz Capitulino | } |
189 | 7b8c51ad | Luiz Capitulino | END_TEST |
190 | 7b8c51ad | Luiz Capitulino | |
191 | 7b8c51ad | Luiz Capitulino | START_TEST(qobject_to_qdict_test) |
192 | 7b8c51ad | Luiz Capitulino | { |
193 | 7b8c51ad | Luiz Capitulino | fail_unless(qobject_to_qdict(QOBJECT(tests_dict)) == tests_dict); |
194 | 7b8c51ad | Luiz Capitulino | } |
195 | 7b8c51ad | Luiz Capitulino | END_TEST |
196 | 7b8c51ad | Luiz Capitulino | |
197 | d02c6bd4 | Luiz Capitulino | START_TEST(qdict_iterapi_test) |
198 | d02c6bd4 | Luiz Capitulino | { |
199 | d02c6bd4 | Luiz Capitulino | int count;
|
200 | d02c6bd4 | Luiz Capitulino | const QDictEntry *ent;
|
201 | d02c6bd4 | Luiz Capitulino | |
202 | d02c6bd4 | Luiz Capitulino | fail_unless(qdict_first(tests_dict) == NULL);
|
203 | d02c6bd4 | Luiz Capitulino | |
204 | d02c6bd4 | Luiz Capitulino | qdict_put(tests_dict, "key1", qint_from_int(1)); |
205 | d02c6bd4 | Luiz Capitulino | qdict_put(tests_dict, "key2", qint_from_int(2)); |
206 | d02c6bd4 | Luiz Capitulino | qdict_put(tests_dict, "key3", qint_from_int(3)); |
207 | d02c6bd4 | Luiz Capitulino | |
208 | d02c6bd4 | Luiz Capitulino | count = 0;
|
209 | d02c6bd4 | Luiz Capitulino | for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
|
210 | d02c6bd4 | Luiz Capitulino | fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
|
211 | d02c6bd4 | Luiz Capitulino | count++; |
212 | d02c6bd4 | Luiz Capitulino | } |
213 | d02c6bd4 | Luiz Capitulino | |
214 | d02c6bd4 | Luiz Capitulino | fail_unless(count == qdict_size(tests_dict)); |
215 | d02c6bd4 | Luiz Capitulino | |
216 | d02c6bd4 | Luiz Capitulino | /* Do it again to test restarting */
|
217 | d02c6bd4 | Luiz Capitulino | count = 0;
|
218 | d02c6bd4 | Luiz Capitulino | for (ent = qdict_first(tests_dict); ent; ent = qdict_next(tests_dict, ent)){
|
219 | d02c6bd4 | Luiz Capitulino | fail_unless(qdict_haskey(tests_dict, qdict_entry_key(ent)) == 1);
|
220 | d02c6bd4 | Luiz Capitulino | count++; |
221 | d02c6bd4 | Luiz Capitulino | } |
222 | d02c6bd4 | Luiz Capitulino | |
223 | d02c6bd4 | Luiz Capitulino | fail_unless(count == qdict_size(tests_dict)); |
224 | d02c6bd4 | Luiz Capitulino | } |
225 | d02c6bd4 | Luiz Capitulino | END_TEST |
226 | d02c6bd4 | Luiz Capitulino | |
227 | 7b8c51ad | Luiz Capitulino | /*
|
228 | 7b8c51ad | Luiz Capitulino | * Errors test-cases
|
229 | 7b8c51ad | Luiz Capitulino | */
|
230 | 7b8c51ad | Luiz Capitulino | |
231 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_put_exists_test) |
232 | 7b8c51ad | Luiz Capitulino | { |
233 | 7b8c51ad | Luiz Capitulino | int value;
|
234 | 7b8c51ad | Luiz Capitulino | const char *key = "exists"; |
235 | 7b8c51ad | Luiz Capitulino | |
236 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(1));
|
237 | 7b8c51ad | Luiz Capitulino | qdict_put(tests_dict, key, qint_from_int(2));
|
238 | 7b8c51ad | Luiz Capitulino | |
239 | 7b8c51ad | Luiz Capitulino | value = qdict_get_int(tests_dict, key); |
240 | 7b8c51ad | Luiz Capitulino | fail_unless(value == 2);
|
241 | 29ec3156 | Luiz Capitulino | |
242 | 29ec3156 | Luiz Capitulino | fail_unless(qdict_size(tests_dict) == 1);
|
243 | 7b8c51ad | Luiz Capitulino | } |
244 | 7b8c51ad | Luiz Capitulino | END_TEST |
245 | 7b8c51ad | Luiz Capitulino | |
246 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_get_not_exists_test) |
247 | 7b8c51ad | Luiz Capitulino | { |
248 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_get(tests_dict, "foo") == NULL); |
249 | 7b8c51ad | Luiz Capitulino | } |
250 | 7b8c51ad | Luiz Capitulino | END_TEST |
251 | 7b8c51ad | Luiz Capitulino | |
252 | 7b8c51ad | Luiz Capitulino | /*
|
253 | 7b8c51ad | Luiz Capitulino | * Stress test-case
|
254 | 7b8c51ad | Luiz Capitulino | *
|
255 | 7b8c51ad | Luiz Capitulino | * This is a lot big for a unit-test, but there is no other place
|
256 | 7b8c51ad | Luiz Capitulino | * to have it.
|
257 | 7b8c51ad | Luiz Capitulino | */
|
258 | 7b8c51ad | Luiz Capitulino | |
259 | 7b8c51ad | Luiz Capitulino | static void remove_dots(char *string) |
260 | 7b8c51ad | Luiz Capitulino | { |
261 | 7b8c51ad | Luiz Capitulino | char *p = strchr(string, ':'); |
262 | 7b8c51ad | Luiz Capitulino | if (p)
|
263 | 7b8c51ad | Luiz Capitulino | *p = '\0';
|
264 | 7b8c51ad | Luiz Capitulino | } |
265 | 7b8c51ad | Luiz Capitulino | |
266 | 7b8c51ad | Luiz Capitulino | static QString *read_line(FILE *file, char *key) |
267 | 7b8c51ad | Luiz Capitulino | { |
268 | 7b8c51ad | Luiz Capitulino | char value[128]; |
269 | 7b8c51ad | Luiz Capitulino | |
270 | 7464f058 | Stefan Weil | if (fscanf(file, "%127s%127s", key, value) == EOF) { |
271 | 7b8c51ad | Luiz Capitulino | return NULL; |
272 | 7464f058 | Stefan Weil | } |
273 | 7b8c51ad | Luiz Capitulino | remove_dots(key); |
274 | 7b8c51ad | Luiz Capitulino | return qstring_from_str(value);
|
275 | 7b8c51ad | Luiz Capitulino | } |
276 | 7b8c51ad | Luiz Capitulino | |
277 | 7b8c51ad | Luiz Capitulino | #define reset_file(file) fseek(file, 0L, SEEK_SET) |
278 | 7b8c51ad | Luiz Capitulino | |
279 | 7b8c51ad | Luiz Capitulino | START_TEST(qdict_stress_test) |
280 | 7b8c51ad | Luiz Capitulino | { |
281 | 7b8c51ad | Luiz Capitulino | size_t lines; |
282 | 7b8c51ad | Luiz Capitulino | char key[128]; |
283 | 7b8c51ad | Luiz Capitulino | FILE *test_file; |
284 | 7b8c51ad | Luiz Capitulino | QDict *qdict; |
285 | 7b8c51ad | Luiz Capitulino | QString *value; |
286 | 7b8c51ad | Luiz Capitulino | const char *test_file_path = "qdict-test-data.txt"; |
287 | 7b8c51ad | Luiz Capitulino | |
288 | 7b8c51ad | Luiz Capitulino | test_file = fopen(test_file_path, "r");
|
289 | 7b8c51ad | Luiz Capitulino | fail_unless(test_file != NULL);
|
290 | 7b8c51ad | Luiz Capitulino | |
291 | 7b8c51ad | Luiz Capitulino | // Create the dict
|
292 | 7b8c51ad | Luiz Capitulino | qdict = qdict_new(); |
293 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict != NULL);
|
294 | 7b8c51ad | Luiz Capitulino | |
295 | 7b8c51ad | Luiz Capitulino | // Add everything from the test file
|
296 | 7b8c51ad | Luiz Capitulino | for (lines = 0;; lines++) { |
297 | 7b8c51ad | Luiz Capitulino | value = read_line(test_file, key); |
298 | 7b8c51ad | Luiz Capitulino | if (!value)
|
299 | 7b8c51ad | Luiz Capitulino | break;
|
300 | 7b8c51ad | Luiz Capitulino | |
301 | 7b8c51ad | Luiz Capitulino | qdict_put(qdict, key, value); |
302 | 7b8c51ad | Luiz Capitulino | } |
303 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(qdict) == lines); |
304 | 7b8c51ad | Luiz Capitulino | |
305 | 7b8c51ad | Luiz Capitulino | // Check if everything is really in there
|
306 | 7b8c51ad | Luiz Capitulino | reset_file(test_file); |
307 | 7b8c51ad | Luiz Capitulino | for (;;) {
|
308 | 7b8c51ad | Luiz Capitulino | const char *str1, *str2; |
309 | 7b8c51ad | Luiz Capitulino | |
310 | 7b8c51ad | Luiz Capitulino | value = read_line(test_file, key); |
311 | 7b8c51ad | Luiz Capitulino | if (!value)
|
312 | 7b8c51ad | Luiz Capitulino | break;
|
313 | 7b8c51ad | Luiz Capitulino | |
314 | 7b8c51ad | Luiz Capitulino | str1 = qstring_get_str(value); |
315 | 7b8c51ad | Luiz Capitulino | |
316 | 7b8c51ad | Luiz Capitulino | str2 = qdict_get_str(qdict, key); |
317 | 7b8c51ad | Luiz Capitulino | fail_unless(str2 != NULL);
|
318 | 7b8c51ad | Luiz Capitulino | |
319 | 7b8c51ad | Luiz Capitulino | fail_unless(strcmp(str1, str2) == 0);
|
320 | 7b8c51ad | Luiz Capitulino | |
321 | 7b8c51ad | Luiz Capitulino | QDECREF(value); |
322 | 7b8c51ad | Luiz Capitulino | } |
323 | 7b8c51ad | Luiz Capitulino | |
324 | 7b8c51ad | Luiz Capitulino | // Delete everything
|
325 | 7b8c51ad | Luiz Capitulino | reset_file(test_file); |
326 | 7b8c51ad | Luiz Capitulino | for (;;) {
|
327 | 7b8c51ad | Luiz Capitulino | value = read_line(test_file, key); |
328 | 7b8c51ad | Luiz Capitulino | if (!value)
|
329 | 7b8c51ad | Luiz Capitulino | break;
|
330 | 7b8c51ad | Luiz Capitulino | |
331 | 7b8c51ad | Luiz Capitulino | qdict_del(qdict, key); |
332 | 7b8c51ad | Luiz Capitulino | QDECREF(value); |
333 | 7b8c51ad | Luiz Capitulino | |
334 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_haskey(qdict, key) == 0);
|
335 | 7b8c51ad | Luiz Capitulino | } |
336 | 7b8c51ad | Luiz Capitulino | fclose(test_file); |
337 | 7b8c51ad | Luiz Capitulino | |
338 | 7b8c51ad | Luiz Capitulino | fail_unless(qdict_size(qdict) == 0);
|
339 | 7b8c51ad | Luiz Capitulino | QDECREF(qdict); |
340 | 7b8c51ad | Luiz Capitulino | } |
341 | 7b8c51ad | Luiz Capitulino | END_TEST |
342 | 7b8c51ad | Luiz Capitulino | |
343 | 7b8c51ad | Luiz Capitulino | static Suite *qdict_suite(void) |
344 | 7b8c51ad | Luiz Capitulino | { |
345 | 7b8c51ad | Luiz Capitulino | Suite *s; |
346 | 7b8c51ad | Luiz Capitulino | TCase *qdict_public_tcase; |
347 | 7b8c51ad | Luiz Capitulino | TCase *qdict_public2_tcase; |
348 | 7b8c51ad | Luiz Capitulino | TCase *qdict_stress_tcase; |
349 | 7b8c51ad | Luiz Capitulino | TCase *qdict_errors_tcase; |
350 | 7b8c51ad | Luiz Capitulino | |
351 | 7b8c51ad | Luiz Capitulino | s = suite_create("QDict test-suite");
|
352 | 7b8c51ad | Luiz Capitulino | |
353 | 7b8c51ad | Luiz Capitulino | qdict_public_tcase = tcase_create("Public Interface");
|
354 | 7b8c51ad | Luiz Capitulino | suite_add_tcase(s, qdict_public_tcase); |
355 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public_tcase, qdict_new_test); |
356 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public_tcase, qdict_put_obj_test); |
357 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public_tcase, qdict_destroy_simple_test); |
358 | 7b8c51ad | Luiz Capitulino | |
359 | 7b8c51ad | Luiz Capitulino | /* Continue, but now with fixtures */
|
360 | 7b8c51ad | Luiz Capitulino | qdict_public2_tcase = tcase_create("Public Interface (2)");
|
361 | 7b8c51ad | Luiz Capitulino | suite_add_tcase(s, qdict_public2_tcase); |
362 | 7b8c51ad | Luiz Capitulino | tcase_add_checked_fixture(qdict_public2_tcase, qdict_setup, qdict_teardown); |
363 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_get_test); |
364 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_get_int_test); |
365 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_get_try_int_test); |
366 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_get_str_test); |
367 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_get_try_str_test); |
368 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_haskey_not_test); |
369 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_haskey_test); |
370 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_del_test); |
371 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qobject_to_qdict_test); |
372 | d02c6bd4 | Luiz Capitulino | tcase_add_test(qdict_public2_tcase, qdict_iterapi_test); |
373 | 7b8c51ad | Luiz Capitulino | |
374 | 7b8c51ad | Luiz Capitulino | qdict_errors_tcase = tcase_create("Errors");
|
375 | 7b8c51ad | Luiz Capitulino | suite_add_tcase(s, qdict_errors_tcase); |
376 | 7b8c51ad | Luiz Capitulino | tcase_add_checked_fixture(qdict_errors_tcase, qdict_setup, qdict_teardown); |
377 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_errors_tcase, qdict_put_exists_test); |
378 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_errors_tcase, qdict_get_not_exists_test); |
379 | 7b8c51ad | Luiz Capitulino | |
380 | 7b8c51ad | Luiz Capitulino | /* The Big one */
|
381 | 7b8c51ad | Luiz Capitulino | qdict_stress_tcase = tcase_create("Stress Test");
|
382 | 7b8c51ad | Luiz Capitulino | suite_add_tcase(s, qdict_stress_tcase); |
383 | 7b8c51ad | Luiz Capitulino | tcase_add_test(qdict_stress_tcase, qdict_stress_test); |
384 | 7b8c51ad | Luiz Capitulino | |
385 | 7b8c51ad | Luiz Capitulino | return s;
|
386 | 7b8c51ad | Luiz Capitulino | } |
387 | 7b8c51ad | Luiz Capitulino | |
388 | 7b8c51ad | Luiz Capitulino | int main(void) |
389 | 7b8c51ad | Luiz Capitulino | { |
390 | 7b8c51ad | Luiz Capitulino | int nf;
|
391 | 7b8c51ad | Luiz Capitulino | Suite *s; |
392 | 7b8c51ad | Luiz Capitulino | SRunner *sr; |
393 | 7b8c51ad | Luiz Capitulino | |
394 | 7b8c51ad | Luiz Capitulino | s = qdict_suite(); |
395 | 7b8c51ad | Luiz Capitulino | sr = srunner_create(s); |
396 | 7b8c51ad | Luiz Capitulino | |
397 | 7b8c51ad | Luiz Capitulino | srunner_run_all(sr, CK_NORMAL); |
398 | 7b8c51ad | Luiz Capitulino | nf = srunner_ntests_failed(sr); |
399 | 7b8c51ad | Luiz Capitulino | srunner_free(sr); |
400 | 7b8c51ad | Luiz Capitulino | |
401 | 7b8c51ad | Luiz Capitulino | return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE; |
402 | 7b8c51ad | Luiz Capitulino | } |