]> git.ozlabs.org Git - ccan/blob - ccan/strgrp/test/helpers.c
io: handle errors on listening file descriptors.
[ccan] / ccan / strgrp / test / helpers.c
1 //#include "../test/helpers.h"
2 #include "helpers.h"
3
4 int
5 one_group_from_two(struct strgrp *ctx,
6         const char *const k1, void *v1,
7         const char *const k2, void *v2) {
8     const struct strgrp_grp *grp1, *grp2;
9     struct strgrp_grp_iter *iter;
10     const struct strgrp_item *item;
11
12     plan_tests(10);
13     grp1 = strgrp_add(ctx, k1, v1);
14     ok1(grp1);
15     grp2 = strgrp_add(ctx, k2, v2);
16     ok1(grp2);
17     ok1(grp1 == grp2);
18     iter = strgrp_grp_iter_new(grp1);
19     item = strgrp_grp_iter_next(iter);
20     ok1(item);
21     ok1(streq(k1, strgrp_item_key(item)));
22     ok1(v1 == strgrp_item_value(item));
23     item = strgrp_grp_iter_next(iter);
24     ok1(item);
25     ok1(streq(k2, strgrp_item_key(item)));
26     ok1(v2 == strgrp_item_value(item));
27     ok1(!strgrp_grp_iter_next(iter));
28     strgrp_grp_iter_free(iter);
29     strgrp_free(ctx);
30     return exit_status();
31 }
32
33 int
34 two_groups_from_two(struct strgrp *ctx,
35         const char *const k1, void *v1,
36         const char *const k2, void *v2) {
37     const struct strgrp_grp *grp1, *grp2;
38     struct strgrp_grp_iter *iter;
39     const struct strgrp_item *item;
40
41     plan_tests(11);
42     grp1 = strgrp_add(ctx, k1, v1);
43     ok1(grp1);
44     grp2 = strgrp_add(ctx, k2, v2);
45     ok1(grp2);
46     ok1(grp1 != grp2);
47     {
48         iter = strgrp_grp_iter_new(grp1);
49         item = strgrp_grp_iter_next(iter);
50         ok1(item);
51         ok1(streq(k1, strgrp_item_key(item)));
52         ok1(v1 == strgrp_item_value(item));
53         ok1(!strgrp_grp_iter_next(iter));
54         strgrp_grp_iter_free(iter);
55     }
56     {
57         iter = strgrp_grp_iter_new(grp2);
58         item = strgrp_grp_iter_next(iter);
59         ok1(item);
60         ok1(streq(k2, strgrp_item_key(item)));
61         ok1(v2 == strgrp_item_value(item));
62         ok1(!strgrp_grp_iter_next(iter));
63         strgrp_grp_iter_free(iter);
64     }
65     strgrp_free(ctx);
66     return exit_status();
67 }