From: Phil Carmody Date: Wed, 3 Feb 2016 17:18:21 +0000 (+0200) Subject: lib: test-bits - test the new fractional log helpers X-Git-Tag: 2.3.0.rc1~4003 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=20be2a7b3ad5aa062d15e0d7146aaad3ba172804;p=thirdparty%2Fdovecot%2Fcore.git lib: test-bits - test the new fractional log helpers Ensure that the beginning and end of every bucket range are both mapped into that bucket. It also checks that the bucket ranges are contiguous. Assuming the function's weakly monatonic, this is as good as testing every single value. Signed-off-by: Phil Carmody --- diff --git a/src/lib/test-bits.c b/src/lib/test-bits.c index 9776a2c51f..e63a02b7b2 100644 --- a/src/lib/test-bits.c +++ b/src/lib/test-bits.c @@ -83,9 +83,34 @@ static void test_sum_overflows(void) test_end(); } -void test_bits() +static void test_bits_fraclog(void) +{ + unsigned int fracbits; + for (fracbits = 0; fracbits < 6; fracbits++) { + static char name[] = "fraclog x-bit"; + name[8] = '0'+ fracbits; + test_begin(name); + + unsigned int i; + unsigned int last_end = ~0u; + for (i = 0; i < BITS_FRACLOG_BUCKETS(fracbits); i++) { + unsigned int start = bits_fraclog_bucket_start(i, fracbits); + unsigned int end = bits_fraclog_bucket_end(i, fracbits); + test_assert_idx(start == last_end + 1, i); + last_end = end; + test_assert_idx(bits_fraclog(start, fracbits) == i, i); + test_assert_idx(bits_fraclog(end, fracbits) == i, i); + } + test_assert_idx(last_end == ~0u, fracbits); + + test_end(); + } +} + +void test_bits(void) { test_nearest_power(); test_bits_requiredXX(); + test_bits_fraclog(); test_sum_overflows(); }