]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib: test-bits - test the new fractional log helpers
authorPhil Carmody <phil@dovecot.fi>
Wed, 3 Feb 2016 17:18:21 +0000 (19:18 +0200)
committerGitLab <gitlab@git.dovecot.net>
Tue, 19 Apr 2016 17:29:28 +0000 (20:29 +0300)
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 <phil@dovecot.fi>
src/lib/test-bits.c

index 9776a2c51f2a7861d9fe0cfa76fcca59ebb8420d..e63a02b7b28f94e8e517a0f109611a3771007df4 100644 (file)
@@ -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();
 }