#include <ccan/bitmap/bitmap.h>
#include <ccan/tap/tap.h>
#include <ccan/array_size/array_size.h>
+#include <ccan/foreach/foreach.h>
+
+#include <ccan/bitmap/bitmap.c>
int bitmap_sizes[] = {
1, 2, 3, 4, 5, 6, 7, 8,
#define NSIZES ARRAY_SIZE(bitmap_sizes)
#define NTESTS 9
-static void test_sizes(int nbits)
+static void test_sizes(int nbits, bool dynalloc)
{
- bitmap *bitmap = bitmap_alloc(nbits);
+ BITMAP_DECLARE(sbitmap, nbits);
+ uint32_t marker;
+ bitmap *bitmap;
int i, j;
bool wrong;
- ok1(bitmap != NULL);
+ if (dynalloc) {
+ bitmap = bitmap_alloc(nbits);
+ ok1(bitmap != NULL);
+ } else {
+ bitmap = sbitmap;
+ marker = 0xdeadbeef;
+ }
bitmap_zero(bitmap, nbits);
wrong = false;
wrong = wrong || bitmap_full(bitmap, nbits);
}
ok1(!wrong);
-
- free(bitmap);
+
+ if (dynalloc) {
+ free(bitmap);
+ } else {
+ ok1(marker == 0xdeadbeef);
+ }
}
int main(void)
{
int i;
+ bool dynalloc;
/* This is how many tests you plan to run */
- plan_tests(NSIZES * NTESTS);
+ plan_tests(NSIZES * NTESTS * 2);
for (i = 0; i < NSIZES; i++) {
- diag("Testing %d-bit bitmap", bitmap_sizes[i]);
- test_sizes(bitmap_sizes[i]);
+ foreach_int(dynalloc, false, true) {
+ diag("Testing %d-bit bitmap (%s allocation)",
+ bitmap_sizes[i], dynalloc ? "dynamic" : "static");
+ test_sizes(bitmap_sizes[i], dynalloc);
+ }
}
/* This exits depending on whether all tests passed */