X-Git-Url: http://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Ftdb2%2Ftest%2Frun-001-fls.c;fp=ccan%2Ftdb2%2Ftest%2Frun-001-fls.c;h=4ecc6f8560329438bbdd53cbf29e48bf7ed6b1c7;hp=0000000000000000000000000000000000000000;hb=1a24a8708494668c07e5c02284bfc2ef3b09603b;hpb=95458bafc9dc99ac8fcd68aa8f48a9fc564e6a31 diff --git a/ccan/tdb2/test/run-001-fls.c b/ccan/tdb2/test/run-001-fls.c new file mode 100644 index 00000000..4ecc6f85 --- /dev/null +++ b/ccan/tdb2/test/run-001-fls.c @@ -0,0 +1,36 @@ +#include +#include +#include +#include +#include + +static unsigned int dumb_fls(uint64_t num) +{ + int i; + + for (i = 63; i >= 0; i--) { + if (num & (1ULL << i)) + break; + } + return i + 1; +} + +int main(int argc, char *argv[]) +{ + unsigned int i, j; + + plan_tests(64 * 64 + 2); + + ok1(fls64(0) == 0); + ok1(dumb_fls(0) == 0); + + for (i = 0; i < 64; i++) { + for (j = 0; j < 64; j++) { + uint64_t val = (1ULL << i) | (1ULL << j); + ok(fls64(val) == dumb_fls(val), + "%llu -> %u should be %u", (long long)val, + fls64(val), dumb_fls(val)); + } + } + return exit_status(); +}