File: | build-scan/../src/test/test-hashmap-plain.c |
Warning: | line 866, column 9 Potential memory leak |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* SPDX-License-Identifier: LGPL-2.1+ */ | |||
2 | /*** | |||
3 | Copyright © 2013 Daniel Buch | |||
4 | ***/ | |||
5 | ||||
6 | #include "alloc-util.h" | |||
7 | #include "env-util.h" | |||
8 | #include "hashmap.h" | |||
9 | #include "log.h" | |||
10 | #include "string-util.h" | |||
11 | #include "strv.h" | |||
12 | #include "util.h" | |||
13 | ||||
14 | static bool_Bool arg_slow = false0; | |||
15 | ||||
16 | void test_hashmap_funcs(void); | |||
17 | ||||
18 | static void test_hashmap_replace(void) { | |||
19 | Hashmap *m; | |||
20 | char *val1, *val2, *val3, *val4, *val5, *r; | |||
21 | ||||
22 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 22, __func__, "%s", __func__ ) : -abs(_e); }); | |||
23 | ||||
24 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
25 | ||||
26 | val1 = strdup("val1"); | |||
27 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 27, __PRETTY_FUNCTION__); } while (0); | |||
28 | val2 = strdup("val2"); | |||
29 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 29, __PRETTY_FUNCTION__); } while (0); | |||
30 | val3 = strdup("val3"); | |||
31 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 31, __PRETTY_FUNCTION__); } while (0); | |||
32 | val4 = strdup("val4"); | |||
33 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 33, __PRETTY_FUNCTION__); } while (0); | |||
34 | val5 = strdup("val5"); | |||
35 | assert_se(val5)do { if ((__builtin_expect(!!(!(val5)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val5"), "../src/test/test-hashmap-plain.c" , 35, __PRETTY_FUNCTION__); } while (0); | |||
36 | ||||
37 | hashmap_put(m, "key 1", val1); | |||
38 | hashmap_put(m, "key 2", val2); | |||
39 | hashmap_put(m, "key 3", val3); | |||
40 | hashmap_put(m, "key 4", val4); | |||
41 | ||||
42 | hashmap_replace(m, "key 3", val1); | |||
43 | r = hashmap_get(m, "key 3"); | |||
44 | assert_se(streq(r, "val1"))do { if ((__builtin_expect(!!(!((strcmp((r),("val1")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val1\")" ), "../src/test/test-hashmap-plain.c", 44, __PRETTY_FUNCTION__ ); } while (0); | |||
45 | ||||
46 | hashmap_replace(m, "key 5", val5); | |||
47 | r = hashmap_get(m, "key 5"); | |||
48 | assert_se(streq(r, "val5"))do { if ((__builtin_expect(!!(!((strcmp((r),("val5")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val5\")" ), "../src/test/test-hashmap-plain.c", 48, __PRETTY_FUNCTION__ ); } while (0); | |||
49 | ||||
50 | free(val1); | |||
51 | free(val2); | |||
52 | free(val3); | |||
53 | free(val4); | |||
54 | free(val5); | |||
55 | hashmap_free(m); | |||
56 | } | |||
57 | ||||
58 | static void test_hashmap_copy(void) { | |||
59 | Hashmap *m, *copy; | |||
60 | char *val1, *val2, *val3, *val4, *r; | |||
61 | ||||
62 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 62, __func__, "%s", __func__ ) : -abs(_e); }); | |||
63 | ||||
64 | val1 = strdup("val1"); | |||
65 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 65, __PRETTY_FUNCTION__); } while (0); | |||
66 | val2 = strdup("val2"); | |||
67 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 67, __PRETTY_FUNCTION__); } while (0); | |||
68 | val3 = strdup("val3"); | |||
69 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 69, __PRETTY_FUNCTION__); } while (0); | |||
70 | val4 = strdup("val4"); | |||
71 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 71, __PRETTY_FUNCTION__); } while (0); | |||
72 | ||||
73 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
74 | ||||
75 | hashmap_put(m, "key 1", val1); | |||
76 | hashmap_put(m, "key 2", val2); | |||
77 | hashmap_put(m, "key 3", val3); | |||
78 | hashmap_put(m, "key 4", val4); | |||
79 | ||||
80 | copy = hashmap_copy(m); | |||
81 | ||||
82 | r = hashmap_get(copy, "key 1"); | |||
83 | assert_se(streq(r, "val1"))do { if ((__builtin_expect(!!(!((strcmp((r),("val1")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val1\")" ), "../src/test/test-hashmap-plain.c", 83, __PRETTY_FUNCTION__ ); } while (0); | |||
84 | r = hashmap_get(copy, "key 2"); | |||
85 | assert_se(streq(r, "val2"))do { if ((__builtin_expect(!!(!((strcmp((r),("val2")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val2\")" ), "../src/test/test-hashmap-plain.c", 85, __PRETTY_FUNCTION__ ); } while (0); | |||
86 | r = hashmap_get(copy, "key 3"); | |||
87 | assert_se(streq(r, "val3"))do { if ((__builtin_expect(!!(!((strcmp((r),("val3")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val3\")" ), "../src/test/test-hashmap-plain.c", 87, __PRETTY_FUNCTION__ ); } while (0); | |||
88 | r = hashmap_get(copy, "key 4"); | |||
89 | assert_se(streq(r, "val4"))do { if ((__builtin_expect(!!(!((strcmp((r),("val4")) == 0))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val4\")" ), "../src/test/test-hashmap-plain.c", 89, __PRETTY_FUNCTION__ ); } while (0); | |||
90 | ||||
91 | hashmap_free_free(copy); | |||
92 | hashmap_free(m); | |||
93 | } | |||
94 | ||||
95 | static void test_hashmap_get_strv(void) { | |||
96 | Hashmap *m; | |||
97 | char **strv; | |||
98 | char *val1, *val2, *val3, *val4; | |||
99 | ||||
100 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 100, __func__, "%s", __func__ ) : -abs(_e); }); | |||
101 | ||||
102 | val1 = strdup("val1"); | |||
103 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 103, __PRETTY_FUNCTION__); } while (0); | |||
104 | val2 = strdup("val2"); | |||
105 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 105, __PRETTY_FUNCTION__); } while (0); | |||
106 | val3 = strdup("val3"); | |||
107 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 107, __PRETTY_FUNCTION__); } while (0); | |||
108 | val4 = strdup("val4"); | |||
109 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 109, __PRETTY_FUNCTION__); } while (0); | |||
110 | ||||
111 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
112 | ||||
113 | hashmap_put(m, "key 1", val1); | |||
114 | hashmap_put(m, "key 2", val2); | |||
115 | hashmap_put(m, "key 3", val3); | |||
116 | hashmap_put(m, "key 4", val4); | |||
117 | ||||
118 | strv = hashmap_get_strv(m); | |||
119 | ||||
120 | #ifndef ORDERED | |||
121 | strv = strv_sort(strv); | |||
122 | #endif | |||
123 | ||||
124 | assert_se(streq(strv[0], "val1"))do { if ((__builtin_expect(!!(!((strcmp((strv[0]),("val1")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(strv[0], \"val1\")" ), "../src/test/test-hashmap-plain.c", 124, __PRETTY_FUNCTION__ ); } while (0); | |||
125 | assert_se(streq(strv[1], "val2"))do { if ((__builtin_expect(!!(!((strcmp((strv[1]),("val2")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(strv[1], \"val2\")" ), "../src/test/test-hashmap-plain.c", 125, __PRETTY_FUNCTION__ ); } while (0); | |||
126 | assert_se(streq(strv[2], "val3"))do { if ((__builtin_expect(!!(!((strcmp((strv[2]),("val3")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(strv[2], \"val3\")" ), "../src/test/test-hashmap-plain.c", 126, __PRETTY_FUNCTION__ ); } while (0); | |||
127 | assert_se(streq(strv[3], "val4"))do { if ((__builtin_expect(!!(!((strcmp((strv[3]),("val4")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(strv[3], \"val4\")" ), "../src/test/test-hashmap-plain.c", 127, __PRETTY_FUNCTION__ ); } while (0); | |||
128 | ||||
129 | strv_free(strv); | |||
130 | ||||
131 | hashmap_free(m); | |||
132 | } | |||
133 | ||||
134 | static void test_hashmap_move_one(void) { | |||
135 | Hashmap *m, *n; | |||
136 | char *val1, *val2, *val3, *val4, *r; | |||
137 | ||||
138 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 138, __func__, "%s", __func__ ) : -abs(_e); }); | |||
139 | ||||
140 | val1 = strdup("val1"); | |||
141 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 141, __PRETTY_FUNCTION__); } while (0); | |||
142 | val2 = strdup("val2"); | |||
143 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 143, __PRETTY_FUNCTION__); } while (0); | |||
144 | val3 = strdup("val3"); | |||
145 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 145, __PRETTY_FUNCTION__); } while (0); | |||
146 | val4 = strdup("val4"); | |||
147 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 147, __PRETTY_FUNCTION__); } while (0); | |||
148 | ||||
149 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
150 | n = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
151 | ||||
152 | hashmap_put(m, "key 1", val1); | |||
153 | hashmap_put(m, "key 2", val2); | |||
154 | hashmap_put(m, "key 3", val3); | |||
155 | hashmap_put(m, "key 4", val4); | |||
156 | ||||
157 | assert_se(hashmap_move_one(n, NULL, "key 3") == -ENOENT)do { if ((__builtin_expect(!!(!(hashmap_move_one(n, ((void*)0 ), "key 3") == -2)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_move_one(n, NULL, \"key 3\") == -ENOENT"), "../src/test/test-hashmap-plain.c" , 157, __PRETTY_FUNCTION__); } while (0); | |||
158 | assert_se(hashmap_move_one(n, m, "key 5") == -ENOENT)do { if ((__builtin_expect(!!(!(hashmap_move_one(n, m, "key 5" ) == -2)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move_one(n, m, \"key 5\") == -ENOENT" ), "../src/test/test-hashmap-plain.c", 158, __PRETTY_FUNCTION__ ); } while (0); | |||
159 | assert_se(hashmap_move_one(n, m, "key 3") == 0)do { if ((__builtin_expect(!!(!(hashmap_move_one(n, m, "key 3" ) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move_one(n, m, \"key 3\") == 0" ), "../src/test/test-hashmap-plain.c", 159, __PRETTY_FUNCTION__ ); } while (0); | |||
160 | assert_se(hashmap_move_one(n, m, "key 4") == 0)do { if ((__builtin_expect(!!(!(hashmap_move_one(n, m, "key 4" ) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move_one(n, m, \"key 4\") == 0" ), "../src/test/test-hashmap-plain.c", 160, __PRETTY_FUNCTION__ ); } while (0); | |||
161 | ||||
162 | r = hashmap_get(n, "key 3"); | |||
163 | assert_se(r && streq(r, "val3"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val3" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val3\")" ), "../src/test/test-hashmap-plain.c", 163, __PRETTY_FUNCTION__ ); } while (0); | |||
164 | r = hashmap_get(n, "key 4"); | |||
165 | assert_se(r && streq(r, "val4"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val4" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val4\")" ), "../src/test/test-hashmap-plain.c", 165, __PRETTY_FUNCTION__ ); } while (0); | |||
166 | r = hashmap_get(m, "key 3"); | |||
167 | assert_se(!r)do { if ((__builtin_expect(!!(!(!r)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!r"), "../src/test/test-hashmap-plain.c" , 167, __PRETTY_FUNCTION__); } while (0); | |||
168 | ||||
169 | assert_se(hashmap_move_one(n, m, "key 3") == -EEXIST)do { if ((__builtin_expect(!!(!(hashmap_move_one(n, m, "key 3" ) == -17)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move_one(n, m, \"key 3\") == -EEXIST" ), "../src/test/test-hashmap-plain.c", 169, __PRETTY_FUNCTION__ ); } while (0); | |||
170 | ||||
171 | hashmap_free_free(m); | |||
172 | hashmap_free_free(n); | |||
173 | } | |||
174 | ||||
175 | static void test_hashmap_move(void) { | |||
176 | Hashmap *m, *n; | |||
177 | char *val1, *val2, *val3, *val4, *r; | |||
178 | ||||
179 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 179, __func__, "%s", __func__ ) : -abs(_e); }); | |||
180 | ||||
181 | val1 = strdup("val1"); | |||
182 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 182, __PRETTY_FUNCTION__); } while (0); | |||
183 | val2 = strdup("val2"); | |||
184 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 184, __PRETTY_FUNCTION__); } while (0); | |||
185 | val3 = strdup("val3"); | |||
186 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 186, __PRETTY_FUNCTION__); } while (0); | |||
187 | val4 = strdup("val4"); | |||
188 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 188, __PRETTY_FUNCTION__); } while (0); | |||
189 | ||||
190 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
191 | n = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
192 | ||||
193 | hashmap_put(n, "key 1", strdup(val1)); | |||
194 | hashmap_put(m, "key 1", val1); | |||
195 | hashmap_put(m, "key 2", val2); | |||
196 | hashmap_put(m, "key 3", val3); | |||
197 | hashmap_put(m, "key 4", val4); | |||
198 | ||||
199 | assert_se(hashmap_move(n, NULL) == 0)do { if ((__builtin_expect(!!(!(hashmap_move(n, ((void*)0)) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move(n, NULL) == 0" ), "../src/test/test-hashmap-plain.c", 199, __PRETTY_FUNCTION__ ); } while (0); | |||
200 | assert_se(hashmap_move(n, m) == 0)do { if ((__builtin_expect(!!(!(hashmap_move(n, m) == 0)),0)) ) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_move(n, m) == 0" ), "../src/test/test-hashmap-plain.c", 200, __PRETTY_FUNCTION__ ); } while (0); | |||
201 | ||||
202 | assert_se(hashmap_size(m) == 1)do { if ((__builtin_expect(!!(!(hashmap_size(m) == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_size(m) == 1"), "../src/test/test-hashmap-plain.c" , 202, __PRETTY_FUNCTION__); } while (0); | |||
203 | r = hashmap_get(m, "key 1"); | |||
204 | assert_se(r && streq(r, "val1"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val1" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val1\")" ), "../src/test/test-hashmap-plain.c", 204, __PRETTY_FUNCTION__ ); } while (0); | |||
205 | ||||
206 | r = hashmap_get(n, "key 1"); | |||
207 | assert_se(r && streq(r, "val1"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val1" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val1\")" ), "../src/test/test-hashmap-plain.c", 207, __PRETTY_FUNCTION__ ); } while (0); | |||
208 | r = hashmap_get(n, "key 2"); | |||
209 | assert_se(r && streq(r, "val2"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val2" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val2\")" ), "../src/test/test-hashmap-plain.c", 209, __PRETTY_FUNCTION__ ); } while (0); | |||
210 | r = hashmap_get(n, "key 3"); | |||
211 | assert_se(r && streq(r, "val3"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val3" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val3\")" ), "../src/test/test-hashmap-plain.c", 211, __PRETTY_FUNCTION__ ); } while (0); | |||
212 | r = hashmap_get(n, "key 4"); | |||
213 | assert_se(r && streq(r, "val4"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("val4" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"val4\")" ), "../src/test/test-hashmap-plain.c", 213, __PRETTY_FUNCTION__ ); } while (0); | |||
214 | ||||
215 | hashmap_free_free(m); | |||
216 | hashmap_free_free(n); | |||
217 | } | |||
218 | ||||
219 | static void test_hashmap_update(void) { | |||
220 | Hashmap *m; | |||
221 | char *val1, *val2, *r; | |||
222 | ||||
223 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 223, __func__, "%s", __func__ ) : -abs(_e); }); | |||
224 | ||||
225 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
226 | val1 = strdup("old_value"); | |||
227 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 227, __PRETTY_FUNCTION__); } while (0); | |||
228 | val2 = strdup("new_value"); | |||
229 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 229, __PRETTY_FUNCTION__); } while (0); | |||
230 | ||||
231 | hashmap_put(m, "key 1", val1); | |||
232 | r = hashmap_get(m, "key 1"); | |||
233 | assert_se(streq(r, "old_value"))do { if ((__builtin_expect(!!(!((strcmp((r),("old_value")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"old_value\")" ), "../src/test/test-hashmap-plain.c", 233, __PRETTY_FUNCTION__ ); } while (0); | |||
234 | ||||
235 | assert_se(hashmap_update(m, "key 2", val2) == -ENOENT)do { if ((__builtin_expect(!!(!(hashmap_update(m, "key 2", val2 ) == -2)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_update(m, \"key 2\", val2) == -ENOENT" ), "../src/test/test-hashmap-plain.c", 235, __PRETTY_FUNCTION__ ); } while (0); | |||
236 | r = hashmap_get(m, "key 1"); | |||
237 | assert_se(streq(r, "old_value"))do { if ((__builtin_expect(!!(!((strcmp((r),("old_value")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"old_value\")" ), "../src/test/test-hashmap-plain.c", 237, __PRETTY_FUNCTION__ ); } while (0); | |||
238 | ||||
239 | assert_se(hashmap_update(m, "key 1", val2) == 0)do { if ((__builtin_expect(!!(!(hashmap_update(m, "key 1", val2 ) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_update(m, \"key 1\", val2) == 0" ), "../src/test/test-hashmap-plain.c", 239, __PRETTY_FUNCTION__ ); } while (0); | |||
240 | r = hashmap_get(m, "key 1"); | |||
241 | assert_se(streq(r, "new_value"))do { if ((__builtin_expect(!!(!((strcmp((r),("new_value")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"new_value\")" ), "../src/test/test-hashmap-plain.c", 241, __PRETTY_FUNCTION__ ); } while (0); | |||
242 | ||||
243 | free(val1); | |||
244 | free(val2); | |||
245 | hashmap_free(m); | |||
246 | } | |||
247 | ||||
248 | static void test_hashmap_put(void) { | |||
249 | Hashmap *m = NULL((void*)0); | |||
250 | int valid_hashmap_put; | |||
251 | void *val1 = (void*) "val 1"; | |||
252 | void *val2 = (void*) "val 2"; | |||
253 | _cleanup_free___attribute__((cleanup(freep))) char* key1 = NULL((void*)0); | |||
254 | ||||
255 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 255, __func__, "%s", __func__ ) : -abs(_e); }); | |||
256 | ||||
257 | assert_se(hashmap_ensure_allocated(&m, &string_hash_ops) >= 0)do { if ((__builtin_expect(!!(!(internal_hashmap_ensure_allocated (&m, &string_hash_ops ) >= 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_ensure_allocated(&m, &string_hash_ops) >= 0" ), "../src/test/test-hashmap-plain.c", 257, __PRETTY_FUNCTION__ ); } while (0); | |||
258 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 258, __PRETTY_FUNCTION__); } while (0); | |||
259 | ||||
260 | valid_hashmap_put = hashmap_put(m, "key 1", val1); | |||
261 | assert_se(valid_hashmap_put == 1)do { if ((__builtin_expect(!!(!(valid_hashmap_put == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("valid_hashmap_put == 1" ), "../src/test/test-hashmap-plain.c", 261, __PRETTY_FUNCTION__ ); } while (0); | |||
262 | assert_se(hashmap_put(m, "key 1", val1) == 0)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", val1) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_put(m, \"key 1\", val1) == 0" ), "../src/test/test-hashmap-plain.c", 262, __PRETTY_FUNCTION__ ); } while (0); | |||
263 | assert_se(hashmap_put(m, "key 1", val2) == -EEXIST)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", val2) == -17)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_put(m, \"key 1\", val2) == -EEXIST" ), "../src/test/test-hashmap-plain.c", 263, __PRETTY_FUNCTION__ ); } while (0); | |||
264 | key1 = strdup("key 1"); | |||
265 | assert_se(hashmap_put(m, key1, val1) == 0)do { if ((__builtin_expect(!!(!(hashmap_put(m, key1, val1) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_put(m, key1, val1) == 0" ), "../src/test/test-hashmap-plain.c", 265, __PRETTY_FUNCTION__ ); } while (0); | |||
266 | assert_se(hashmap_put(m, key1, val2) == -EEXIST)do { if ((__builtin_expect(!!(!(hashmap_put(m, key1, val2) == -17)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_put(m, key1, val2) == -EEXIST" ), "../src/test/test-hashmap-plain.c", 266, __PRETTY_FUNCTION__ ); } while (0); | |||
267 | ||||
268 | hashmap_free(m); | |||
269 | } | |||
270 | ||||
271 | static void test_hashmap_remove(void) { | |||
272 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
273 | char *r; | |||
274 | ||||
275 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 275, __func__, "%s", __func__ ) : -abs(_e); }); | |||
276 | ||||
277 | r = hashmap_remove(NULL((void*)0), "key 1"); | |||
278 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 278, __PRETTY_FUNCTION__); } while (0); | |||
279 | ||||
280 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
281 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 281, __PRETTY_FUNCTION__); } while (0); | |||
282 | ||||
283 | r = hashmap_remove(m, "no such key"); | |||
284 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 284, __PRETTY_FUNCTION__); } while (0); | |||
285 | ||||
286 | hashmap_put(m, "key 1", (void*) "val 1"); | |||
287 | hashmap_put(m, "key 2", (void*) "val 2"); | |||
288 | ||||
289 | r = hashmap_remove(m, "key 1"); | |||
290 | assert_se(streq(r, "val 1"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 1")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 1\")" ), "../src/test/test-hashmap-plain.c", 290, __PRETTY_FUNCTION__ ); } while (0); | |||
291 | ||||
292 | r = hashmap_get(m, "key 2"); | |||
293 | assert_se(streq(r, "val 2"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 2")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 2\")" ), "../src/test/test-hashmap-plain.c", 293, __PRETTY_FUNCTION__ ); } while (0); | |||
294 | assert_se(!hashmap_get(m, "key 1"))do { if ((__builtin_expect(!!(!(!hashmap_get(m, "key 1"))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_get(m, \"key 1\")" ), "../src/test/test-hashmap-plain.c", 294, __PRETTY_FUNCTION__ ); } while (0); | |||
295 | } | |||
296 | ||||
297 | static void test_hashmap_remove2(void) { | |||
298 | _cleanup_hashmap_free_free_free___attribute__((cleanup(hashmap_free_free_freep))) Hashmap *m = NULL((void*)0); | |||
299 | char key1[] = "key 1"; | |||
300 | char key2[] = "key 2"; | |||
301 | char val1[] = "val 1"; | |||
302 | char val2[] = "val 2"; | |||
303 | void *r, *r2; | |||
304 | ||||
305 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 305, __func__, "%s", __func__ ) : -abs(_e); }); | |||
306 | ||||
307 | r = hashmap_remove2(NULL((void*)0), "key 1", &r2); | |||
308 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 308, __PRETTY_FUNCTION__); } while (0); | |||
309 | ||||
310 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
311 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 311, __PRETTY_FUNCTION__); } while (0); | |||
312 | ||||
313 | r = hashmap_remove2(m, "no such key", &r2); | |||
314 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 314, __PRETTY_FUNCTION__); } while (0); | |||
315 | ||||
316 | hashmap_put(m, strdup(key1), strdup(val1)); | |||
317 | hashmap_put(m, strdup(key2), strdup(val2)); | |||
318 | ||||
319 | r = hashmap_remove2(m, key1, &r2); | |||
320 | assert_se(streq(r, val1))do { if ((__builtin_expect(!!(!((strcmp((r),(val1)) == 0))),0 ))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, val1)" ), "../src/test/test-hashmap-plain.c", 320, __PRETTY_FUNCTION__ ); } while (0); | |||
321 | assert_se(streq(r2, key1))do { if ((__builtin_expect(!!(!((strcmp((r2),(key1)) == 0))), 0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r2, key1)" ), "../src/test/test-hashmap-plain.c", 321, __PRETTY_FUNCTION__ ); } while (0); | |||
322 | free(r); | |||
323 | free(r2); | |||
324 | ||||
325 | r = hashmap_get(m, key2); | |||
326 | assert_se(streq(r, val2))do { if ((__builtin_expect(!!(!((strcmp((r),(val2)) == 0))),0 ))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, val2)" ), "../src/test/test-hashmap-plain.c", 326, __PRETTY_FUNCTION__ ); } while (0); | |||
327 | assert_se(!hashmap_get(m, key1))do { if ((__builtin_expect(!!(!(!hashmap_get(m, key1))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_get(m, key1)"), "../src/test/test-hashmap-plain.c" , 327, __PRETTY_FUNCTION__); } while (0); | |||
328 | } | |||
329 | ||||
330 | static void test_hashmap_remove_value(void) { | |||
331 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
332 | char *r; | |||
333 | ||||
334 | char val1[] = "val 1"; | |||
335 | char val2[] = "val 2"; | |||
336 | ||||
337 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 337, __func__, "%s", __func__ ) : -abs(_e); }); | |||
338 | ||||
339 | r = hashmap_remove_value(NULL((void*)0), "key 1", val1); | |||
340 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 340, __PRETTY_FUNCTION__); } while (0); | |||
341 | ||||
342 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
343 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 343, __PRETTY_FUNCTION__); } while (0); | |||
344 | ||||
345 | r = hashmap_remove_value(m, "key 1", val1); | |||
346 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 346, __PRETTY_FUNCTION__); } while (0); | |||
347 | ||||
348 | hashmap_put(m, "key 1", val1); | |||
349 | hashmap_put(m, "key 2", val2); | |||
350 | ||||
351 | r = hashmap_remove_value(m, "key 1", val1); | |||
352 | assert_se(streq(r, "val 1"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 1")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 1\")" ), "../src/test/test-hashmap-plain.c", 352, __PRETTY_FUNCTION__ ); } while (0); | |||
353 | ||||
354 | r = hashmap_get(m, "key 2"); | |||
355 | assert_se(streq(r, "val 2"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 2")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 2\")" ), "../src/test/test-hashmap-plain.c", 355, __PRETTY_FUNCTION__ ); } while (0); | |||
356 | assert_se(!hashmap_get(m, "key 1"))do { if ((__builtin_expect(!!(!(!hashmap_get(m, "key 1"))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_get(m, \"key 1\")" ), "../src/test/test-hashmap-plain.c", 356, __PRETTY_FUNCTION__ ); } while (0); | |||
357 | ||||
358 | r = hashmap_remove_value(m, "key 2", val1); | |||
359 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 359, __PRETTY_FUNCTION__); } while (0); | |||
360 | ||||
361 | r = hashmap_get(m, "key 2"); | |||
362 | assert_se(streq(r, "val 2"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 2")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 2\")" ), "../src/test/test-hashmap-plain.c", 362, __PRETTY_FUNCTION__ ); } while (0); | |||
363 | assert_se(!hashmap_get(m, "key 1"))do { if ((__builtin_expect(!!(!(!hashmap_get(m, "key 1"))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_get(m, \"key 1\")" ), "../src/test/test-hashmap-plain.c", 363, __PRETTY_FUNCTION__ ); } while (0); | |||
364 | } | |||
365 | ||||
366 | static void test_hashmap_remove_and_put(void) { | |||
367 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
368 | int valid; | |||
369 | char *r; | |||
370 | ||||
371 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 371, __func__, "%s", __func__ ) : -abs(_e); }); | |||
372 | ||||
373 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
374 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 374, __PRETTY_FUNCTION__); } while (0); | |||
375 | ||||
376 | valid = hashmap_remove_and_put(m, "invalid key", "new key", NULL((void*)0)); | |||
377 | assert_se(valid == -ENOENT)do { if ((__builtin_expect(!!(!(valid == -2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == -ENOENT"), "../src/test/test-hashmap-plain.c" , 377, __PRETTY_FUNCTION__); } while (0); | |||
378 | ||||
379 | valid = hashmap_put(m, "key 1", (void*) (const char *) "val 1"); | |||
380 | assert_se(valid == 1)do { if ((__builtin_expect(!!(!(valid == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 1"), "../src/test/test-hashmap-plain.c" , 380, __PRETTY_FUNCTION__); } while (0); | |||
381 | ||||
382 | valid = hashmap_remove_and_put(NULL((void*)0), "key 1", "key 2", (void*) (const char *) "val 2"); | |||
383 | assert_se(valid == -ENOENT)do { if ((__builtin_expect(!!(!(valid == -2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == -ENOENT"), "../src/test/test-hashmap-plain.c" , 383, __PRETTY_FUNCTION__); } while (0); | |||
384 | ||||
385 | valid = hashmap_remove_and_put(m, "key 1", "key 2", (void*) (const char *) "val 2"); | |||
386 | assert_se(valid == 0)do { if ((__builtin_expect(!!(!(valid == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 0"), "../src/test/test-hashmap-plain.c" , 386, __PRETTY_FUNCTION__); } while (0); | |||
387 | ||||
388 | r = hashmap_get(m, "key 2"); | |||
389 | assert_se(streq(r, "val 2"))do { if ((__builtin_expect(!!(!((strcmp((r),("val 2")) == 0)) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, \"val 2\")" ), "../src/test/test-hashmap-plain.c", 389, __PRETTY_FUNCTION__ ); } while (0); | |||
390 | assert_se(!hashmap_get(m, "key 1"))do { if ((__builtin_expect(!!(!(!hashmap_get(m, "key 1"))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_get(m, \"key 1\")" ), "../src/test/test-hashmap-plain.c", 390, __PRETTY_FUNCTION__ ); } while (0); | |||
391 | ||||
392 | valid = hashmap_put(m, "key 3", (void*) (const char *) "val 3"); | |||
393 | assert_se(valid == 1)do { if ((__builtin_expect(!!(!(valid == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 1"), "../src/test/test-hashmap-plain.c" , 393, __PRETTY_FUNCTION__); } while (0); | |||
394 | valid = hashmap_remove_and_put(m, "key 3", "key 2", (void*) (const char *) "val 2"); | |||
395 | assert_se(valid == -EEXIST)do { if ((__builtin_expect(!!(!(valid == -17)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == -EEXIST"), "../src/test/test-hashmap-plain.c" , 395, __PRETTY_FUNCTION__); } while (0); | |||
396 | } | |||
397 | ||||
398 | static void test_hashmap_remove_and_replace(void) { | |||
399 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
400 | int valid; | |||
401 | void *key1 = UINT_TO_PTR(1)((void *) ((uintptr_t) (1))); | |||
402 | void *key2 = UINT_TO_PTR(2)((void *) ((uintptr_t) (2))); | |||
403 | void *key3 = UINT_TO_PTR(3)((void *) ((uintptr_t) (3))); | |||
404 | void *r; | |||
405 | int i, j; | |||
406 | ||||
407 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 407, __func__, "%s", __func__ ) : -abs(_e); }); | |||
408 | ||||
409 | m = hashmap_new(&trivial_hash_ops)internal_hashmap_new(&trivial_hash_ops ); | |||
410 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 410, __PRETTY_FUNCTION__); } while (0); | |||
411 | ||||
412 | valid = hashmap_remove_and_replace(m, key1, key2, NULL((void*)0)); | |||
413 | assert_se(valid == -ENOENT)do { if ((__builtin_expect(!!(!(valid == -2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == -ENOENT"), "../src/test/test-hashmap-plain.c" , 413, __PRETTY_FUNCTION__); } while (0); | |||
414 | ||||
415 | valid = hashmap_put(m, key1, key1); | |||
416 | assert_se(valid == 1)do { if ((__builtin_expect(!!(!(valid == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 1"), "../src/test/test-hashmap-plain.c" , 416, __PRETTY_FUNCTION__); } while (0); | |||
417 | ||||
418 | valid = hashmap_remove_and_replace(NULL((void*)0), key1, key2, key2); | |||
419 | assert_se(valid == -ENOENT)do { if ((__builtin_expect(!!(!(valid == -2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == -ENOENT"), "../src/test/test-hashmap-plain.c" , 419, __PRETTY_FUNCTION__); } while (0); | |||
420 | ||||
421 | valid = hashmap_remove_and_replace(m, key1, key2, key2); | |||
422 | assert_se(valid == 0)do { if ((__builtin_expect(!!(!(valid == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 0"), "../src/test/test-hashmap-plain.c" , 422, __PRETTY_FUNCTION__); } while (0); | |||
423 | ||||
424 | r = hashmap_get(m, key2); | |||
425 | assert_se(r == key2)do { if ((__builtin_expect(!!(!(r == key2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == key2"), "../src/test/test-hashmap-plain.c" , 425, __PRETTY_FUNCTION__); } while (0); | |||
426 | assert_se(!hashmap_get(m, key1))do { if ((__builtin_expect(!!(!(!hashmap_get(m, key1))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_get(m, key1)"), "../src/test/test-hashmap-plain.c" , 426, __PRETTY_FUNCTION__); } while (0); | |||
427 | ||||
428 | valid = hashmap_put(m, key3, key3); | |||
429 | assert_se(valid == 1)do { if ((__builtin_expect(!!(!(valid == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 1"), "../src/test/test-hashmap-plain.c" , 429, __PRETTY_FUNCTION__); } while (0); | |||
430 | valid = hashmap_remove_and_replace(m, key3, key2, key2); | |||
431 | assert_se(valid == 0)do { if ((__builtin_expect(!!(!(valid == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 0"), "../src/test/test-hashmap-plain.c" , 431, __PRETTY_FUNCTION__); } while (0); | |||
432 | r = hashmap_get(m, key2); | |||
433 | assert_se(r == key2)do { if ((__builtin_expect(!!(!(r == key2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == key2"), "../src/test/test-hashmap-plain.c" , 433, __PRETTY_FUNCTION__); } while (0); | |||
434 | assert_se(!hashmap_get(m, key3))do { if ((__builtin_expect(!!(!(!hashmap_get(m, key3))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_get(m, key3)"), "../src/test/test-hashmap-plain.c" , 434, __PRETTY_FUNCTION__); } while (0); | |||
435 | ||||
436 | /* Repeat this test several times to increase the chance of hitting | |||
437 | * the less likely case in hashmap_remove_and_replace where it | |||
438 | * compensates for the backward shift. */ | |||
439 | for (i = 0; i < 20; i++) { | |||
440 | hashmap_clear(m); | |||
441 | ||||
442 | for (j = 1; j < 7; j++) | |||
443 | hashmap_put(m, UINT_TO_PTR(10*i + j)((void *) ((uintptr_t) (10*i + j))), UINT_TO_PTR(10*i + j)((void *) ((uintptr_t) (10*i + j)))); | |||
444 | valid = hashmap_remove_and_replace(m, UINT_TO_PTR(10*i + 1)((void *) ((uintptr_t) (10*i + 1))), | |||
445 | UINT_TO_PTR(10*i + 2)((void *) ((uintptr_t) (10*i + 2))), | |||
446 | UINT_TO_PTR(10*i + 2)((void *) ((uintptr_t) (10*i + 2)))); | |||
447 | assert_se(valid == 0)do { if ((__builtin_expect(!!(!(valid == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid == 0"), "../src/test/test-hashmap-plain.c" , 447, __PRETTY_FUNCTION__); } while (0); | |||
448 | assert_se(!hashmap_get(m, UINT_TO_PTR(10*i + 1)))do { if ((__builtin_expect(!!(!(!hashmap_get(m, ((void *) ((uintptr_t ) (10*i + 1)))))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("!hashmap_get(m, UINT_TO_PTR(10*i + 1))"), "../src/test/test-hashmap-plain.c" , 448, __PRETTY_FUNCTION__); } while (0); | |||
449 | for (j = 2; j < 7; j++) { | |||
450 | r = hashmap_get(m, UINT_TO_PTR(10*i + j)((void *) ((uintptr_t) (10*i + j)))); | |||
451 | assert_se(r == UINT_TO_PTR(10*i + j))do { if ((__builtin_expect(!!(!(r == ((void *) ((uintptr_t) ( 10*i + j))))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r == UINT_TO_PTR(10*i + j)"), "../src/test/test-hashmap-plain.c" , 451, __PRETTY_FUNCTION__); } while (0); | |||
452 | } | |||
453 | } | |||
454 | } | |||
455 | ||||
456 | static void test_hashmap_ensure_allocated(void) { | |||
457 | Hashmap *m; | |||
458 | int valid_hashmap; | |||
459 | ||||
460 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 460, __func__, "%s", __func__ ) : -abs(_e); }); | |||
461 | ||||
462 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
463 | ||||
464 | valid_hashmap = hashmap_ensure_allocated(&m, &string_hash_ops)internal_hashmap_ensure_allocated(&m, &string_hash_ops ); | |||
465 | assert_se(valid_hashmap == 0)do { if ((__builtin_expect(!!(!(valid_hashmap == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("valid_hashmap == 0"), "../src/test/test-hashmap-plain.c" , 465, __PRETTY_FUNCTION__); } while (0); | |||
466 | ||||
467 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 467, __PRETTY_FUNCTION__); } while (0); | |||
468 | hashmap_free(m); | |||
469 | } | |||
470 | ||||
471 | static void test_hashmap_foreach_key(void) { | |||
472 | Hashmap *m; | |||
473 | Iterator i; | |||
474 | bool_Bool key_found[] = { false0, false0, false0, false0 }; | |||
475 | const char *s; | |||
476 | const char *key; | |||
477 | static const char key_table[] = | |||
478 | "key 1\0" | |||
479 | "key 2\0" | |||
480 | "key 3\0" | |||
481 | "key 4\0"; | |||
482 | ||||
483 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 483, __func__, "%s", __func__ ) : -abs(_e); }); | |||
484 | ||||
485 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
486 | ||||
487 | NULSTR_FOREACH(key, key_table)for ((key) = (key_table); (key) && *(key); (key) = strchr ((key), 0)+1) | |||
488 | hashmap_put(m, key, (void*) (const char*) "my dummy val"); | |||
489 | ||||
490 | HASHMAP_FOREACH_KEY(s, key, m, i)for ((i) = ((Iterator) { .idx = ((2147483647 *2U +1U) - 1), . next_key = ((void*)0) }); hashmap_iterate((m), &(i), (void **)&(s), (const void**) &(key)); ) { | |||
491 | assert(s)do { if ((__builtin_expect(!!(!(s)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("s"), "../src/test/test-hashmap-plain.c" , 491, __PRETTY_FUNCTION__); } while (0); | |||
492 | if (!key_found[0] && streq(key, "key 1")(strcmp((key),("key 1")) == 0)) | |||
493 | key_found[0] = true1; | |||
494 | else if (!key_found[1] && streq(key, "key 2")(strcmp((key),("key 2")) == 0)) | |||
495 | key_found[1] = true1; | |||
496 | else if (!key_found[2] && streq(key, "key 3")(strcmp((key),("key 3")) == 0)) | |||
497 | key_found[2] = true1; | |||
498 | else if (!key_found[3] && streq(key, "fail")(strcmp((key),("fail")) == 0)) | |||
499 | key_found[3] = true1; | |||
500 | } | |||
501 | ||||
502 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 502, __PRETTY_FUNCTION__); } while (0); | |||
503 | assert_se(key_found[0] && key_found[1] && key_found[2] && !key_found[3])do { if ((__builtin_expect(!!(!(key_found[0] && key_found [1] && key_found[2] && !key_found[3])),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("key_found[0] && key_found[1] && key_found[2] && !key_found[3]" ), "../src/test/test-hashmap-plain.c", 503, __PRETTY_FUNCTION__ ); } while (0); | |||
504 | ||||
505 | hashmap_free(m); | |||
506 | } | |||
507 | ||||
508 | static void test_hashmap_foreach(void) { | |||
509 | Hashmap *m; | |||
510 | Iterator i; | |||
511 | bool_Bool value_found[] = { false0, false0, false0, false0 }; | |||
512 | char *val1, *val2, *val3, *val4, *s; | |||
513 | unsigned count; | |||
514 | ||||
515 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 515, __func__, "%s", __func__ ) : -abs(_e); }); | |||
516 | ||||
517 | val1 = strdup("my val1"); | |||
518 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 518, __PRETTY_FUNCTION__); } while (0); | |||
519 | val2 = strdup("my val2"); | |||
520 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 520, __PRETTY_FUNCTION__); } while (0); | |||
521 | val3 = strdup("my val3"); | |||
522 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 522, __PRETTY_FUNCTION__); } while (0); | |||
523 | val4 = strdup("my val4"); | |||
524 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 524, __PRETTY_FUNCTION__); } while (0); | |||
525 | ||||
526 | m = NULL((void*)0); | |||
527 | ||||
528 | count = 0; | |||
529 | HASHMAP_FOREACH(s, m, i)for ((i) = ((Iterator) { .idx = ((2147483647 *2U +1U) - 1), . next_key = ((void*)0) }); hashmap_iterate((m), &(i), (void **)&(s), ((void*)0)); ) | |||
530 | count++; | |||
531 | assert_se(count == 0)do { if ((__builtin_expect(!!(!(count == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("count == 0"), "../src/test/test-hashmap-plain.c" , 531, __PRETTY_FUNCTION__); } while (0); | |||
532 | ||||
533 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
534 | ||||
535 | count = 0; | |||
536 | HASHMAP_FOREACH(s, m, i)for ((i) = ((Iterator) { .idx = ((2147483647 *2U +1U) - 1), . next_key = ((void*)0) }); hashmap_iterate((m), &(i), (void **)&(s), ((void*)0)); ) | |||
537 | count++; | |||
538 | assert_se(count == 0)do { if ((__builtin_expect(!!(!(count == 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("count == 0"), "../src/test/test-hashmap-plain.c" , 538, __PRETTY_FUNCTION__); } while (0); | |||
539 | ||||
540 | hashmap_put(m, "Key 1", val1); | |||
541 | hashmap_put(m, "Key 2", val2); | |||
542 | hashmap_put(m, "Key 3", val3); | |||
543 | hashmap_put(m, "Key 4", val4); | |||
544 | ||||
545 | HASHMAP_FOREACH(s, m, i)for ((i) = ((Iterator) { .idx = ((2147483647 *2U +1U) - 1), . next_key = ((void*)0) }); hashmap_iterate((m), &(i), (void **)&(s), ((void*)0)); ) { | |||
546 | if (!value_found[0] && streq(s, val1)(strcmp((s),(val1)) == 0)) | |||
547 | value_found[0] = true1; | |||
548 | else if (!value_found[1] && streq(s, val2)(strcmp((s),(val2)) == 0)) | |||
549 | value_found[1] = true1; | |||
550 | else if (!value_found[2] && streq(s, val3)(strcmp((s),(val3)) == 0)) | |||
551 | value_found[2] = true1; | |||
552 | else if (!value_found[3] && streq(s, val4)(strcmp((s),(val4)) == 0)) | |||
553 | value_found[3] = true1; | |||
554 | } | |||
555 | ||||
556 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 556, __PRETTY_FUNCTION__); } while (0); | |||
557 | assert_se(value_found[0] && value_found[1] && value_found[2] && value_found[3])do { if ((__builtin_expect(!!(!(value_found[0] && value_found [1] && value_found[2] && value_found[3])),0)) ) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("value_found[0] && value_found[1] && value_found[2] && value_found[3]" ), "../src/test/test-hashmap-plain.c", 557, __PRETTY_FUNCTION__ ); } while (0); | |||
558 | ||||
559 | hashmap_free_free(m); | |||
560 | } | |||
561 | ||||
562 | static void test_hashmap_merge(void) { | |||
563 | Hashmap *m; | |||
564 | Hashmap *n; | |||
565 | char *val1, *val2, *val3, *val4, *r; | |||
566 | ||||
567 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 567, __func__, "%s", __func__ ) : -abs(_e); }); | |||
568 | ||||
569 | val1 = strdup("my val1"); | |||
570 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 570, __PRETTY_FUNCTION__); } while (0); | |||
571 | val2 = strdup("my val2"); | |||
572 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 572, __PRETTY_FUNCTION__); } while (0); | |||
573 | val3 = strdup("my val3"); | |||
574 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 574, __PRETTY_FUNCTION__); } while (0); | |||
575 | val4 = strdup("my val4"); | |||
576 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 576, __PRETTY_FUNCTION__); } while (0); | |||
577 | ||||
578 | n = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
579 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
580 | ||||
581 | hashmap_put(m, "Key 1", val1); | |||
582 | hashmap_put(m, "Key 2", val2); | |||
583 | hashmap_put(n, "Key 3", val3); | |||
584 | hashmap_put(n, "Key 4", val4); | |||
585 | ||||
586 | assert_se(hashmap_merge(m, n) == 0)do { if ((__builtin_expect(!!(!(internal_hashmap_merge(__builtin_choose_expr ((__builtin_types_compatible_p(typeof(m), Hashmap*) || __builtin_types_compatible_p (typeof(m), OrderedHashmap*)), (Hashmap*)(m), (void)0), __builtin_choose_expr ((__builtin_types_compatible_p(typeof(n), Hashmap*) || __builtin_types_compatible_p (typeof(n), OrderedHashmap*)), (Hashmap*)(n), (void)0)) == 0) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_merge(m, n) == 0" ), "../src/test/test-hashmap-plain.c", 586, __PRETTY_FUNCTION__ ); } while (0); | |||
587 | r = hashmap_get(m, "Key 3"); | |||
588 | assert_se(r && streq(r, "my val3"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("my val3" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"my val3\")" ), "../src/test/test-hashmap-plain.c", 588, __PRETTY_FUNCTION__ ); } while (0); | |||
589 | r = hashmap_get(m, "Key 4"); | |||
590 | assert_se(r && streq(r, "my val4"))do { if ((__builtin_expect(!!(!(r && (strcmp((r),("my val4" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("r && streq(r, \"my val4\")" ), "../src/test/test-hashmap-plain.c", 590, __PRETTY_FUNCTION__ ); } while (0); | |||
591 | ||||
592 | assert_se(n)do { if ((__builtin_expect(!!(!(n)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("n"), "../src/test/test-hashmap-plain.c" , 592, __PRETTY_FUNCTION__); } while (0); | |||
593 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 593, __PRETTY_FUNCTION__); } while (0); | |||
594 | hashmap_free(n); | |||
595 | hashmap_free_free(m); | |||
596 | } | |||
597 | ||||
598 | static void test_hashmap_contains(void) { | |||
599 | Hashmap *m; | |||
600 | char *val1; | |||
601 | ||||
602 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 602, __func__, "%s", __func__ ) : -abs(_e); }); | |||
603 | ||||
604 | val1 = strdup("my val"); | |||
605 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 605, __PRETTY_FUNCTION__); } while (0); | |||
606 | ||||
607 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
608 | ||||
609 | assert_se(!hashmap_contains(m, "Key 1"))do { if ((__builtin_expect(!!(!(!hashmap_contains(m, "Key 1") )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_contains(m, \"Key 1\")" ), "../src/test/test-hashmap-plain.c", 609, __PRETTY_FUNCTION__ ); } while (0); | |||
610 | hashmap_put(m, "Key 1", val1); | |||
611 | assert_se(hashmap_contains(m, "Key 1"))do { if ((__builtin_expect(!!(!(hashmap_contains(m, "Key 1")) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_contains(m, \"Key 1\")" ), "../src/test/test-hashmap-plain.c", 611, __PRETTY_FUNCTION__ ); } while (0); | |||
612 | assert_se(!hashmap_contains(m, "Key 2"))do { if ((__builtin_expect(!!(!(!hashmap_contains(m, "Key 2") )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_contains(m, \"Key 2\")" ), "../src/test/test-hashmap-plain.c", 612, __PRETTY_FUNCTION__ ); } while (0); | |||
613 | ||||
614 | assert_se(!hashmap_contains(NULL, "Key 1"))do { if ((__builtin_expect(!!(!(!hashmap_contains(((void*)0), "Key 1"))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "!hashmap_contains(NULL, \"Key 1\")"), "../src/test/test-hashmap-plain.c" , 614, __PRETTY_FUNCTION__); } while (0); | |||
615 | ||||
616 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 616, __PRETTY_FUNCTION__); } while (0); | |||
617 | hashmap_free_free(m); | |||
618 | } | |||
619 | ||||
620 | static void test_hashmap_isempty(void) { | |||
621 | Hashmap *m; | |||
622 | char *val1; | |||
623 | ||||
624 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 624, __func__, "%s", __func__ ) : -abs(_e); }); | |||
625 | ||||
626 | val1 = strdup("my val"); | |||
627 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 627, __PRETTY_FUNCTION__); } while (0); | |||
628 | ||||
629 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
630 | ||||
631 | assert_se(hashmap_isempty(m))do { if ((__builtin_expect(!!(!(hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 631, __PRETTY_FUNCTION__); } while (0); | |||
632 | hashmap_put(m, "Key 1", val1); | |||
633 | assert_se(!hashmap_isempty(m))do { if ((__builtin_expect(!!(!(!hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 633, __PRETTY_FUNCTION__); } while (0); | |||
634 | ||||
635 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 635, __PRETTY_FUNCTION__); } while (0); | |||
636 | hashmap_free_free(m); | |||
637 | } | |||
638 | ||||
639 | static void test_hashmap_size(void) { | |||
640 | Hashmap *m; | |||
641 | char *val1, *val2, *val3, *val4; | |||
642 | ||||
643 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 643, __func__, "%s", __func__ ) : -abs(_e); }); | |||
644 | ||||
645 | val1 = strdup("my val"); | |||
646 | assert_se(val1)do { if ((__builtin_expect(!!(!(val1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val1"), "../src/test/test-hashmap-plain.c" , 646, __PRETTY_FUNCTION__); } while (0); | |||
647 | val2 = strdup("my val"); | |||
648 | assert_se(val2)do { if ((__builtin_expect(!!(!(val2)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val2"), "../src/test/test-hashmap-plain.c" , 648, __PRETTY_FUNCTION__); } while (0); | |||
649 | val3 = strdup("my val"); | |||
650 | assert_se(val3)do { if ((__builtin_expect(!!(!(val3)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val3"), "../src/test/test-hashmap-plain.c" , 650, __PRETTY_FUNCTION__); } while (0); | |||
651 | val4 = strdup("my val"); | |||
652 | assert_se(val4)do { if ((__builtin_expect(!!(!(val4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val4"), "../src/test/test-hashmap-plain.c" , 652, __PRETTY_FUNCTION__); } while (0); | |||
653 | ||||
654 | assert_se(hashmap_size(NULL) == 0)do { if ((__builtin_expect(!!(!(hashmap_size(((void*)0)) == 0 )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_size(NULL) == 0" ), "../src/test/test-hashmap-plain.c", 654, __PRETTY_FUNCTION__ ); } while (0); | |||
655 | assert_se(hashmap_buckets(NULL) == 0)do { if ((__builtin_expect(!!(!(hashmap_buckets(((void*)0)) == 0)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_buckets(NULL) == 0" ), "../src/test/test-hashmap-plain.c", 655, __PRETTY_FUNCTION__ ); } while (0); | |||
656 | ||||
657 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
658 | ||||
659 | hashmap_put(m, "Key 1", val1); | |||
660 | hashmap_put(m, "Key 2", val2); | |||
661 | hashmap_put(m, "Key 3", val3); | |||
662 | hashmap_put(m, "Key 4", val4); | |||
663 | ||||
664 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 664, __PRETTY_FUNCTION__); } while (0); | |||
665 | assert_se(hashmap_size(m) == 4)do { if ((__builtin_expect(!!(!(hashmap_size(m) == 4)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_size(m) == 4"), "../src/test/test-hashmap-plain.c" , 665, __PRETTY_FUNCTION__); } while (0); | |||
666 | assert_se(hashmap_buckets(m) >= 4)do { if ((__builtin_expect(!!(!(hashmap_buckets(m) >= 4)), 0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_buckets(m) >= 4" ), "../src/test/test-hashmap-plain.c", 666, __PRETTY_FUNCTION__ ); } while (0); | |||
667 | hashmap_free_free(m); | |||
668 | } | |||
669 | ||||
670 | static void test_hashmap_get(void) { | |||
671 | Hashmap *m; | |||
672 | char *r; | |||
673 | char *val; | |||
674 | ||||
675 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 675, __func__, "%s", __func__ ) : -abs(_e); }); | |||
676 | ||||
677 | val = strdup("my val"); | |||
678 | assert_se(val)do { if ((__builtin_expect(!!(!(val)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val"), "../src/test/test-hashmap-plain.c" , 678, __PRETTY_FUNCTION__); } while (0); | |||
679 | ||||
680 | r = hashmap_get(NULL((void*)0), "Key 1"); | |||
681 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 681, __PRETTY_FUNCTION__); } while (0); | |||
682 | ||||
683 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
684 | ||||
685 | hashmap_put(m, "Key 1", val); | |||
686 | ||||
687 | r = hashmap_get(m, "Key 1"); | |||
688 | assert_se(streq(r, val))do { if ((__builtin_expect(!!(!((strcmp((r),(val)) == 0))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, val)" ), "../src/test/test-hashmap-plain.c", 688, __PRETTY_FUNCTION__ ); } while (0); | |||
689 | ||||
690 | r = hashmap_get(m, "no such key"); | |||
691 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 691, __PRETTY_FUNCTION__); } while (0); | |||
692 | ||||
693 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 693, __PRETTY_FUNCTION__); } while (0); | |||
694 | hashmap_free_free(m); | |||
695 | } | |||
696 | ||||
697 | static void test_hashmap_get2(void) { | |||
698 | Hashmap *m; | |||
699 | char *r; | |||
700 | char *val; | |||
701 | char key_orig[] = "Key 1"; | |||
702 | void *key_copy; | |||
703 | ||||
704 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 704, __func__, "%s", __func__ ) : -abs(_e); }); | |||
705 | ||||
706 | val = strdup("my val"); | |||
707 | assert_se(val)do { if ((__builtin_expect(!!(!(val)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("val"), "../src/test/test-hashmap-plain.c" , 707, __PRETTY_FUNCTION__); } while (0); | |||
708 | ||||
709 | key_copy = strdup(key_orig); | |||
710 | assert_se(key_copy)do { if ((__builtin_expect(!!(!(key_copy)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("key_copy"), "../src/test/test-hashmap-plain.c" , 710, __PRETTY_FUNCTION__); } while (0); | |||
711 | ||||
712 | r = hashmap_get2(NULL((void*)0), key_orig, &key_copy); | |||
713 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 713, __PRETTY_FUNCTION__); } while (0); | |||
714 | ||||
715 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
716 | ||||
717 | hashmap_put(m, key_copy, val); | |||
718 | key_copy = NULL((void*)0); | |||
719 | ||||
720 | r = hashmap_get2(m, key_orig, &key_copy); | |||
721 | assert_se(streq(r, val))do { if ((__builtin_expect(!!(!((strcmp((r),(val)) == 0))),0) )) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(r, val)" ), "../src/test/test-hashmap-plain.c", 721, __PRETTY_FUNCTION__ ); } while (0); | |||
722 | assert_se(key_orig != key_copy)do { if ((__builtin_expect(!!(!(key_orig != key_copy)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("key_orig != key_copy"), "../src/test/test-hashmap-plain.c" , 722, __PRETTY_FUNCTION__); } while (0); | |||
723 | assert_se(streq(key_orig, key_copy))do { if ((__builtin_expect(!!(!((strcmp((key_orig),(key_copy) ) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(key_orig, key_copy)" ), "../src/test/test-hashmap-plain.c", 723, __PRETTY_FUNCTION__ ); } while (0); | |||
724 | ||||
725 | r = hashmap_get2(m, "no such key", NULL((void*)0)); | |||
726 | assert_se(r == NULL)do { if ((__builtin_expect(!!(!(r == ((void*)0))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("r == NULL"), "../src/test/test-hashmap-plain.c" , 726, __PRETTY_FUNCTION__); } while (0); | |||
727 | ||||
728 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 728, __PRETTY_FUNCTION__); } while (0); | |||
729 | hashmap_free_free_free(m); | |||
730 | } | |||
731 | ||||
732 | static void crippled_hashmap_func(const void *p, struct siphash *state) { | |||
733 | return trivial_hash_func(INT_TO_PTR(PTR_TO_INT(p) & 0xff)((void *) ((intptr_t) (((int) ((intptr_t) (p))) & 0xff))), state); | |||
734 | } | |||
735 | ||||
736 | static const struct hash_ops crippled_hashmap_ops = { | |||
737 | .hash = crippled_hashmap_func, | |||
738 | .compare = trivial_compare_func, | |||
739 | }; | |||
740 | ||||
741 | static void test_hashmap_many(void) { | |||
742 | Hashmap *h; | |||
743 | unsigned i, j; | |||
744 | void *v, *k; | |||
745 | const struct { | |||
746 | const struct hash_ops *ops; | |||
747 | unsigned n_entries; | |||
748 | } tests[] = { | |||
749 | { .ops = NULL((void*)0), .n_entries = arg_slow ? 1 << 20 : 240 }, | |||
750 | { .ops = &crippled_hashmap_ops, .n_entries = arg_slow ? 1 << 14 : 140 }, | |||
751 | }; | |||
752 | ||||
753 | log_info("%s (%s)", __func__, arg_slow ? "slow" : "fast")({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 753, __func__, "%s (%s)" , __func__, arg_slow ? "slow" : "fast") : -abs(_e); }); | |||
754 | ||||
755 | for (j = 0; j < ELEMENTSOF(tests)__extension__ (__builtin_choose_expr( !__builtin_types_compatible_p (typeof(tests), typeof(&*(tests))), sizeof(tests)/sizeof( (tests)[0]), ((void)0))); j++) { | |||
756 | assert_se(h = hashmap_new(tests[j].ops))do { if ((__builtin_expect(!!(!(h = internal_hashmap_new(tests [j].ops ))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "h = hashmap_new(tests[j].ops)"), "../src/test/test-hashmap-plain.c" , 756, __PRETTY_FUNCTION__); } while (0); | |||
757 | ||||
758 | for (i = 1; i < tests[j].n_entries*3; i+=3) { | |||
759 | assert_se(hashmap_put(h, UINT_TO_PTR(i), UINT_TO_PTR(i)) >= 0)do { if ((__builtin_expect(!!(!(hashmap_put(h, ((void *) ((uintptr_t ) (i))), ((void *) ((uintptr_t) (i)))) >= 0)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_put(h, UINT_TO_PTR(i), UINT_TO_PTR(i)) >= 0" ), "../src/test/test-hashmap-plain.c", 759, __PRETTY_FUNCTION__ ); } while (0); | |||
760 | assert_se(PTR_TO_UINT(hashmap_get(h, UINT_TO_PTR(i))) == i)do { if ((__builtin_expect(!!(!(((unsigned int) ((uintptr_t) ( hashmap_get(h, ((void *) ((uintptr_t) (i))))))) == i)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("PTR_TO_UINT(hashmap_get(h, UINT_TO_PTR(i))) == i" ), "../src/test/test-hashmap-plain.c", 760, __PRETTY_FUNCTION__ ); } while (0); | |||
761 | } | |||
762 | ||||
763 | for (i = 1; i < tests[j].n_entries*3; i++) | |||
764 | assert_se(hashmap_contains(h, UINT_TO_PTR(i)) == (i % 3 == 1))do { if ((__builtin_expect(!!(!(hashmap_contains(h, ((void *) ((uintptr_t) (i)))) == (i % 3 == 1))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_contains(h, UINT_TO_PTR(i)) == (i % 3 == 1)" ), "../src/test/test-hashmap-plain.c", 764, __PRETTY_FUNCTION__ ); } while (0); | |||
765 | ||||
766 | log_info("%u <= %u * 0.8 = %g", hashmap_size(h), hashmap_buckets(h), hashmap_buckets(h) * 0.8)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 766, __func__, "%u <= %u * 0.8 = %g" , hashmap_size(h), hashmap_buckets(h), hashmap_buckets(h) * 0.8 ) : -abs(_e); }); | |||
767 | ||||
768 | assert_se(hashmap_size(h) <= hashmap_buckets(h) * 0.8)do { if ((__builtin_expect(!!(!(hashmap_size(h) <= hashmap_buckets (h) * 0.8)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "hashmap_size(h) <= hashmap_buckets(h) * 0.8"), "../src/test/test-hashmap-plain.c" , 768, __PRETTY_FUNCTION__); } while (0); | |||
769 | assert_se(hashmap_size(h) == tests[j].n_entries)do { if ((__builtin_expect(!!(!(hashmap_size(h) == tests[j].n_entries )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_size(h) == tests[j].n_entries" ), "../src/test/test-hashmap-plain.c", 769, __PRETTY_FUNCTION__ ); } while (0); | |||
770 | ||||
771 | while (!hashmap_isempty(h)) { | |||
772 | k = hashmap_first_key(h); | |||
773 | v = hashmap_remove(h, k); | |||
774 | assert_se(v == k)do { if ((__builtin_expect(!!(!(v == k)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("v == k"), "../src/test/test-hashmap-plain.c" , 774, __PRETTY_FUNCTION__); } while (0); | |||
775 | } | |||
776 | ||||
777 | hashmap_free(h); | |||
778 | } | |||
779 | } | |||
780 | ||||
781 | static void test_hashmap_first(void) { | |||
782 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
783 | ||||
784 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 784, __func__, "%s", __func__ ) : -abs(_e); }); | |||
785 | ||||
786 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
787 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 787, __PRETTY_FUNCTION__); } while (0); | |||
788 | ||||
789 | assert_se(!hashmap_first(m))do { if ((__builtin_expect(!!(!(!hashmap_first(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_first(m)"), "../src/test/test-hashmap-plain.c" , 789, __PRETTY_FUNCTION__); } while (0); | |||
790 | assert_se(hashmap_put(m, "key 1", (void*) "val 1") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", (void *) "val 1") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 1\", (void*) \"val 1\") == 1"), "../src/test/test-hashmap-plain.c" , 790, __PRETTY_FUNCTION__); } while (0); | |||
791 | assert_se(streq(hashmap_first(m), "val 1"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first(m)),("val 1" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(hashmap_first(m), \"val 1\")" ), "../src/test/test-hashmap-plain.c", 791, __PRETTY_FUNCTION__ ); } while (0); | |||
792 | assert_se(hashmap_put(m, "key 2", (void*) "val 2") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 2", (void *) "val 2") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 2\", (void*) \"val 2\") == 1"), "../src/test/test-hashmap-plain.c" , 792, __PRETTY_FUNCTION__); } while (0); | |||
793 | #ifdef ORDERED | |||
794 | assert_se(streq(hashmap_first(m), "val 1"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first(m)),("val 1" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(hashmap_first(m), \"val 1\")" ), "../src/test/test-hashmap-plain.c", 794, __PRETTY_FUNCTION__ ); } while (0); | |||
795 | assert_se(hashmap_remove(m, "key 1"))do { if ((__builtin_expect(!!(!(hashmap_remove(m, "key 1"))), 0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_remove(m, \"key 1\")" ), "../src/test/test-hashmap-plain.c", 795, __PRETTY_FUNCTION__ ); } while (0); | |||
796 | assert_se(streq(hashmap_first(m), "val 2"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first(m)),("val 2" )) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("streq(hashmap_first(m), \"val 2\")" ), "../src/test/test-hashmap-plain.c", 796, __PRETTY_FUNCTION__ ); } while (0); | |||
797 | #endif | |||
798 | } | |||
799 | ||||
800 | static void test_hashmap_first_key(void) { | |||
801 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
802 | ||||
803 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 803, __func__, "%s", __func__ ) : -abs(_e); }); | |||
804 | ||||
805 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
806 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 806, __PRETTY_FUNCTION__); } while (0); | |||
807 | ||||
808 | assert_se(!hashmap_first_key(m))do { if ((__builtin_expect(!!(!(!hashmap_first_key(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("!hashmap_first_key(m)"), "../src/test/test-hashmap-plain.c" , 808, __PRETTY_FUNCTION__); } while (0); | |||
809 | assert_se(hashmap_put(m, "key 1", NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", ((void *)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "hashmap_put(m, \"key 1\", NULL) == 1"), "../src/test/test-hashmap-plain.c" , 809, __PRETTY_FUNCTION__); } while (0); | |||
810 | assert_se(streq(hashmap_first_key(m), "key 1"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first_key(m) ),("key 1")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("streq(hashmap_first_key(m), \"key 1\")"), "../src/test/test-hashmap-plain.c" , 810, __PRETTY_FUNCTION__); } while (0); | |||
811 | assert_se(hashmap_put(m, "key 2", NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 2", ((void *)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "hashmap_put(m, \"key 2\", NULL) == 1"), "../src/test/test-hashmap-plain.c" , 811, __PRETTY_FUNCTION__); } while (0); | |||
812 | #ifdef ORDERED | |||
813 | assert_se(streq(hashmap_first_key(m), "key 1"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first_key(m) ),("key 1")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("streq(hashmap_first_key(m), \"key 1\")"), "../src/test/test-hashmap-plain.c" , 813, __PRETTY_FUNCTION__); } while (0); | |||
814 | assert_se(hashmap_remove(m, "key 1") == NULL)do { if ((__builtin_expect(!!(!(hashmap_remove(m, "key 1") == ((void*)0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_remove(m, \"key 1\") == NULL"), "../src/test/test-hashmap-plain.c" , 814, __PRETTY_FUNCTION__); } while (0); | |||
815 | assert_se(streq(hashmap_first_key(m), "key 2"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_first_key(m) ),("key 2")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("streq(hashmap_first_key(m), \"key 2\")"), "../src/test/test-hashmap-plain.c" , 815, __PRETTY_FUNCTION__); } while (0); | |||
816 | #endif | |||
817 | } | |||
818 | ||||
819 | static void test_hashmap_steal_first_key(void) { | |||
820 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
821 | ||||
822 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 822, __func__, "%s", __func__ ) : -abs(_e); }); | |||
823 | ||||
824 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
825 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 825, __PRETTY_FUNCTION__); } while (0); | |||
826 | ||||
827 | assert_se(!hashmap_steal_first_key(m))do { if ((__builtin_expect(!!(!(!hashmap_steal_first_key(m))) ,0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("!hashmap_steal_first_key(m)" ), "../src/test/test-hashmap-plain.c", 827, __PRETTY_FUNCTION__ ); } while (0); | |||
828 | assert_se(hashmap_put(m, "key 1", NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", ((void *)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ( "hashmap_put(m, \"key 1\", NULL) == 1"), "../src/test/test-hashmap-plain.c" , 828, __PRETTY_FUNCTION__); } while (0); | |||
829 | assert_se(streq(hashmap_steal_first_key(m), "key 1"))do { if ((__builtin_expect(!!(!((strcmp((hashmap_steal_first_key (m)),("key 1")) == 0))),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("streq(hashmap_steal_first_key(m), \"key 1\")"), "../src/test/test-hashmap-plain.c" , 829, __PRETTY_FUNCTION__); } while (0); | |||
830 | ||||
831 | assert_se(hashmap_isempty(m))do { if ((__builtin_expect(!!(!(hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 831, __PRETTY_FUNCTION__); } while (0); | |||
832 | } | |||
833 | ||||
834 | static void test_hashmap_steal_first(void) { | |||
835 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
836 | int seen[3] = {}; | |||
837 | char *val; | |||
838 | ||||
839 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 839, __func__, "%s", __func__ ) : -abs(_e); }); | |||
840 | ||||
841 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
842 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 842, __PRETTY_FUNCTION__); } while (0); | |||
843 | ||||
844 | assert_se(hashmap_put(m, "key 1", (void*) "1") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", (void *) "1") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 1\", (void*) \"1\") == 1"), "../src/test/test-hashmap-plain.c" , 844, __PRETTY_FUNCTION__); } while (0); | |||
845 | assert_se(hashmap_put(m, "key 2", (void*) "22") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 2", (void *) "22") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 2\", (void*) \"22\") == 1"), "../src/test/test-hashmap-plain.c" , 845, __PRETTY_FUNCTION__); } while (0); | |||
846 | assert_se(hashmap_put(m, "key 3", (void*) "333") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 3", (void *) "333") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 3\", (void*) \"333\") == 1"), "../src/test/test-hashmap-plain.c" , 846, __PRETTY_FUNCTION__); } while (0); | |||
847 | ||||
848 | while ((val = hashmap_steal_first(m))) | |||
849 | seen[strlen(val) - 1]++; | |||
850 | ||||
851 | assert_se(seen[0] == 1 && seen[1] == 1 && seen[2] == 1)do { if ((__builtin_expect(!!(!(seen[0] == 1 && seen[ 1] == 1 && seen[2] == 1)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("seen[0] == 1 && seen[1] == 1 && seen[2] == 1" ), "../src/test/test-hashmap-plain.c", 851, __PRETTY_FUNCTION__ ); } while (0); | |||
852 | ||||
853 | assert_se(hashmap_isempty(m))do { if ((__builtin_expect(!!(!(hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 853, __PRETTY_FUNCTION__); } while (0); | |||
854 | } | |||
855 | ||||
856 | static void test_hashmap_clear_free_free(void) { | |||
857 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
858 | ||||
859 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 859, __func__, "%s", __func__ ) : -abs(_e); }); | |||
860 | ||||
861 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
862 | assert_se(m)do { if ((__builtin_expect(!!(!(m)),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("m"), "../src/test/test-hashmap-plain.c" , 862, __PRETTY_FUNCTION__); } while (0); | |||
863 | ||||
864 | assert_se(hashmap_put(m, strdup("key 1"), NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, strdup("key 1" ), ((void*)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, strdup(\"key 1\"), NULL) == 1"), "../src/test/test-hashmap-plain.c" , 864, __PRETTY_FUNCTION__); } while (0); | |||
865 | assert_se(hashmap_put(m, strdup("key 2"), NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, strdup("key 2" ), ((void*)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, strdup(\"key 2\"), NULL) == 1"), "../src/test/test-hashmap-plain.c" , 865, __PRETTY_FUNCTION__); } while (0); | |||
866 | assert_se(hashmap_put(m, strdup("key 3"), NULL) == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, strdup("key 3" ), ((void*)0)) == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, strdup(\"key 3\"), NULL) == 1"), "../src/test/test-hashmap-plain.c" , 866, __PRETTY_FUNCTION__); } while (0); | |||
| ||||
867 | ||||
868 | hashmap_clear_free_free(m); | |||
869 | assert_se(hashmap_isempty(m))do { if ((__builtin_expect(!!(!(hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 869, __PRETTY_FUNCTION__); } while (0); | |||
870 | } | |||
871 | ||||
872 | static void test_hashmap_reserve(void) { | |||
873 | _cleanup_hashmap_free___attribute__((cleanup(hashmap_freep))) Hashmap *m = NULL((void*)0); | |||
874 | ||||
875 | log_info("%s", __func__)({ int _level = (((6))), _e = ((0)), _realm = (LOG_REALM_SYSTEMD ); (log_get_max_level_realm(_realm) >= ((_level) & 0x07 )) ? log_internal_realm(((_realm) << 10 | (_level)), _e , "../src/test/test-hashmap-plain.c", 875, __func__, "%s", __func__ ) : -abs(_e); }); | |||
876 | ||||
877 | m = hashmap_new(&string_hash_ops)internal_hashmap_new(&string_hash_ops ); | |||
878 | ||||
879 | assert_se(hashmap_reserve(m, 1) == 0)do { if ((__builtin_expect(!!(!(hashmap_reserve(m, 1) == 0)), 0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_reserve(m, 1) == 0" ), "../src/test/test-hashmap-plain.c", 879, __PRETTY_FUNCTION__ ); } while (0); | |||
880 | assert_se(hashmap_buckets(m) < 1000)do { if ((__builtin_expect(!!(!(hashmap_buckets(m) < 1000) ),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_buckets(m) < 1000" ), "../src/test/test-hashmap-plain.c", 880, __PRETTY_FUNCTION__ ); } while (0); | |||
881 | assert_se(hashmap_reserve(m, 1000) == 0)do { if ((__builtin_expect(!!(!(hashmap_reserve(m, 1000) == 0 )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_reserve(m, 1000) == 0" ), "../src/test/test-hashmap-plain.c", 881, __PRETTY_FUNCTION__ ); } while (0); | |||
882 | assert_se(hashmap_buckets(m) >= 1000)do { if ((__builtin_expect(!!(!(hashmap_buckets(m) >= 1000 )),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD, ("hashmap_buckets(m) >= 1000" ), "../src/test/test-hashmap-plain.c", 882, __PRETTY_FUNCTION__ ); } while (0); | |||
883 | assert_se(hashmap_isempty(m))do { if ((__builtin_expect(!!(!(hashmap_isempty(m))),0))) log_assert_failed_realm (LOG_REALM_SYSTEMD, ("hashmap_isempty(m)"), "../src/test/test-hashmap-plain.c" , 883, __PRETTY_FUNCTION__); } while (0); | |||
884 | ||||
885 | assert_se(hashmap_put(m, "key 1", (void*) "val 1") == 1)do { if ((__builtin_expect(!!(!(hashmap_put(m, "key 1", (void *) "val 1") == 1)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_put(m, \"key 1\", (void*) \"val 1\") == 1"), "../src/test/test-hashmap-plain.c" , 885, __PRETTY_FUNCTION__); } while (0); | |||
886 | ||||
887 | assert_se(hashmap_reserve(m, UINT_MAX) == -ENOMEM)do { if ((__builtin_expect(!!(!(hashmap_reserve(m, (2147483647 *2U +1U)) == -12)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_reserve(m, UINT_MAX) == -ENOMEM"), "../src/test/test-hashmap-plain.c" , 887, __PRETTY_FUNCTION__); } while (0); | |||
888 | assert_se(hashmap_reserve(m, UINT_MAX - 1) == -ENOMEM)do { if ((__builtin_expect(!!(!(hashmap_reserve(m, (2147483647 *2U +1U) - 1) == -12)),0))) log_assert_failed_realm(LOG_REALM_SYSTEMD , ("hashmap_reserve(m, UINT_MAX - 1) == -ENOMEM"), "../src/test/test-hashmap-plain.c" , 888, __PRETTY_FUNCTION__); } while (0); | |||
889 | } | |||
890 | ||||
891 | void test_hashmap_funcs(void) { | |||
892 | int r; | |||
893 | ||||
894 | log_parse_environment()log_parse_environment_realm(LOG_REALM_SYSTEMD); | |||
895 | log_open(); | |||
896 | ||||
897 | r = getenv_bool("SYSTEMD_SLOW_TESTS"); | |||
898 | arg_slow = r >= 0 ? r : SYSTEMD_SLOW_TESTS_DEFAULT0; | |||
| ||||
899 | ||||
900 | test_hashmap_copy(); | |||
901 | test_hashmap_get_strv(); | |||
902 | test_hashmap_move_one(); | |||
903 | test_hashmap_move(); | |||
904 | test_hashmap_replace(); | |||
905 | test_hashmap_update(); | |||
906 | test_hashmap_put(); | |||
907 | test_hashmap_remove(); | |||
908 | test_hashmap_remove2(); | |||
909 | test_hashmap_remove_value(); | |||
910 | test_hashmap_remove_and_put(); | |||
911 | test_hashmap_remove_and_replace(); | |||
912 | test_hashmap_ensure_allocated(); | |||
913 | test_hashmap_foreach(); | |||
914 | test_hashmap_foreach_key(); | |||
915 | test_hashmap_contains(); | |||
916 | test_hashmap_merge(); | |||
917 | test_hashmap_isempty(); | |||
918 | test_hashmap_get(); | |||
919 | test_hashmap_get2(); | |||
920 | test_hashmap_size(); | |||
921 | test_hashmap_many(); | |||
922 | test_hashmap_first(); | |||
923 | test_hashmap_first_key(); | |||
924 | test_hashmap_steal_first_key(); | |||
925 | test_hashmap_steal_first(); | |||
926 | test_hashmap_clear_free_free(); | |||
927 | test_hashmap_reserve(); | |||
928 | } |