void test__rb_tree_iterator_before__not_same_rb_tree(void** state)
{
    _rb_tree_t* pt_first = _create_rb_tree("int");
    _rb_tree_t* pt_second = _create_rb_tree("int");
    _rb_tree_iterator_t it_first;
    _rb_tree_iterator_t it_second;

    _rb_tree_init(pt_first, NULL);
    _rb_tree_init(pt_second, NULL);
    it_first = _rb_tree_begin(pt_first);
    it_second = _rb_tree_begin(pt_second);
    expect_assert_failure(_rb_tree_iterator_before(it_first, it_second));

    _rb_tree_destroy(pt_first);
    _rb_tree_destroy(pt_second);
}
Example #2
0
/* multimap private function */
multimap_t _create_multimap(
    size_t t_keytypesize, const char* s_keytypename,
    size_t t_valuetypesize, const char* s_valuetypename)
{
    multimap_t t_newmultimap;
    char       ac_multimaptypename[_ELEM_TYPE_NAME_SIZE+1];

    assert(t_keytypesize > 0 && t_valuetypesize > 0);
    assert(s_keytypename != NULL && s_valuetypename != NULL);

    /* create pair */
    t_newmultimap._t_pair = _create_pair(
        t_keytypesize, s_keytypename, t_valuetypesize, s_valuetypename);
    /* create tree */
    memset(ac_multimaptypename, '\0', _ELEM_TYPE_NAME_SIZE+1);
    strncpy(ac_multimaptypename, _MULTIMAP_IDENTIFY, _ELEM_TYPE_NAME_SIZE);
    strcat(ac_multimaptypename, _MULTIMAP_LEFT_BRACKET);
    strcat(ac_multimaptypename, t_newmultimap._t_pair._sz_firsttypename);
    strcat(ac_multimaptypename, _MULTIMAP_COMMA);
    strcat(ac_multimaptypename, t_newmultimap._t_pair._sz_secondtypename);
    strcat(ac_multimaptypename, _MULTIMAP_RIGHT_BRACKET);

#ifdef CSTL_MULTIMAP_AVL_TREE
    *_GET_MULTIMAP_AVL_TREE(&t_newmultimap) = 
        _create_avl_tree(sizeof(pair_t), ac_multimaptypename);
#else
    *_GET_MULTIMAP_RB_TREE(&t_newmultimap) = 
        _create_rb_tree(sizeof(pair_t), ac_multimaptypename);
#endif

    return t_newmultimap;
}
Example #3
0
/**
 * Create set container.
 */
