* Complete tests on iterators to be more exhaustive.
* Add tests on _it_from/_it_until_p/_it_while_p.
This commit is contained in:
1 parent
f307762801
commit
983d90b731
1 file changed
+160
-4
+160
-4
@@ -71,27 +71,77 @@ static void test_uint(void)
|
|||||||
rbtree_uint_init_set(tree2, tree);
|
rbtree_uint_init_set(tree2, tree);
|
||||||
assert (rbtree_uint_empty_p(tree2));
|
assert (rbtree_uint_empty_p(tree2));
|
||||||
|
|
||||||
|
int k = 0;
|
||||||
|
assert(rbtree_uint_size(tree) == 0);
|
||||||
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
|
assert(item != NULL);
|
||||||
|
assert (false);
|
||||||
|
k ++;
|
||||||
|
}
|
||||||
|
assert(k == 0);
|
||||||
|
|
||||||
rbtree_uint_push(tree, 10);
|
rbtree_uint_push(tree, 10);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
assert(rbtree_uint_size(tree) == 1);
|
||||||
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
|
assert (*item == 10);
|
||||||
|
k ++;
|
||||||
|
}
|
||||||
|
assert(k == 1);
|
||||||
|
|
||||||
rbtree_uint_push(tree, 5);
|
rbtree_uint_push(tree, 5);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
assert(rbtree_uint_size(tree) == 2);
|
||||||
|
const unsigned int tab2[] = {5, 10};
|
||||||
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
|
assert (*item == tab2[k] );
|
||||||
|
k ++;
|
||||||
|
}
|
||||||
|
assert(k == 2);
|
||||||
|
|
||||||
rbtree_uint_push(tree, 17);
|
rbtree_uint_push(tree, 17);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
assert(rbtree_uint_size(tree) == 3);
|
||||||
|
const unsigned int tab3[] = {5, 10, 17};
|
||||||
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
|
assert (*item == tab3[k] );
|
||||||
|
k ++;
|
||||||
|
}
|
||||||
|
assert(k == 3);
|
||||||
|
|
||||||
rbtree_uint_push(tree, 3);
|
rbtree_uint_push(tree, 3);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
assert(rbtree_uint_size(tree) == 4);
|
||||||
|
const unsigned int tab4[] = {3, 5, 10, 17};
|
||||||
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
|
assert (*item == tab4[k] );
|
||||||
|
k ++;
|
||||||
|
}
|
||||||
|
assert(k == 4);
|
||||||
|
|
||||||
rbtree_uint_push(tree, 11);
|
rbtree_uint_push(tree, 11);
|
||||||
|
|
||||||
assert(rbtree_uint_size(tree) == 5);
|
assert(rbtree_uint_size(tree) == 5);
|
||||||
assert(rbtree_uint_empty_p(tree) == false);
|
assert(rbtree_uint_empty_p(tree) == false);
|
||||||
const unsigned int tab[] = {3, 5, 10, 11, 17};
|
const unsigned int tab5[] = {3, 5, 10, 11, 17};
|
||||||
int k = 0;
|
k = 0;
|
||||||
for M_EACH(item, tree, UINT_OPLIST) {
|
for M_EACH(item, tree, UINT_OPLIST) {
|
||||||
assert (tab[k] == *item);
|
assert (tab5[k] == *item);
|
||||||
k ++;
|
k ++;
|
||||||
}
|
}
|
||||||
assert (k == 5);
|
assert (k == 5);
|
||||||
|
|
||||||
rbtree_uint_it_t it, it2;
|
rbtree_uint_it_t it, it2;
|
||||||
rbtree_uint_it(it2, tree);
|
rbtree_uint_it(it2, tree);
|
||||||
for (rbtree_uint_it_last(it, tree) ; !rbtree_uint_end_p(it) ; rbtree_uint_previous(it)) {
|
for (rbtree_uint_it_last(it, tree) ; !rbtree_uint_end_p(it) ; rbtree_uint_previous(it)) {
|
||||||
k--;
|
k--;
|
||||||
rbtree_uint_it_set(it2, it);
|
rbtree_uint_it_set(it2, it);
|
||||||
assert(rbtree_uint_it_equal_p(it2, it));
|
assert(rbtree_uint_it_equal_p(it2, it));
|
||||||
assert (tab[k] == *rbtree_uint_cref(it2) );
|
assert (tab5[k] == *rbtree_uint_cref(it2) );
|
||||||
}
|
}
|
||||||
rbtree_uint_it_end(it, tree);
|
rbtree_uint_it_end(it, tree);
|
||||||
assert (rbtree_uint_end_p(it));
|
assert (rbtree_uint_end_p(it));
|
||||||
@@ -276,6 +326,111 @@ static void test_double(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void test_from(void)
|
||||||
|
{
|
||||||
|
rbtree_uint_t tree;
|
||||||
|
rbtree_uint_it_t it;
|
||||||
|
|
||||||
|
rbtree_uint_init(tree);
|
||||||
|
|
||||||
|
// No element.
|
||||||
|
rbtree_uint_it_from(it, tree, 3);
|
||||||
|
assert(rbtree_uint_end_p(it));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 3));
|
||||||
|
assert(!rbtree_uint_it_while_p(it, 3));
|
||||||
|
|
||||||
|
// One element
|
||||||
|
rbtree_uint_push(tree, 3);
|
||||||
|
rbtree_uint_it_from(it, tree, 3);
|
||||||
|
assert(!rbtree_uint_end_p(it));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 3));
|
||||||
|
assert(rbtree_uint_it_while_p(it, 3));
|
||||||
|
assert(!rbtree_uint_it_until_p(it, 4));
|
||||||
|
assert(rbtree_uint_it_while_p(it, 4));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 2));
|
||||||
|
assert(!rbtree_uint_it_while_p(it, 2));
|
||||||
|
|
||||||
|
rbtree_uint_it_from(it, tree, 2);
|
||||||
|
assert(rbtree_uint_end_p(it));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 3));
|
||||||
|
assert(!rbtree_uint_it_while_p(it, 3));
|
||||||
|
|
||||||
|
rbtree_uint_it_from(it, tree, 4);
|
||||||
|
assert(!rbtree_uint_end_p(it));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 3));
|
||||||
|
assert(rbtree_uint_it_while_p(it, 3));
|
||||||
|
assert(!rbtree_uint_it_until_p(it, 4));
|
||||||
|
assert(rbtree_uint_it_while_p(it, 4));
|
||||||
|
assert(rbtree_uint_it_until_p(it, 2));
|
||||||
|
assert(!rbtree_uint_it_while_p(it, 2));
|
||||||
|
|
||||||
|
// More elements
|
||||||
|
rbtree_uint_push(tree, 10);
|
||||||
|
rbtree_uint_push(tree, 5);
|
||||||
|
rbtree_uint_push(tree, 1);
|
||||||
|
rbtree_uint_push(tree, 7);
|
||||||
|
|
||||||
|
int k = 0;
|
||||||
|
const unsigned int tab0[] = { 3, 5, 7};
|
||||||
|
for( rbtree_uint_it_from(it, tree, 3); !rbtree_uint_it_until_p(it, 8); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 3);
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 3); !rbtree_uint_it_until_p(it, 7); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 2);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 3); rbtree_uint_it_while_p(it, 8); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 3);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 3); rbtree_uint_it_while_p(it, 7); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 3);
|
||||||
|
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 3); rbtree_uint_it_while_p(it, 6); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 2);
|
||||||
|
|
||||||
|
// No element is lower or equal than 0 ==> The set is empty
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 0); rbtree_uint_it_while_p(it, 6); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 0);
|
||||||
|
|
||||||
|
// The iteration starts from 3 which is lower or equal than 4.
|
||||||
|
k = 0;
|
||||||
|
for( rbtree_uint_it_from(it, tree, 4); rbtree_uint_it_while_p(it, 7); rbtree_uint_next(it)) {
|
||||||
|
assert (k < 3);
|
||||||
|
assert(tab0[k] == *rbtree_uint_cref(it));
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
assert(k == 3);
|
||||||
|
|
||||||
|
rbtree_uint_clear(tree);
|
||||||
|
}
|
||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
test_uint();
|
test_uint();
|
||||||
@@ -283,5 +438,6 @@ int main(void)
|
|||||||
test_float();
|
test_float();
|
||||||
test_io();
|
test_io();
|
||||||
test_double();
|
test_double();
|
||||||
|
test_from();
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user