|
|
@@ -1,6 +1,7 @@
|
|
|
#include <ccan/bitmap/bitmap.h>
|
|
|
#include <ccan/tap/tap.h>
|
|
|
#include <ccan/array_size/array_size.h>
|
|
|
+#include <ccan/foreach/foreach.h>
|
|
|
|
|
|
int bitmap_sizes[] = {
|
|
|
1, 2, 3, 4, 5, 6, 7, 8,
|
|
|
@@ -11,13 +12,21 @@ int bitmap_sizes[] = {
|
|
|
#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;
|
|
|
@@ -78,20 +87,28 @@ static void test_sizes(int nbits)
|
|
|
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 */
|