From: Wei Yang Date: Wed, 14 Aug 2019 00:27:23 +0000 (+0800) Subject: test-bitmap: test set 1 bit case for bitmap_set X-Git-Tag: v4.2.0-rc0~224^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a060297822ea6b4194bf36654e58c802448a3eea;p=thirdparty%2Fqemu.git 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 Signed-off-by: Paolo Bonzini --- diff --git a/tests/test-bitmap.c b/tests/test-bitmap.c index 18aa584591e..087e02a26c7 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);