1 #include <ccan/strmap/strmap.h>
2 #include <ccan/strmap/strmap.c>
3 #include <ccan/tap/tap.h>
8 STRMAP_MEMBERS(char *);
10 const char str[] = "hello";
11 const char val[] = "there";
12 const char none[] = "";
13 char *dup = strdup(str);
16 /* This is how many tests you plan to run */
21 ok1(!strmap_get(&map, str));
22 ok1(!strmap_get(&map, none));
23 ok1(!strmap_del(&map, str, NULL));
24 ok1(!strmap_del(&map, none, NULL));
26 ok1(strmap_add(&map, str, val));
27 ok1(strmap_get(&map, str) == val);
28 /* We compare the string, not the pointer. */
29 ok1(strmap_get(&map, dup) == val);
30 ok1(!strmap_get(&map, none));
32 /* Add a duplicate should fail. */
33 ok1(!strmap_add(&map, dup, val));
34 ok1(strmap_get(&map, dup) == val);
36 /* Delete should return original string. */
37 ok1(strmap_del(&map, dup, &v) == str);
39 ok1(!strmap_get(&map, str));
40 ok1(!strmap_get(&map, none));
42 /* Try insert and delete of empty string. */
43 ok1(strmap_add(&map, none, none));
44 ok1(strmap_get(&map, none) == none);
45 ok1(!strmap_get(&map, str));
47 /* Delete should return original string. */
48 ok1(strmap_del(&map, "", &v) == none);
50 ok1(!strmap_get(&map, str));
51 ok1(!strmap_get(&map, none));
54 ok1(strmap_add(&map, none, none));
55 ok1(strmap_add(&map, str, val));
56 ok1(strmap_get(&map, str) == val);
57 ok1(strmap_get(&map, none) == none);
58 ok1(strmap_del(&map, "does not exist", NULL) == NULL);
59 ok1(strmap_del(&map, "", NULL) == none);
60 ok1(strmap_get(&map, str) == val);
61 ok1(strmap_del(&map, dup, &v) == str);
64 ok1(strmap_empty(&map));
67 /* This exits depending on whether all tests passed */