]> git.ozlabs.org Git - ccan/blob - ccan/ntdb/test/run-001-fls.c
Merge branch 'ntdb' of https://github.com/ddiss/ccan into ddiss-ntdb
[ccan] / ccan / ntdb / test / run-001-fls.c
1 #include "ntdb-source.h"
2 #include "tap-interface.h"
3
4 static unsigned int dumb_fls(uint64_t num)
5 {
6         int i;
7
8         for (i = 63; i >= 0; i--) {
9                 if (num & (1ULL << i))
10                         break;
11         }
12         return i + 1;
13 }
14
15 int main(int argc, char *argv[])
16 {
17         unsigned int i, j;
18
19         plan_tests(64 * 64 + 2);
20
21         ok1(fls64(0) == 0);
22         ok1(dumb_fls(0) == 0);
23
24         for (i = 0; i < 64; i++) {
25                 for (j = 0; j < 64; j++) {
26                         uint64_t val = (1ULL << i) | (1ULL << j);
27                         ok(fls64(val) == dumb_fls(val),
28                            "%llu -> %u should be %u", (long long)val,
29                            fls64(val), dumb_fls(val));
30                 }
31         }
32         return exit_status();
33 }