diff options
author | Joe Thornber <thornber@redhat.com> | 2010-07-20 15:26:43 +0000 |
---|---|---|
committer | Joe Thornber <thornber@redhat.com> | 2010-07-20 15:26:43 +0000 |
commit | 4adf163d13b30c41c9de4a6a4f79de52ddf72831 (patch) | |
tree | 039dd9a9837b5e28d7c6b85e6b3e325c03054a72 | |
parent | 66392e66609b0bc47ab46df989d1cced735f94ad (diff) | |
download | lvm2-4adf163d13b30c41c9de4a6a4f79de52ddf72831.tar.gz lvm2-4adf163d13b30c41c9de4a6a4f79de52ddf72831.tar.xz lvm2-4adf163d13b30c41c9de4a6a4f79de52ddf72831.zip |
[UNIT-TESTS] add test for the recent dm_bitset_equal() function
-rw-r--r-- | unit-tests/datastruct/bitset_t.c | 59 |
1 files changed, 52 insertions, 7 deletions
diff --git a/unit-tests/datastruct/bitset_t.c b/unit-tests/datastruct/bitset_t.c index 380944d7..ab17ab4c 100644 --- a/unit-tests/datastruct/bitset_t.c +++ b/unit-tests/datastruct/bitset_t.c @@ -6,14 +6,10 @@ enum { NR_BITS = 137 }; -int main(int argc, char **argv) +static void test_get_next(struct dm_pool *mem) { int i, j, last, first; - dm_bitset_t bs; - struct dm_pool *mem = dm_pool_create("bitset test", 1024); - - assert(mem); - bs = dm_bitset_create(mem, NR_BITS); + dm_bitset_t bs = dm_bitset_create(mem, NR_BITS); for (i = 0; i < NR_BITS; i++) assert(!dm_bit(bs, i)); @@ -33,7 +29,56 @@ int main(int argc, char **argv) } assert(dm_bit_get_next(bs, last) == -1); - dm_pool_destroy(mem); +} + +static void bit_flip(dm_bitset_t bs, int bit) +{ + int old = dm_bit(bs, bit); + if (old) + dm_bit_clear(bs, bit); + else + dm_bit_set(bs, bit); +} + +static void test_equal(struct dm_pool *mem) +{ + dm_bitset_t bs1 = dm_bitset_create(mem, NR_BITS); + dm_bitset_t bs2 = dm_bitset_create(mem, NR_BITS); + + int i, j; + for (i = 0, j = 1; i < NR_BITS; i += j, j++) { + dm_bit_set(bs1, i); + dm_bit_set(bs2, i); + } + + assert(dm_bitset_equal(bs1, bs2)); + assert(dm_bitset_equal(bs2, bs1)); + + for (i = 0; i < NR_BITS; i++) { + bit_flip(bs1, i); + assert(!dm_bitset_equal(bs1, bs2)); + assert(!dm_bitset_equal(bs2, bs1)); + + assert(dm_bitset_equal(bs1, bs1)); /* comparing with self */ + bit_flip(bs1, i); + } +} + +int main(int argc, char **argv) +{ + typedef void (*test_fn)(struct dm_pool *); + static test_fn tests[] = { + test_get_next, + test_equal + }; + + int i; + for (i = 0; i < sizeof(tests) / sizeof(*tests); i++) { + struct dm_pool *mem = dm_pool_create("bitset test", 1024); + assert(mem); + tests[i](mem); + dm_pool_destroy(mem); + } return 0; } |