#include #include #include #include #include "bitset.h" static void test_bitset_create(void) { var bitset = makeInstance(&bitset_type, 1); TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); destroy(bitset); } static void test_bitset_set(void) { var bitset = makeInstance(&bitset_type, 1); int bits[] = { 1, 3, 5, 7, 11, 19, 23 }; int i; TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { int rc; rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); rc = bit_set(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc > 0); } destroy(bitset); } static void test_bitset_clr(void) { var bitset = makeInstance(&bitset_type, 1); int bits[] = { 1, 3, 5, 7, 11, 19, 23 }; int i; TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { int rc; rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); rc = bit_set(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc > 0); rc = bit_clr(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); } destroy(bitset); } static void test_bitset_clrall(void) { var bitset = makeInstance(&bitset_type, 1); int bits[] = { 1, 3, 5, 7, 11, 19, 23 }; int i; int rc; TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); rc = bit_set(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc > 0); } rc = bit_clrall(bitset); TEST_ASSERT_TRUE(rc >= 0); for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); } destroy(bitset); } static void test_bitset_iter_over1(void) { var bitset = makeInstance(&bitset_type, 1); int bits[] = { 0, 1, 3, 5, 7, 11, 19, 23, 64, 128, 139 }; int i; int rc; iterator_t it; void* data; TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); rc = bit_set(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc > 0); } rc = iter_make(&it, bitset, BITSET_ITER_OVER_1); TEST_ASSERT_TRUE(rc >= 0); i = 0; for (;;) { rc = iter_next(&it, &data); TEST_ASSERT_TRUE(rc >= 0); if (rc == RTTI_ITER_NO_DATA) { break; } TEST_ASSERT_TRUE((int)((long)data) == bits[i]); i++; } TEST_ASSERT_TRUE(i == sizeof(bits) / sizeof(bits[0])); iter_destroy(&it); destroy(bitset); } static void test_bitset_iter_over0(void) { var bitset = makeInstance(&bitset_type, 1); int bits[] = { 0, 1, 3, 5, 7, 11, 19, 23, 64, 128, 139 }; int i; int rc; iterator_t it; void* data; TEST_ASSERT_TRUE(bitset != NULL); TEST_ASSERT_TRUE(is_rtti_obj(bitset)); /* set all bits to 1 */ for(i =0; i < 4096*8 ; i ++) { rc = bit_set(bitset, (unsigned long)i); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)i); TEST_ASSERT_TRUE(rc > 0); } for (i = 0; i < sizeof(bits) / sizeof(bits[0]); i++) { rc = bit_clr(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc >= 0); rc = bit_test(bitset, (unsigned long)bits[i]); TEST_ASSERT_TRUE(rc == 0); } rc = iter_make(&it, bitset, BITSET_ITER_OVER_0); TEST_ASSERT_TRUE(rc >= 0); i = 0; for (;;) { rc = iter_next(&it, &data); TEST_ASSERT_TRUE(rc >= 0); if (rc == RTTI_ITER_NO_DATA) { break; } TEST_ASSERT_TRUE((int)((long)data) == bits[i]); i++; } TEST_ASSERT_TRUE(i == sizeof(bits) / sizeof(bits[0])); iter_destroy(&it); destroy(bitset); } void test_bitset(void) { printf("\n>> bitset test\n\n"); RUN_TEST(test_bitset_create); RUN_TEST(test_bitset_set); RUN_TEST(test_bitset_clr); RUN_TEST(test_bitset_clrall); RUN_TEST(test_bitset_iter_over1); RUN_TEST(test_bitset_iter_over0); }