bool map_has_key(map_t* map, void* key)
{
- return (NULL != map_lookup(map, key));
+ map_pair_t pair = { map->hash_func(key), key, NULL };
+ rbt_node_t* curr = rbt_lookup(map->tree, &pair);
+ return (NULL != curr);
}
size_t map_size(map_t* map)
mem_release(map);
mem_release(del_val);
}
+
+ //-------------------------------------------------------------------------
+ // Test map_lookup function
+ //-------------------------------------------------------------------------
+ TEST(Verify_map_lookup_should_return_the_associated_value_for_the_given_key)
+ {
+ map_t* map = map_new(cmp_new(NULL, cmp_int), hash_int);
+ void* lup_val = mem_box(42);
+ map_insert(map, mem_retain(lup_val), mem_retain(lup_val));
+ CHECK(map_size(map) == 1);
+ CHECK(map_lookup(map, lup_val) == lup_val);
+ mem_release(map);
+ mem_release(lup_val);
+ }
+
+ TEST(Verify_map_lookup_should_return_NULL_if_no_association_exists)
+ {
+ map_t* map = map_new(cmp_new(NULL, cmp_int), hash_int);
+ void* lup_val = mem_box(42);
+ CHECK(map_lookup(map, lup_val) == NULL);
+ mem_release(map);
+ mem_release(lup_val);
+ }
}