diff --git a/cstl/cstl_alloc.h b/cstl/cstl_alloc.h index df1b7cc6..67ec8d27 100644 --- a/cstl/cstl_alloc.h +++ b/cstl/cstl_alloc.h @@ -64,6 +64,7 @@ typedef struct _tagalloc typedef struct _tagalloc { + int n_avoid_vc_error_c2016; }_alloc_t; #endif /* CSTL_MEMORY_MANAGEMENT */ diff --git a/src/cstl_types.c b/src/cstl_types.c index 8e425051..c27d91dc 100644 --- a/src/cstl_types.c +++ b/src/cstl_types.c @@ -104,7 +104,7 @@ #ifdef CSTL_MEMORY_MANAGEMENT static _typeregister_t _gt_typeregister = {false, {NULL}, {{NULL}, NULL, NULL, 0, 0, 0}}; #else -static _typeregister_t _gt_typeregister = {false, {NULL}, {}}; +static _typeregister_t _gt_typeregister = {false, {NULL}, {0}}; #endif /** local data type declaration and local struct, union, enum section **/ diff --git a/test/ut/ut_cstl_map.c b/test/ut/ut_cstl_map.c index cbb2d2f2..38a5d79a 100644 --- a/test/ut/ut_cstl_map.c +++ b/test/ut/ut_cstl_map.c @@ -31,9 +31,15 @@ void test_map_init__non_created(void** state) { map_t* pt_map = create_map(int, int); +#ifdef CSTL_MAP_AVL_TREE + pt_map->_t_tree._t_avltree._un_height = 5; + expect_assert_failure(map_init(pt_map)); + pt_map->_t_tree._t_avltree._un_height = 0; +#else pt_map->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(map_init(pt_map)); pt_map->_t_tree._t_rbroot._t_color = RED; +#endif map_destroy(pt_map); } diff --git a/test/ut/ut_cstl_multiset.c b/test/ut/ut_cstl_multiset.c index d083c858..586c3bfa 100644 --- a/test/ut/ut_cstl_multiset.c +++ b/test/ut/ut_cstl_multiset.c @@ -11,6 +11,7 @@ #include "cstl/clist.h" #include "cstl_vector_aux.h" #include "cstl_rb_tree_aux.h" +#include "cstl_avl_tree_aux.h" #include "cstl_set_aux.h" #include "ut_def.h" @@ -31,9 +32,15 @@ void test_multiset_init__non_created(void** state) { multiset_t* pt_multiset = create_multiset(int); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -43,7 +50,11 @@ void test_multiset_init__null_compare(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_multiset->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_multiset->_t_tree)); +#endif multiset_destroy(pt_multiset); } @@ -61,9 +72,15 @@ void test_multiset_init_ex__non_created(void** state) { multiset_t* pt_multiset = create_multiset(int); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init_ex(pt_multiset, NULL)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init_ex(pt_multiset, NULL)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -73,7 +90,11 @@ void test_multiset_init_ex__null_compare(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_multiset->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_multiset->_t_tree)); +#endif multiset_destroy(pt_multiset); } @@ -87,7 +108,12 @@ void test_multiset_init_ex__non_null_compare(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, _test_multiset_init_ex__non_null_compare); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_multiset->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_multiset->_t_tree)); +#endif assert_true(pt_multiset->_t_tree._t_compare == _test_multiset_init_ex__non_null_compare); multiset_destroy(pt_multiset); @@ -122,9 +148,16 @@ void test_multiset_init_copy__non_created_dest(void** state) multiset_t* pt_src = create_multiset(int); multiset_init_ex(pt_src, NULL); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init_copy(pt_dest, pt_src)); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init_copy(pt_dest, pt_src)); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); multiset_destroy(pt_src); @@ -136,9 +169,16 @@ void test_multiset_init_copy__non_inited_src(void** state) multiset_t* pt_src = create_multiset(int); multiset_init_ex(pt_src, NULL); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_src->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init_copy(pt_dest, pt_src)); + pt_src->_t_tree._t_avlroot._un_height = 0; +#else pt_src->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init_copy(pt_dest, pt_src)); pt_src->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); multiset_destroy(pt_src); @@ -163,7 +203,12 @@ void test_multiset_init_copy__empty(void** state) multiset_init_ex(pt_src, NULL); multiset_init_copy(pt_dest, pt_src); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_empty(pt_dest)); multiset_destroy(pt_dest); @@ -179,7 +224,12 @@ void test_multiset_init_copy__non_empty(void** state) multiset_init_ex(pt_src, NULL); multiset_insert(pt_src, elem); multiset_init_copy(pt_dest, pt_src); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_size(pt_dest) == 1); multiset_destroy(pt_dest); @@ -202,7 +252,12 @@ void test_multiset_init_copy__non_null_compare(void** state) multiset_insert(pt_src, i); } multiset_init_copy(pt_dest, pt_src); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_size(pt_dest) == 10); assert_true(pt_dest->_t_tree._t_compare == _test_multiset_init_copy__non_null_compare); @@ -230,9 +285,15 @@ void test_multiset_init_copy_range__non_created_multiset(void** state) multiset_t* pt_dest = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init_copy_range(pt_dest, multiset_begin(pt_multiset), multiset_end(pt_multiset))); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init_copy_range(pt_dest, multiset_begin(pt_multiset), multiset_end(pt_multiset))); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); multiset_destroy(pt_dest); @@ -317,7 +378,12 @@ void test_multiset_init_copy_range__empty(void** state) it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); multiset_init_copy_range(pt_dest, it_begin, it_end); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_empty(pt_dest)); multiset_destroy(pt_dest); @@ -337,7 +403,12 @@ void test_multiset_init_copy_range__non_empty(void** state) it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); multiset_init_copy_range(pt_dest, it_begin, it_end); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_size(pt_dest) == 1); assert_true(multiset_equal(pt_dest, pt_src)); @@ -365,9 +436,15 @@ void test_multiset_init_copy_range_ex__non_created_multiset(void** state) multiset_t* pt_dest = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_init_copy_range_ex(pt_dest, multiset_begin(pt_multiset), multiset_end(pt_multiset), NULL)); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_init_copy_range_ex(pt_dest, multiset_begin(pt_multiset), multiset_end(pt_multiset), NULL)); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); multiset_destroy(pt_dest); @@ -452,7 +529,11 @@ void test_multiset_init_copy_range_ex__empty(void** state) it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); multiset_init_copy_range_ex(pt_dest, it_begin, it_end, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_empty(pt_dest)); multiset_destroy(pt_dest); @@ -472,7 +553,11 @@ void test_multiset_init_copy_range_ex__non_empty(void** state) it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); multiset_init_copy_range_ex(pt_dest, it_begin, it_end, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_size(pt_dest) == 1); assert_true(multiset_equal(pt_dest, pt_src)); @@ -497,7 +582,12 @@ void test_multiset_init_copy_range_ex__compare(void** state) it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); multiset_init_copy_range_ex(pt_dest, it_begin, it_end, _test__multiset_init_compare_range_ex__compare); + +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(_avl_tree_is_inited(&pt_dest->_t_tree)); +#else assert_true(_rb_tree_is_inited(&pt_dest->_t_tree)); +#endif assert_true(multiset_size(pt_dest) == 1); assert_true(pt_dest->_t_tree._t_compare == _test__multiset_init_compare_range_ex__compare); @@ -518,9 +608,15 @@ void test_multiset_destroy__non_created(void** state) { multiset_t* pt_multiset = create_multiset(int); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_destroy(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_destroy(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -570,9 +666,16 @@ void test_multiset_assign__non_created_dest(void** state) multiset_t* pt_src = create_multiset(int); multiset_init_ex(pt_src, NULL); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_assign(pt_dest, pt_src)); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_assign(pt_dest, pt_src)); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); multiset_destroy(pt_src); @@ -585,9 +688,16 @@ void test_multiset_assign__non_init_src(void** state) multiset_init_ex(pt_src, NULL); multiset_init_ex(pt_dest, NULL); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_src->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_assign(pt_dest, pt_src)); + pt_src->_t_tree._t_avlroot._un_height = 0; +#else pt_src->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_assign(pt_dest, pt_src)); pt_src->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); multiset_destroy(pt_src); @@ -747,9 +857,15 @@ void test_multiset_size__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_size(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_size(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -791,9 +907,15 @@ void test_multiset_empty__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_empty(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_empty(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -835,9 +957,15 @@ void test_multiset_max_size__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_max_size(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_max_size(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -879,9 +1007,15 @@ void test_multiset_begin__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_begin(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_begin(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -923,9 +1057,15 @@ void test_multiset_end__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_end(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_end(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -970,9 +1110,15 @@ void test_multiset_key_comp__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_key_comp(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_key_comp(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1016,9 +1162,15 @@ void test_multiset_clear__non_inited(void** state) multiset_t* pt_multiset = create_multiset(int); multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_clear(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_clear(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1081,9 +1233,15 @@ void test_multiset_equal__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_equal(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_equal(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1097,9 +1255,15 @@ void test_multiset_equal__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 8; + expect_assert_failure(multiset_equal(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_equal(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1317,9 +1481,15 @@ void test_multiset_not_equal__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_not_equal(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_not_equal(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1333,9 +1503,15 @@ void test_multiset_not_equal__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_not_equal(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_not_equal(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1553,9 +1729,15 @@ void test_multiset_less__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_less(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_less(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1569,9 +1751,15 @@ void test_multiset_less__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_less(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_less(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1789,9 +1977,15 @@ void test_multiset_less_equal__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_less_equal(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_less_equal(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -1805,9 +1999,15 @@ void test_multiset_less_equal__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_less_equal(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_less_equal(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2025,9 +2225,15 @@ void test_multiset_greater__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_greater(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_greater(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2041,9 +2247,15 @@ void test_multiset_greater__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_greater(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_greater(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2261,9 +2473,15 @@ void test_multiset_greater_equal__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 5; + expect_assert_failure(multiset_greater_equal(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_greater_equal(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2277,9 +2495,15 @@ void test_multiset_greater_equal__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_greater_equal(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_greater_equal(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2497,9 +2721,15 @@ void test_multiset_swap__non_inited_first(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_first->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(multiset_swap(pt_first, pt_second)); + pt_first->_t_tree._t_avlroot._un_height = 0; +#else pt_first->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_swap(pt_first, pt_second)); pt_first->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2513,9 +2743,15 @@ void test_multiset_swap__non_inited_second(void** state) multiset_init_ex(pt_first, NULL); multiset_init_ex(pt_second, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_second->_t_tree._t_avlroot._un_height = 8; + expect_assert_failure(multiset_swap(pt_first, pt_second)); + pt_second->_t_tree._t_avlroot._un_height = 0; +#else pt_second->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_swap(pt_first, pt_second)); pt_second->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_first); multiset_destroy(pt_second); @@ -2672,11 +2908,19 @@ void test_multiset_insert_range__non_inited(void** state) multiset_init_ex(pt_dest, NULL); multiset_init_ex(pt_src, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 9; + it_begin = multiset_begin(pt_src); + it_end = multiset_end(pt_src); + expect_assert_failure(multiset_insert_range(pt_dest, it_begin, it_end)); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; it_begin = multiset_begin(pt_src); it_end = multiset_end(pt_src); expect_assert_failure(multiset_insert_range(pt_dest, it_begin, it_end)); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); multiset_destroy(pt_src); @@ -2909,9 +3153,16 @@ void test_multiset_erase_pos__non_inited(void** state) multiset_init_ex(pt_multiset, NULL); multiset_insert(pt_multiset, elem); it_pos = multiset_begin(pt_multiset); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 5; + expect_assert_failure(multiset_erase_pos(pt_multiset, it_pos)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_erase_pos(pt_multiset, it_pos)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -3049,9 +3300,16 @@ void test_multiset_erase_range__non_inited(void** state) it_begin = multiset_begin(pt_dest); it_end = multiset_end(pt_dest); + +#ifdef CSTL_MULTISET_AVL_TREE + pt_dest->_t_tree._t_avlroot._un_height = 5; + expect_assert_failure(multiset_erase_range(pt_dest, it_begin, it_end)); + pt_dest->_t_tree._t_avlroot._un_height = 0; +#else pt_dest->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(multiset_erase_range(pt_dest, it_begin, it_end)); pt_dest->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_dest); } diff --git a/test/ut/ut_cstl_multiset_private.c b/test/ut/ut_cstl_multiset_private.c index 633d1bcc..78a1ac04 100644 --- a/test/ut/ut_cstl_multiset_private.c +++ b/test/ut/ut_cstl_multiset_private.c @@ -153,9 +153,15 @@ void test__multiset_destroy_auxiliary__non_created(void** state) { multiset_t* pt_multiset = _create_multiset("int"); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_destroy_auxiliary(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_destroy_auxiliary(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -165,9 +171,15 @@ void test__multiset_destroy_auxiliary__non_inited(void** state) multiset_t* pt_multiset = _create_multiset("int"); multiset_init(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_destroy_auxiliary(pt_multiset)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_destroy_auxiliary(pt_multiset)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -178,11 +190,19 @@ void test__multiset_destroy_auxiliary__empty(void** state) multiset_init_ex(pt_multiset, NULL); _multiset_destroy_auxiliary(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(pt_multiset->_t_tree._t_avlroot._pt_parent == NULL); + assert_true(pt_multiset->_t_tree._t_avlroot._pt_left == &pt_multiset->_t_tree._t_avlroot); + assert_true(pt_multiset->_t_tree._t_avlroot._pt_right == &pt_multiset->_t_tree._t_avlroot); + assert_true(pt_multiset->_t_tree._t_nodecount == 0); + assert_true(pt_multiset->_t_tree._t_compare == NULL); +#else assert_true(pt_multiset->_t_tree._t_rbroot._pt_parent == NULL); assert_true(pt_multiset->_t_tree._t_rbroot._pt_left == &pt_multiset->_t_tree._t_rbroot); assert_true(pt_multiset->_t_tree._t_rbroot._pt_right == &pt_multiset->_t_tree._t_rbroot); assert_true(pt_multiset->_t_tree._t_nodecount == 0); assert_true(pt_multiset->_t_tree._t_compare == NULL); +#endif free(pt_multiset); } @@ -194,11 +214,19 @@ void test__multiset_destroy_auxiliary__non_empty(void** state) multiset_insert(pt_multiset, elem); _multiset_destroy_auxiliary(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + assert_true(pt_multiset->_t_tree._t_avlroot._pt_parent == NULL); + assert_true(pt_multiset->_t_tree._t_avlroot._pt_left == &pt_multiset->_t_tree._t_avlroot); + assert_true(pt_multiset->_t_tree._t_avlroot._pt_right == &pt_multiset->_t_tree._t_avlroot); + assert_true(pt_multiset->_t_tree._t_nodecount == 0); + assert_true(pt_multiset->_t_tree._t_compare == NULL); +#else assert_true(pt_multiset->_t_tree._t_rbroot._pt_parent == NULL); assert_true(pt_multiset->_t_tree._t_rbroot._pt_left == &pt_multiset->_t_tree._t_rbroot); assert_true(pt_multiset->_t_tree._t_rbroot._pt_right == &pt_multiset->_t_tree._t_rbroot); assert_true(pt_multiset->_t_tree._t_nodecount == 0); assert_true(pt_multiset->_t_tree._t_compare == NULL); +#endif free(pt_multiset); } @@ -216,9 +244,15 @@ void test__multiset_find__multiset_find_varg__non_inited(void** state) multiset_t* pt_multiset = _create_multiset("int"); multiset_init(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_find(pt_multiset, 9)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_find(pt_multiset, 9)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -416,9 +450,15 @@ void test__multiset_count__multiset_count_varg__non_inited(void** state) int elem = 9; multiset_init(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_count(pt_multiset, elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_count(pt_multiset, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -688,9 +728,15 @@ void test__multiset_lower_bound__multiset_lower_bound_varg__non_inited(void** st int elem = 9; multiset_init(pt_multiset); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_lower_bound(pt_multiset, &elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_lower_bound(pt_multiset, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -891,9 +937,15 @@ void test__multiset_upper_bound__multiset_upper_bound_varg__non_inited(void** st int elem = 9; multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_upper_bound(pt_multiset, &elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_upper_bound(pt_multiset, &elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1094,9 +1146,15 @@ void test__multiset_equal_range__multiset_equal_range_varg__non_inited(void** st int elem = 9; multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_equal_range(pt_multiset, elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_equal_range(pt_multiset, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1305,9 +1363,15 @@ void test__multiset_erase__multiset_erase_varg__non_inited(void** state) int elem = 9; multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_erase(pt_multiset, elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_erase(pt_multiset, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1597,9 +1661,15 @@ void test__multiset_insert_varg__non_inited(void** state) int elem = 9; multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 9; + expect_assert_failure(_multiset_insert(pt_multiset, elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_insert(pt_multiset, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -1809,9 +1879,15 @@ void test__multiset_insert_hint_varg__non_inited(void** state) int elem = 9; multiset_init_ex(pt_multiset, NULL); +#ifdef CSTL_MULTISET_AVL_TREE + pt_multiset->_t_tree._t_avlroot._un_height = 4; + expect_assert_failure(_multiset_insert_hint(pt_multiset, it_hint, elem)); + pt_multiset->_t_tree._t_avlroot._un_height = 0; +#else pt_multiset->_t_tree._t_rbroot._t_color = BLACK; expect_assert_failure(_multiset_insert_hint(pt_multiset, it_hint, elem)); pt_multiset->_t_tree._t_rbroot._t_color = RED; +#endif multiset_destroy(pt_multiset); } @@ -2041,7 +2117,11 @@ void test__multiset_init_elem_auxiliary__successfully_cstr(void** state) multiset_insert(pset, "abc"); multiset_insert(pset, "def"); +#ifdef CSTL_MULTISET_AVL_TREE + _multiset_init_elem_auxiliary(pset, pset->_t_tree._t_avlroot._pt_left->_pby_data); +#else _multiset_init_elem_auxiliary(pset, pset->_t_tree._t_rbroot._pt_left->_pby_data); +#endif assert_true(strcmp((char*)iterator_get_pointer(multiset_begin(pset)), "") == 0); multiset_destroy(pset);