aboutsummaryrefslogtreecommitdiffstats
path: root/roms/skiboot/core/test/run-bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'roms/skiboot/core/test/run-bitmap.c')
-rw-r--r--roms/skiboot/core/test/run-bitmap.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/roms/skiboot/core/test/run-bitmap.c b/roms/skiboot/core/test/run-bitmap.c
new file mode 100644
index 000000000..e474915b8
--- /dev/null
+++ b/roms/skiboot/core/test/run-bitmap.c
@@ -0,0 +1,80 @@
+// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+/*
+ * Copyright 2017 IBM Corp.
+ */
+
+#include "../bitmap.c"
+#include <assert.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+
+int main(void)
+{
+ bitmap_t *map = malloc(sizeof(bitmap_elem_t));
+ int i;
+ memset(map, 0, sizeof(bitmap_elem_t));
+
+ assert(BITMAP_ELEMS(16) == (BITMAP_ELEMS(8)));
+ assert(BITMAP_ELEMS(128) == (BITMAP_ELEMS(64)*2));
+
+ assert(BITMAP_BYTES(64) == 8);
+ assert(BITMAP_BYTES(128) == 16);
+
+ assert(BITMAP_BIT(1) == 0x1);
+ assert(BITMAP_BIT(2) == 0x2);
+ assert(BITMAP_BIT(3) == 0x3);
+ assert(BITMAP_BIT(8) == 0x8);
+
+ assert(BITMAP_MASK(0) == 0x1);
+ assert(BITMAP_MASK(1) == 0x2);
+ assert(BITMAP_MASK(8) == 0x100);
+ assert(BITMAP_MASK(9) == 0x200);
+
+ assert(BITMAP_ELEM(1) == 0);
+ assert(BITMAP_ELEM(128) == BITMAP_ELEMS(128));
+
+ bitmap_set_bit(*map, 0);
+ assert(*(unsigned long*)map == 0x1);
+ assert(bitmap_tst_bit(*map, 0) == true);
+ bitmap_clr_bit(*map, 0);
+ assert(*(unsigned long*)map == 0x00);
+
+ bitmap_set_bit(*map, 8);
+ assert(*(unsigned long*)map == 0x100);
+ assert(bitmap_tst_bit(*map, 0) == false);
+ assert(bitmap_tst_bit(*map, 1) == false);
+ assert(bitmap_tst_bit(*map, 2) == false);
+ assert(bitmap_tst_bit(*map, 3) == false);
+ assert(bitmap_tst_bit(*map, 4) == false);
+ assert(bitmap_tst_bit(*map, 5) == false);
+ assert(bitmap_tst_bit(*map, 6) == false);
+ assert(bitmap_tst_bit(*map, 7) == false);
+ assert(bitmap_tst_bit(*map, 8) == true);
+ assert(bitmap_tst_bit(*map, 9) == false);
+ assert(bitmap_tst_bit(*map, 10) == false);
+ assert(bitmap_tst_bit(*map, 11) == false);
+ assert(bitmap_tst_bit(*map, 12) == false);
+ assert(bitmap_tst_bit(*map, 13) == false);
+ assert(bitmap_tst_bit(*map, 14) == false);
+ assert(bitmap_tst_bit(*map, 15) == false);
+ assert(bitmap_find_one_bit(*map, 0, 16) == 8);
+ bitmap_clr_bit(*map, 8);
+ assert(bitmap_find_one_bit(*map, 0, 16) == -1);
+ assert(*(unsigned long*)map == 0x00);
+ assert(bitmap_tst_bit(*map, 8) == false);
+
+ bitmap_for_each_zero(*map, 7, i) {
+ bitmap_set_bit(*map, i);
+ }
+
+ for (i = 0; i < 7; i++)
+ assert(bitmap_tst_bit(*map, i) == true);
+
+ assert(bitmap_tst_bit(*map, 8) == false);
+
+
+ free(map);
+
+ return 0;
+}