1 #include "tdb2-source.h"
2 #include <ccan/tap/tap.h>
6 int main(int argc
, char *argv
[])
9 struct tdb_context
*tdb
;
10 struct tdb_layout
*layout
;
14 key
= tdb_mkdata("Hello", 5);
15 data
= tdb_mkdata("world", 5);
17 /* Create a TDB with three free tables. */
18 layout
= new_tdb_layout(NULL
);
19 tdb_layout_add_freetable(layout
);
20 tdb_layout_add_freetable(layout
);
21 tdb_layout_add_freetable(layout
);
22 tdb_layout_add_free(layout
, 80, 0);
23 /* Used record prevent coalescing. */
24 tdb_layout_add_used(layout
, key
, data
, 6);
25 tdb_layout_add_free(layout
, 160, 1);
27 tdb_layout_add_used(layout
, key
, data
, 7);
28 tdb_layout_add_free(layout
, 320, 2);
30 tdb_layout_add_used(layout
, key
, data
, 8);
31 tdb_layout_add_free(layout
, 40, 0);
32 tdb
= tdb_layout_get(layout
);
33 ok1(tdb_check(tdb
, NULL
, NULL
) == 0);
35 off
= get_free(tdb
, 0, 80 - sizeof(struct tdb_used_record
), 0,
37 ok1(off
== layout
->elem
[3].base
.off
);
38 ok1(tdb
->tdb2
.ftable_off
== layout
->elem
[0].base
.off
);
40 off
= get_free(tdb
, 0, 160 - sizeof(struct tdb_used_record
), 0,
42 ok1(off
== layout
->elem
[5].base
.off
);
43 ok1(tdb
->tdb2
.ftable_off
== layout
->elem
[1].base
.off
);
45 off
= get_free(tdb
, 0, 320 - sizeof(struct tdb_used_record
), 0,
47 ok1(off
== layout
->elem
[7].base
.off
);
48 ok1(tdb
->tdb2
.ftable_off
== layout
->elem
[2].base
.off
);
50 off
= get_free(tdb
, 0, 40 - sizeof(struct tdb_used_record
), 0,
52 ok1(off
== layout
->elem
[9].base
.off
);
53 ok1(tdb
->tdb2
.ftable_off
== layout
->elem
[0].base
.off
);
56 off
= get_free(tdb
, 0, 0, 1, TDB_USED_MAGIC
, 0);
60 tdb_layout_free(layout
);
62 ok1(tap_log_messages
== 0);