1 #include "ntdb-source.h"
2 #include "tap-interface.h"
5 int main(int argc
, char *argv
[])
8 struct ntdb_used_record rec
;
9 struct ntdb_context ntdb
= { .log_fn
= tap_log_fn
};
11 plan_tests(64 + 32 + 48*5 + 1);
13 /* We should be able to encode any data value. */
14 for (i
= 0; i
< 64; i
++)
15 ok1(set_header(&ntdb
, &rec
, NTDB_USED_MAGIC
, 0, 1ULL << i
,
18 /* And any key and data with < 64 bits between them. */
19 for (i
= 0; i
< 32; i
++) {
20 ntdb_len_t dlen
= 1ULL >> (63 - i
), klen
= 1ULL << i
;
21 ok1(set_header(&ntdb
, &rec
, NTDB_USED_MAGIC
, klen
, dlen
,
25 /* We should neatly encode all values. */
26 for (i
= 0; i
< 48; i
++) {
27 uint64_t klen
= 1ULL << (i
< 16 ? i
: 15);
28 uint64_t dlen
= 1ULL << i
;
29 uint64_t xlen
= 1ULL << (i
< 32 ? i
: 31);
30 ok1(set_header(&ntdb
, &rec
, NTDB_USED_MAGIC
, klen
, dlen
,
31 klen
+dlen
+xlen
) == 0);
32 ok1(rec_key_length(&rec
) == klen
);
33 ok1(rec_data_length(&rec
) == dlen
);
34 ok1(rec_extra_padding(&rec
) == xlen
);
35 ok1(rec_magic(&rec
) == NTDB_USED_MAGIC
);
37 ok1(tap_log_messages
== 0);