Added the possibility of running tests from each collection separately
Also added CMC_BITSET_WORD_TYPE so that the type of the bitset buffer can be defined with the -D flag
This commit is contained in:
1 parent
981fef3def
commit
bf3535970e
19 files changed
+527
-156
No files matched your search
+58
-16
@@ -12,6 +12,10 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
const size_t word_bytes = sizeof(cmc_bitset_word);
|
||||
const size_t word_bits = sizeof(cmc_bitset_word) * CHAR_BIT;
|
||||
|
||||
printf("%s", cmc_test_color(5));
|
||||
printf(" BitSet<"CMC_TO_STRING(CMC_BITSET_WORD_TYPE)">\n");
|
||||
printf("%s", cmc_test_color(0));
|
||||
|
||||
CMC_CREATE_TEST(PFX##_new(), {
|
||||
struct bitset *bs = bs_new(64);
|
||||
|
||||
@@ -123,24 +127,24 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
struct bitset *bs = bs_new(word_bits);
|
||||
|
||||
cmc_assert_not_equals(ptr, NULL, bs);
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
bs->flag = cmc_flags.ERROR;
|
||||
cmc_assert(bs_set(bs, 0));
|
||||
cmc_assert(1 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 1, bs->buffer[0]);
|
||||
cmc_assert_equals(int32_t, cmc_flags.OK, bs->flag);
|
||||
|
||||
bs->buffer[0] = 0;
|
||||
|
||||
cmc_assert(bs_set(bs, word_bits - 1));
|
||||
cmc_assert(((cmc_bitset_word)1 << (word_bits - 1)) == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, ((cmc_bitset_word)1 << (word_bits - 1)), bs->buffer[0]);
|
||||
|
||||
cmc_assert(bs_set(bs, word_bits * 8 - 1));
|
||||
cmc_assert(((cmc_bitset_word)1 << (word_bits - 1)) ==
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, ((cmc_bitset_word)1 << (word_bits - 1)),
|
||||
bs->buffer[bs_bit_to_index(word_bits * 8 - 1)]);
|
||||
|
||||
cmc_assert(bs_set(bs, word_bits * 18 - 2));
|
||||
cmc_assert(((cmc_bitset_word)1 << (word_bits - 2)) ==
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, ((cmc_bitset_word)1 << (word_bits - 2)),
|
||||
bs->buffer[bs_bit_to_index(word_bits * 18 - 2)]);
|
||||
|
||||
bs_free(bs);
|
||||
@@ -150,7 +154,7 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
struct bitset *bs = bs_new(word_bits);
|
||||
|
||||
cmc_assert_not_equals(ptr, NULL, bs);
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
bs->flag = cmc_flags.ERROR;
|
||||
cmc_assert(bs_set_range(bs, 0, 0));
|
||||
@@ -166,18 +170,24 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
cmc_assert_equals(uint8_t, 244, bs->buffer[0]);
|
||||
|
||||
cmc_assert(bs_set_range(bs, word_bits * 6 - 2, word_bits * 6 - 2));
|
||||
cmc_assert(((cmc_bitset_word)1 << (word_bits - 2)) ==
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, ((cmc_bitset_word)1 << (word_bits - 2)),
|
||||
bs->buffer[bs_bit_to_index(word_bits * 6 - 2)]);
|
||||
|
||||
// Make sure we have at leats word_bits * 40 slots
|
||||
// Make sure we have at least word_bits * 40 slots
|
||||
bs_set(bs, word_bits * 40);
|
||||
|
||||
cmc_assert(bs_set_range(bs, word_bits * 20, word_bits * 21 - 1));
|
||||
cmc_assert((~(cmc_bitset_word)0) ==
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, (~(cmc_bitset_word)0),
|
||||
bs->buffer[bs_bit_to_index(word_bits * 20)]);
|
||||
|
||||
cmc_assert(0 == bs->buffer[bs_bit_to_index(word_bits * 20 - 1)]);
|
||||
cmc_assert(0 == bs->buffer[bs_bit_to_index(word_bits * 21 + 1)]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[bs_bit_to_index(word_bits * 20 - 1)]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[bs_bit_to_index(word_bits * 21 + 1)]);
|
||||
|
||||
cmc_assert(bs_set_range(bs, 0, word_bits * 100 - 1));
|
||||
cmc_assert_equals(size_t, 100, bs->capacity);
|
||||
|
||||
for (size_t i = 0; i < bs->capacity; i++)
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, ~((cmc_bitset_word)0), bs->buffer[i]);
|
||||
|
||||
bs_free(bs);
|
||||
});
|
||||
@@ -186,16 +196,16 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
struct bitset *bs = bs_new(word_bits * 10 - 1);
|
||||
|
||||
cmc_assert_not_equals(ptr, NULL, bs);
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
bs->buffer[0] = 1; // 0001
|
||||
cmc_assert(bs_clear(bs, 0));
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
bs->buffer[0] = 10; // 1010
|
||||
cmc_assert(bs_clear(bs, 1));
|
||||
cmc_assert(bs_clear(bs, 3));
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
cmc_assert(bs_clear(bs, word_bits * 100 - 1));
|
||||
cmc_assert_equals(size_t, 100, bs->capacity);
|
||||
@@ -207,9 +217,9 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
struct bitset *bs = bs_new(word_bits * 10 - 1);
|
||||
|
||||
cmc_assert_not_equals(ptr, NULL, bs);
|
||||
cmc_assert(0 == bs->buffer[0]);
|
||||
cmc_assert_equals(CMC_BITSET_WORD_TYPE, 0, bs->buffer[0]);
|
||||
|
||||
cmc_assert(bs_clear(bs, word_bits * 100 - 1));
|
||||
cmc_assert(bs_clear_range(bs, 0, word_bits * 100 - 1));
|
||||
cmc_assert_equals(size_t, 100, bs->capacity);
|
||||
|
||||
cmc_assert(bs_set_range(bs, word_bits * 20, word_bits * 21 - 1));
|
||||
@@ -218,6 +228,16 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
cmc_assert_equals(uint32_t, 0,
|
||||
bs->buffer[bs_bit_to_index(word_bits * 20)]);
|
||||
|
||||
for (size_t i = 0; i < bs->capacity; i++)
|
||||
bs->buffer[i] = ~((cmc_bitset_word)0);
|
||||
|
||||
cmc_assert(bs_clear_range(bs, 0, word_bits * 200 - 1));
|
||||
|
||||
cmc_assert_equals(size_t, 200, bs->capacity);
|
||||
|
||||
for (size_t i = 0; i < bs->capacity; i++)
|
||||
cmc_assert_equals(size_t, 0, bs->buffer[0]);
|
||||
|
||||
bs_free(bs);
|
||||
});
|
||||
|
||||
@@ -243,6 +263,13 @@ CMC_CREATE_UNIT(BitSet, true, {
|
||||
});
|
||||
|
||||
CMC_CREATE_UNIT(BitSetIter, true, {
|
||||
const size_t word_bytes = sizeof(cmc_bitset_word);
|
||||
const size_t word_bits = sizeof(cmc_bitset_word) * CHAR_BIT;
|
||||
|
||||
printf("%s", cmc_test_color(5));
|
||||
printf(" BitSet<"CMC_TO_STRING(CMC_BITSET_WORD_TYPE)">\n");
|
||||
printf("%s", cmc_test_color(0));
|
||||
|
||||
CMC_CREATE_TEST(PFX##_iter_start(), {
|
||||
struct bitset *bs = bs_new(64);
|
||||
|
||||
@@ -251,3 +278,18 @@ CMC_CREATE_UNIT(BitSetIter, true, {
|
||||
bs_free(bs);
|
||||
});
|
||||
});
|
||||
|
||||
#ifdef CMC_TEST_MAIN
|
||||
int main(void)
|
||||
{
|
||||
int result = BitSet() + BitSetIter();
|
||||
|
||||
printf(" +---------------------------------------------------------------+");
|
||||
printf("\n");
|
||||
printf(" | BitSet Suit : %-47s |\n", result == 0 ? "PASSED" : "FAILED");
|
||||
printf(" +---------------------------------------------------------------+");
|
||||
printf("\n\n\n");
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
Reference in new issue
Block a user