END_TEST START_TEST (test_map_insert_find_erase_size_empty_at_for_each) { OMX_U32 i; OMX_ERRORTYPE error = OMX_ErrorNone; int *p_item = NULL; tiz_map_t *p_map = NULL;; OMX_U32 index = 0; error = tiz_map_init (&p_map, check_map_cmp_f, check_map_free_f, NULL); fail_if (error != OMX_ErrorNone); fail_if (false == tiz_map_empty (p_map)); for (i = 0; i < 10; i++) { p_item = (int *) tiz_mem_alloc (sizeof (int)); fail_if (p_item == NULL); *p_item = i; error = tiz_map_insert (p_map, p_item, p_item, &index); fail_if (error != OMX_ErrorNone); fail_if (index != i); fail_if (tiz_map_size (p_map) != i+1); } fail_if (10 != tiz_map_size (p_map)); fail_if (true == tiz_map_empty (p_map)); i = 5; fail_if (5 != *(p_item = tiz_map_find (p_map, &i))); fail_if (5 != *(p_item = tiz_map_value_at (p_map, i))); fail_if (OMX_ErrorNone != tiz_map_for_each (p_map, check_map_for_each_f, NULL)); for (i = 0; i < 10; i++) { int d = i; tiz_map_erase (p_map, &d); fail_if (tiz_map_size (p_map) != 9-i); } tiz_map_destroy (p_map); }
void tiz_os_destroy (tiz_os_t * ap_os) { if (ap_os) { while (!tiz_map_empty (ap_os->p_map)) { tiz_map_erase_at (ap_os->p_map, 0); }; tiz_map_destroy (ap_os->p_map); os_free (ap_os->p_soa, ap_os); } }
END_TEST START_TEST (test_map_clear) { OMX_U32 i; OMX_ERRORTYPE error = OMX_ErrorNone; int *p_item = NULL; tiz_map_t *p_map = NULL;; OMX_U32 index = 0; error = tiz_map_init (&p_map, check_map_cmp_f, check_map_free_f, NULL); fail_if (error != OMX_ErrorNone); fail_if (false == tiz_map_empty (p_map)); for (i = 0; i < 10; i++) { p_item = (int *) tiz_mem_alloc (sizeof (int)); fail_if (p_item == NULL); *p_item = i; error = tiz_map_insert (p_map, p_item, p_item, &index); fail_if (error != OMX_ErrorNone); fail_if (index != i); fail_if (tiz_map_size (p_map) != i+1); } fail_if (10 != tiz_map_size (p_map)); fail_if (true == tiz_map_empty (p_map)); fail_if (OMX_ErrorNone != tiz_map_clear (p_map)); fail_if (0 != tiz_map_size (p_map)); fail_if (false == tiz_map_empty (p_map)); tiz_map_destroy (p_map); }
OMX_ERRORTYPE tiz_map_insert (tiz_map_t *ap_map, OMX_PTR ap_key, OMX_PTR ap_value, OMX_U32 *ap_index) { tiz_map_item_t *p_item = NULL; assert (NULL != ap_map); assert (NULL != ap_key); assert (NULL != ap_map->p_tree); assert (NULL != ap_index); if (!tiz_map_empty (ap_map) && NULL != tiz_map_find (ap_map, ap_key)) { return OMX_ErrorBadParameter; } if (NULL == (p_item = (tiz_map_item_t *)map_calloc (ap_map->p_soa, sizeof(tiz_map_item_t)))) { return OMX_ErrorInsufficientResources; } p_item->p_key = ap_key; p_item->p_value = ap_value; p_item->p_map = ap_map; if (-1 == avl_insert_by_key (ap_map->p_tree, p_item, ap_index)) { map_free (ap_map->p_soa, p_item); p_item = NULL; return OMX_ErrorInsufficientResources; } ap_map->size++; TIZ_LOG (TIZ_PRIORITY_TRACE, "Inserted in map. size [%d]", ap_map->size); return OMX_ErrorNone; }