]> git.ozlabs.org Git - ccan/blob - ccan/invbloom/test/run-subtract.c
invbloom: new module for IBLTs.
[ccan] / ccan / invbloom / test / run-subtract.c
1 #include <ccan/invbloom/invbloom.h>
2 /* Include the C files directly. */
3 #include <ccan/invbloom/invbloom.c>
4 #include <ccan/tap/tap.h>
5
6 int main(void)
7 {
8         struct invbloom *ib1, *ib2;
9         const tal_t *ctx = tal(NULL, char);
10         int val = 1, val2 = 2, *ip;
11
12         /* This is how many tests you plan to run */
13         plan_tests(8);
14
15         ib1 = invbloom_new(ctx, int, 1024, 0);
16         ib2 = invbloom_new(ctx, int, 1024, 0);
17         invbloom_insert(ib1, &val);
18         invbloom_insert(ib2, &val2);
19
20         invbloom_subtract(ib1, ib2);
21
22         ip = invbloom_extract(ctx, ib1);
23         ok1(ip);
24         ok1(tal_parent(ip) == ctx);
25         ok1(*ip == val);
26
27         ip = invbloom_extract(ctx, ib1);
28         ok1(!ip);
29
30         ip = invbloom_extract_negative(ctx, ib1);
31         ok1(ip);
32         ok1(tal_parent(ip) == ctx);
33         ok1(*ip == val2);
34
35         ip = invbloom_extract_negative(ctx, ib1);
36         ok1(!ip);
37
38         tal_free(ctx);
39
40         /* This exits depending on whether all tests passed */
41         return exit_status();
42 }