For use as direct locals, or when the size is a constant, inside
structure definitions.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
if (strcmp(argv[1], "testdepends") == 0) {
printf("ccan/array_size\n");
if (strcmp(argv[1], "testdepends") == 0) {
printf("ccan/array_size\n");
+ printf("ccan/foreach\n");
+#define BITMAP_DECLARE(_name, _nbits) \
+ bitmap (_name)[BITMAP_NWORDS(_nbits)]
+
static inline size_t bitmap_sizeof(int nbits)
{
return BITMAP_NWORDS(nbits) * sizeof(bitmap_word);
static inline size_t bitmap_sizeof(int nbits)
{
return BITMAP_NWORDS(nbits) * sizeof(bitmap_word);
#include <ccan/bitmap/bitmap.h>
#include <ccan/tap/tap.h>
#include <ccan/array_size/array_size.h>
#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,
int bitmap_sizes[] = {
1, 2, 3, 4, 5, 6, 7, 8,
#define NSIZES ARRAY_SIZE(bitmap_sizes)
#define NTESTS 9
#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;
+ if (dynalloc) {
+ bitmap = bitmap_alloc(nbits);
+ ok1(bitmap != NULL);
+ } else {
+ bitmap = sbitmap;
+ marker = 0xdeadbeef;
+ }
bitmap_zero(bitmap, nbits);
wrong = false;
bitmap_zero(bitmap, nbits);
wrong = false;
wrong = wrong || bitmap_full(bitmap, nbits);
}
ok1(!wrong);
wrong = wrong || bitmap_full(bitmap, nbits);
}
ok1(!wrong);
+
+ if (dynalloc) {
+ free(bitmap);
+ } else {
+ ok1(marker == 0xdeadbeef);
+ }
}
int main(void)
{
int i;
}
int main(void)
{
int i;
/* This is how many tests you plan to run */
/* This is how many tests you plan to run */
- plan_tests(NSIZES * NTESTS);
+ plan_tests(NSIZES * NTESTS * 2);
for (i = 0; i < NSIZES; i++) {
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 */
}
/* This exits depending on whether all tests passed */