static int test_clear(c_pmap thiz) { c_iterator begin, end; c_reverse_iterator rbegin, rend; c_map_clear(thiz); begin = c_map_begin(thiz); end = c_map_end(thiz); rbegin = c_map_rbegin(thiz); rend = c_map_rend(thiz); if(c_map_size(thiz) == 0) printf("ok, size is 0\n"); else printf("error, size is not 0\n"); if(ITER_EQUAL(begin, end)) printf("ok, begin == end\n"); else printf("error, begin != end\n"); if(ITER_EQUAL(rbegin, rend)) printf("ok, rbegin == rend\n"); else printf("error, rbegin != rend\n"); return 0; }
static void assert_valid_iter(c_pmap thiz, c_iterator val) { c_iterator end = c_map_end(thiz); c_iterator iter = c_map_begin(thiz); for(; !ITER_EQUAL(iter, end); ITER_INC(iter)) { if(ITER_EQUAL(iter, val)) return; } assert(false); }
static int create_with_insert_unique1(c_pmap thiz) { c_iterator iter = c_map_begin(thiz); int i = 0; for(i = 0; i < sizeof(values) / sizeof(int); ++ i) { iter = c_map_insert1(thiz, iter, &pairs[i]); assert(__c_rb_tree_verify(thiz->_l)); } return 0; }
static int test_erase(c_pmap thiz) { c_iterator iter = c_map_begin(thiz); c_iterator end = c_map_end(thiz); assert(__c_rb_tree_verify(thiz->_l)); //c_map_erase(thiz, end); // erasing end results in error assert(__c_rb_tree_verify(thiz->_l)); while(!ITER_EQUAL(iter, end)) { c_iterator to_erase = iter; assert_valid_iter(thiz, to_erase); c_map_erase(thiz, to_erase); assert(__c_rb_tree_verify(thiz->_l)); iter = c_map_begin(thiz); end = c_map_end(thiz); } assert(__c_rb_tree_verify(thiz->_l)); assert(c_map_empty(thiz)); return 0; }
static int print_map(c_pmap pt) { c_iterator iter = c_map_begin(pt); c_iterator end = c_map_end(pt); printf("map is:\n"); for(; !ITER_EQUAL(iter, end); ITER_INC(iter)) { printf("key = %d, value = %d\n", *(int*)((c_ppair)ITER_REF(iter))->first, *(int*)((c_ppair)ITER_REF(iter))->second); } return 0; }
static Iterator __map_getIterator(Map *map){ c_iterator iter = c_map_begin(&map->values); return iter; }