summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWei Yang <richardw.yang@linux.intel.com>2019-08-14 08:27:23 +0800
committerPaolo Bonzini <pbonzini@redhat.com>2019-08-20 20:00:51 +0200
commita060297822ea6b4194bf36654e58c802448a3eea (patch)
tree27a6e1c144a585ab4774d7523094bced65c753c2
parent355477f8c73e9c6b60704c57472c71393ff39bca (diff)
downloadqemu-a060297822ea6b4194bf36654e58c802448a3eea.zip
test-bitmap: test set 1 bit case for bitmap_set
All current bitmap_set test cases set range across word, while the handle of a range within one word is different from that. Add case to set 1 bit as a represent for set range within one word. Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--tests/test-bitmap.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/test-bitmap.c b/tests/test-bitmap.c
index 18aa584591..087e02a26c 100644
--- a/tests/test-bitmap.c
+++ b/tests/test-bitmap.c
@@ -67,6 +67,18 @@ static void bitmap_set_case(bmap_set_func set_func)
bmap = bitmap_new(BMAP_SIZE);
+ /* Set one bit at offset in second word */
+ for (offset = 0; offset <= BITS_PER_LONG; offset++) {
+ bitmap_clear(bmap, 0, BMAP_SIZE);
+ set_func(bmap, BITS_PER_LONG + offset, 1);
+ g_assert_cmpint(find_first_bit(bmap, 2 * BITS_PER_LONG),
+ ==, BITS_PER_LONG + offset);
+ g_assert_cmpint(find_next_zero_bit(bmap,
+ 3 * BITS_PER_LONG,
+ BITS_PER_LONG + offset),
+ ==, BITS_PER_LONG + offset + 1);
+ }
+
/* Both Aligned, set bits [BITS_PER_LONG, 3*BITS_PER_LONG] */
set_func(bmap, BITS_PER_LONG, 2 * BITS_PER_LONG);
g_assert_cmpuint(bmap[1], ==, -1ul);