==> tests/strmap.c <==1/* Sorted, replace or keep, delete. */
2#include "mesh/check.h"
3#include "mesh/strmap.h"
4
5int main(void) {
6 ms_map m = {0};
7 CHECK(ms_set(&m, "systems", "3", false));
8 CHECK(ms_set(&m, "1.peer", "a:1", false));
9 CHECK(ms_set(&m, "0.peer", "b:2", false));
10 CHECK(!ms_set(&m, "systems", "4", false));
11 CHECK_S(ms_get(&m, "systems"), "3");
12 CHECK(ms_set(&m, "systems", "4", true));
13 CHECK_S(ms_get(&m, "systems"), "4");
14 CHECK_S(m.k[0], "0.peer");
15 CHECK_S(m.k[2], "systems");
16 CHECK(ms_get(&m, "zz") == NULL);
17 CHECK(ms_del(&m, "1.peer") && !ms_del(&m, "1.peer") && m.n == 2);
18 for (int i = 0; i < 40; i++) {
19 char k[8];
20 snprintf(k, sizeof k, "k%02d", 39 - i);
21 ms_set(&m, k, "v", false);
22 }
23 for (size_t i = 1; i < m.n; i++) CHECK(strcmp(m.k[i - 1], m.k[i]) < 0);
24 ms_free(&m);
25 return mesh_check_done();
26}