skip to content
==> 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}