set_t* _create_set(const char* s_typename)
{
#ifdef CSTL_SET_AVL_TREE
    return (set_t*)_create_avl_tree(s_typename);
#else
    return (set_t*)_create_rb_tree(s_typename);
#endif
}
void test__rb_tree_destroy_auxiliary__non_created(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");

    pt_rb_tree->_t_rbroot._t_color = _COLOR_BLACK;
    expect_assert_failure(_rb_tree_destroy_auxiliary(pt_rb_tree));
    pt_rb_tree->_t_rbroot._t_color = _COLOR_RED;

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_next__end(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    _rb_tree_init(pt_rb_tree, NULL);

    it_iter = _rb_tree_end(pt_rb_tree);

    expect_assert_failure(_rb_tree_iterator_next(it_iter));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_value__null_value(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    _rb_tree_init(pt_rb_tree, NULL);

    it_iter = _rb_tree_end(pt_rb_tree);

    expect_assert_failure(_rb_tree_iterator_get_value(it_iter, NULL));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_pointer__c_builtin(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    int elem = 12;
    _rb_tree_init(pt_rb_tree, NULL);
    _rb_tree_insert_unique(pt_rb_tree, &elem);

    it_iter = _rb_tree_begin(pt_rb_tree);
    assert_true(*(int*)_rb_tree_iterator_get_pointer(it_iter) == 12);

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_prev__null_tree(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    _rb_tree_init(pt_rb_tree, NULL);

    it_iter = _rb_tree_begin(pt_rb_tree);

    it_iter._t_pos._t_treepos._pt_tree = NULL;
    expect_assert_failure(_rb_tree_iterator_prev(it_iter));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_destroy_auxiliary__empty(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_init(pt_rb_tree, NULL);

    _rb_tree_destroy_auxiliary(pt_rb_tree);
    assert_true(pt_rb_tree->_t_rbroot._pt_parent == NULL);
    assert_true(pt_rb_tree->_t_rbroot._pt_left == &pt_rb_tree->_t_rbroot);
    assert_true(pt_rb_tree->_t_rbroot._pt_right == &pt_rb_tree->_t_rbroot);
    assert_true(pt_rb_tree->_t_nodecount == 0);
    assert_true(pt_rb_tree->_t_compare == NULL);
    free(pt_rb_tree);
}
void test__rb_tree_iterator_prev__begin(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    int elem = 100;
    _rb_tree_init(pt_rb_tree, NULL);
    _rb_tree_insert_unique(pt_rb_tree, &elem);

    it_iter = _rb_tree_begin(pt_rb_tree);

    expect_assert_failure(_rb_tree_iterator_prev(it_iter));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_before__invalid_second(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_first;
    _rb_tree_iterator_t it_second;

    _rb_tree_init(pt_rb_tree, NULL);
    it_first = _rb_tree_begin(pt_rb_tree);
    it_second = _rb_tree_begin(pt_rb_tree);
    it_second._t_pos._t_treepos._pby_corepos = NULL;
    expect_assert_failure(_rb_tree_iterator_before(it_first, it_second));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_pointer__cstr(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("char*");
    _rb_tree_iterator_t it_iter;
    string_t* pstr = create_string();
    string_init_cstr(pstr, "abc");
    _rb_tree_init(pt_rb_tree, NULL);
    _rb_tree_insert_unique(pt_rb_tree, pstr);

    it_iter = _rb_tree_begin(pt_rb_tree);
    assert_true(strcmp((char*)_rb_tree_iterator_get_pointer(it_iter), "abc") == 0);

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_pointer__libcstl_builtin(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("vector_t<int>");
    _rb_tree_iterator_t it_iter;
    vector_t* pvec = create_vector(int);
    _rb_tree_init(pt_rb_tree, NULL);
    vector_init_n(pvec, 10);
    _rb_tree_insert_unique(pt_rb_tree, pvec);

    it_iter = _rb_tree_begin(pt_rb_tree);
    assert_true(vector_size((vector_t*)_rb_tree_iterator_get_pointer(it_iter)) == 10);

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_value__null_tree(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    int elem = 0;
    _rb_tree_init(pt_rb_tree, NULL);

    it_iter = _rb_tree_begin(pt_rb_tree);

    it_iter._t_pos._t_treepos._pt_tree = NULL;
    expect_assert_failure(_rb_tree_iterator_get_value(it_iter, &elem));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_before__equal(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_first;
    _rb_tree_iterator_t it_second;
    int elem = 100;

    _rb_tree_init(pt_rb_tree, NULL);
    _rb_tree_insert_unique(pt_rb_tree, &elem);
    it_first = _rb_tree_begin(pt_rb_tree);
    it_second = _rb_tree_begin(pt_rb_tree);
    assert_false(_rb_tree_iterator_before(it_first, it_second));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_distance__0(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_first;
    _rb_tree_iterator_t it_second;
    int elem = 100;

    _rb_tree_init(pt_rb_tree, NULL);
    _rb_tree_insert_unique(pt_rb_tree, &elem);
    it_first = _rb_tree_begin(pt_rb_tree);
    it_second = _rb_tree_begin(pt_rb_tree);
    assert_true(_rb_tree_iterator_distance(it_first, it_second) == 0);

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_prev__end(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    int elem = 10;
    _rb_tree_init(pt_rb_tree, NULL);

    _rb_tree_insert_unique(pt_rb_tree, &elem);
    it_iter = _rb_tree_end(pt_rb_tree);

    it_iter = _rb_tree_iterator_prev(it_iter);
    assert_true(_rb_tree_iterator_equal(it_iter, _rb_tree_begin(pt_rb_tree)));

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_prev__last(void** state)
{
    _rb_tree_t* pt_rb_tree = _create_rb_tree("int");
    _rb_tree_iterator_t it_iter;
    int elem = 10;
    _rb_tree_init(pt_rb_tree, NULL);

    _rb_tree_insert_unique(pt_rb_tree, &elem);
    elem = 3;
    _rb_tree_insert_unique(pt_rb_tree, &elem);
    it_iter = _rb_tree_iterator_prev(_rb_tree_end(pt_rb_tree));
    assert_true(*(int*)_rb_tree_iterator_get_pointer(it_iter) == 10);
    it_iter = _rb_tree_iterator_prev(it_iter);
    assert_true(*(int*)_rb_tree_iterator_get_pointer(it_iter) == 3);

    _rb_tree_destroy(pt_rb_tree);
}
void test__rb_tree_iterator_get_pointer__user_define(void** state)
{
    _rb_tree_t* pt_rb_tree = NULL;
    _rb_tree_iterator_t it_iter;
    _test__rb_tree_iterator_get_pointer__user_define_t elem;

    type_register(_test__rb_tree_iterator_get_pointer__user_define_t, NULL, NULL, NULL, NULL);
    pt_rb_tree = _create_rb_tree("_test__rb_tree_iterator_get_pointer__user_define_t");
    _rb_tree_init(pt_rb_tree, NULL);
    elem.elem = 100;
    _rb_tree_insert_unique(pt_rb_tree, &elem);

    it_iter = _rb_tree_begin(pt_rb_tree);
    assert_true(((_test__rb_tree_iterator_get_pointer__user_define_t*)_rb_tree_iterator_get_pointer(it_iter))->elem == 100);

    _rb_tree_destroy(pt_rb_tree);
}