- introduce bitset
- add hash_block()
This commit is contained in:
parent
2cf636e607
commit
48ea4a0205
8 changed files with 607 additions and 6 deletions
213
src/lib/testsuite/test_bitset.c
Normal file
213
src/lib/testsuite/test_bitset.c
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
#include <rtti.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unity/unity.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue