X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fbitmap%2Ftest%2Frun.c;fp=ccan%2Fbitmap%2Ftest%2Frun.c;h=76a8161cec2e1b10cf79838767929829e22a548a;hb=ba88f53bc56206c7eccac7eac20447e19c34c024;hp=0000000000000000000000000000000000000000;hpb=5628cd2c21655a84dfcf5cc693c8c0d5701fe75d;p=ccan diff --git a/ccan/bitmap/test/run.c b/ccan/bitmap/test/run.c new file mode 100644 index 00000000..76a8161c --- /dev/null +++ b/ccan/bitmap/test/run.c @@ -0,0 +1,99 @@ +#include +#include +#include + +int bitmap_sizes[] = { + 1, 2, 3, 4, 5, 6, 7, 8, + 16, 17, 24, 32, 33, + 64, 65, 127, 128, 129, + 1023, 1024, 1025, +}; +#define NSIZES ARRAY_SIZE(bitmap_sizes) +#define NTESTS 9 + +static void test_sizes(int nbits) +{ + void *bitmap = bitmap_alloc(nbits); + int i, j; + bool wrong; + + ok1(bitmap != NULL); + + bitmap_zero(bitmap, nbits); + wrong = false; + for (i = 0; i < nbits; i++) { + wrong = wrong || bitmap_test_bit(bitmap, i); + } + ok1(!wrong); + + bitmap_fill(bitmap, nbits); + wrong = false; + for (i = 0; i < nbits; i++) { + wrong = wrong || !bitmap_test_bit(bitmap, i); + } + ok1(!wrong); + + wrong = false; + for (i = 0; i < nbits; i++) { + bitmap_zero(bitmap, nbits); + bitmap_set_bit(bitmap, i); + for (j = 0; j < nbits; j++) { + bool val = (i == j); + + wrong = wrong || (bitmap_test_bit(bitmap, j) != val); + } + } + ok1(!wrong); + + wrong = false; + for (i = 0; i < nbits; i++) { + bitmap_fill(bitmap, nbits); + bitmap_clear_bit(bitmap, i); + for (j = 0; j < nbits; j++) { + bool val = !(i == j); + + wrong = wrong || (bitmap_test_bit(bitmap, j) != val); + } + } + ok1(!wrong); + + bitmap_zero(bitmap, nbits); + ok1(bitmap_empty(bitmap, nbits)); + + wrong = false; + for (i = 0; i < nbits; i++) { + bitmap_zero(bitmap, nbits); + bitmap_set_bit(bitmap, i); + wrong = wrong || bitmap_empty(bitmap, nbits); + } + ok1(!wrong); + + bitmap_fill(bitmap, nbits); + ok1(bitmap_full(bitmap, nbits)); + + wrong = false; + for (i = 0; i < nbits; i++) { + bitmap_fill(bitmap, nbits); + bitmap_clear_bit(bitmap, i); + wrong = wrong || bitmap_full(bitmap, nbits); + } + ok1(!wrong); + + free(bitmap); +} + +int main(void) +{ + int i; + + /* This is how many tests you plan to run */ + plan_tests(NSIZES * NTESTS); + + for (i = 0; i < NSIZES; i++) { + diag("Testing %d-bit bitmap", bitmap_sizes[i]); + test_sizes(bitmap_sizes[i]); + } + + /* This exits depending on whether all tests passed */ + return exit_status(); +}