Add test for multiset
This commit is contained in:
1 parent
791f586c7e
commit
9f82649aa8
1 file changed
+37
@@ -39,6 +39,7 @@ BPTREE_DEF(btree_intset, 13, int)
|
|||||||
BPTREE_DEF(btree_myset, 15, testobj_t, TESTOBJ_CMP_OPLIST)
|
BPTREE_DEF(btree_myset, 15, testobj_t, TESTOBJ_CMP_OPLIST)
|
||||||
|
|
||||||
BPTREE_MULTI_DEF2(multimap, 3, int, M_DEFAULT_OPLIST, int, M_DEFAULT_OPLIST)
|
BPTREE_MULTI_DEF2(multimap, 3, int, M_DEFAULT_OPLIST, int, M_DEFAULT_OPLIST)
|
||||||
|
BPTREE_MULTI_DEF(multiset, 6, int, M_DEFAULT_OPLIST)
|
||||||
|
|
||||||
static void test1(void)
|
static void test1(void)
|
||||||
{
|
{
|
||||||
@@ -560,6 +561,41 @@ test_multimap(void)
|
|||||||
multimap_clear(b);
|
multimap_clear(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
test_multiset(void)
|
||||||
|
{
|
||||||
|
multiset_t b;
|
||||||
|
multiset_init(b);
|
||||||
|
|
||||||
|
for (int size = 20; size < 1000; size += 10) {
|
||||||
|
for(int i = 0; i < size; i++) {
|
||||||
|
multiset_push(b, i/4);
|
||||||
|
}
|
||||||
|
assert(multiset_size(b) == (unsigned) size);
|
||||||
|
|
||||||
|
for (int k = 0 ; k < size/4; k++) {
|
||||||
|
int j = 0;
|
||||||
|
multiset_it_t it;
|
||||||
|
for(multiset_it_from(it, b, k);
|
||||||
|
multiset_it_while_p(it, k);
|
||||||
|
multiset_next(it)) {
|
||||||
|
const multiset_type_t *ref = multiset_cref(it);
|
||||||
|
assert(*ref == k);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
assert(j == 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < size; i++) {
|
||||||
|
bool r = multiset_erase(b, i/4);
|
||||||
|
assert (r == true);
|
||||||
|
}
|
||||||
|
assert(multiset_size(b) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
multiset_clear(b);
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test1();
|
test1();
|
||||||
@@ -571,5 +607,6 @@ int main(void)
|
|||||||
test_io();
|
test_io();
|
||||||
test_io_set();
|
test_io_set();
|
||||||
test_multimap();
|
test_multimap();
|
||||||
|
test_multiset();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user