static int test_less() { c_bool rt; c_map ta, tb; c_map_create(&ta, int_comparer); c_map_create(&tb, int_comparer); create_with_insert_equal(&ta); create_with_insert_equal(&tb); printf("*ta is :\n"); print_map(&ta); printf("*tb is :\n"); print_map(&tb); rt = c_map_less(&ta, &tb, pair_comparer); if(rt) printf("is less\n"); else printf("is not less\n"); c_map_clear(&ta); c_map_clear(&tb); create_with_insert_unique(&ta); create_with_insert_equal(&tb); printf("*ta is :\n"); print_map(&ta); printf("*tb is :\n"); print_map(&tb); rt = c_map_less(&ta, &tb, pair_comparer); if(rt) printf("is less\n"); else printf("is not less\n"); c_map_clear(&ta); c_map_clear(&tb); create_with_insert_equal(&ta); create_with_insert_unique(&tb); printf("*ta is :\n"); print_map(&ta); printf("*tb is :\n"); print_map(&tb); rt = c_map_less(&ta, &tb, pair_comparer); if(rt) printf("is less\n"); else printf("is not less\n"); return 0; }
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 int test_equal() { c_bool rt; c_map ta, tb; c_map_create(&ta, int_comparer); c_map_create(&tb, int_comparer); create_with_insert_equal(&ta); create_with_insert_equal(&tb); rt = c_map_equal(&ta, &tb, pair_comparer); if(rt) printf("is equal\n"); else printf("is not equal\n"); c_map_clear(&ta); c_map_clear(&tb); create_with_insert_unique(&ta); create_with_insert_equal(&tb); rt = c_map_equal(&ta, &tb, pair_comparer); if(rt) printf("is equal\n"); else printf("is not equal\n"); c_map_clear(&ta); c_map_clear(&tb); create_with_insert_equal(&ta); create_with_insert_unique(&tb); rt = c_map_equal(&ta, &tb, pair_comparer); if(rt) printf("is equal\n"); else printf("is not equal\n"); return 0; }
static int test_size_empty(c_pmap thiz) { int i = 0; printf("max size is %d\n", c_map_max_size(thiz)); printf("size is %d\n", c_map_size(thiz)); printf("is empty? %s\n", c_map_empty(thiz) ? "yes" : "no"); for(; i < sizeof(values) / sizeof(int); ++ i) { printf("now insert %d\n", i + 1); c_map_insert(thiz, &pairs[i]); printf("size is %d\n", c_map_size(thiz)); printf("is empty? %s\n", c_map_empty(thiz) ? "yes" : "no"); } printf("now clear\n"); c_map_clear(thiz); printf("size is %d\n", c_map_size(thiz)); printf("is empty? %s\n", c_map_empty(thiz) ? "yes" : "no"); return 0; }
int t_map() { c_map map; c_map_create(&map, int_comparer); assert(__c_rb_tree_verify(map._l)); printf("0. test create with insert unique\n"); create_with_insert_unique(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n1. test clear\n"); test_clear(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n2. test size and empty\n"); test_size_empty(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n3. test create with insert equal\n"); c_map_clear(&map); create_with_insert_equal(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n4. test swap\n"); create_with_insert_unique(&map); test_swap(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n5. test create with insert unique1\n"); create_with_insert_unique1(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n6. test create with insert equal1\n"); c_map_clear(&map); create_with_insert_equal1(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n7. test create with insert unique2\n"); c_map_clear(&map); create_with_insert_unique2(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n8. test create with insert equal2\n"); c_map_clear(&map); create_with_insert_equal2(&map); print_map(&map); rprint_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n9. test erase\n"); c_map_clear(&map); create_with_insert_unique(&map); test_erase(&map); create_with_insert_unique(&map); test_reverse_erase(&map); print_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n10. test find and erase\n"); c_map_clear(&map); printf("* test_find_erase:\n"); create_with_insert_unique(&map); print_map(&map); test_find_erase(&map); print_map(&map); printf("* test_reverse_find_erase:\n"); create_with_insert_unique(&map); print_map(&map); test_reverse_find_erase(&map); print_map(&map); assert(__c_rb_tree_verify(map._l)); printf("\n\n11. test count:\n"); // 'lower_bound' 'upper_bound' 'equal_range' used create_with_insert_unique(&map); test_count(&map); printf("\n\n12. test less:\n"); test_less(); printf("\n\n13. test equal:\n"); test_equal(); printf("\n\n14. test at:\n"); test_at(); c_map_destroy(&map); printf("\n\nfinish testing map!\n"); return 0; }
static void __map_clear(Map *map){ c_map_clear(&map->values); map->entries->clear(map->entries); }