static void test_invalid_params(void) { printf("===========Warning is normal begin==============\n"); assert(dlist_length(NULL) == 0); assert(dlist_prepend(NULL, 0) == RET_INVALID_PARAMS); assert(dlist_append(NULL, 0) == RET_INVALID_PARAMS); assert(dlist_delete(NULL, 0) == RET_INVALID_PARAMS); assert(dlist_insert(NULL, 0, 0) == RET_INVALID_PARAMS); assert(dlist_set_by_index(NULL, 0, 0) == RET_INVALID_PARAMS); assert(dlist_get_by_index(NULL, 0, NULL) == RET_INVALID_PARAMS); assert(dlist_find(NULL, NULL, NULL) < 0); assert(dlist_foreach(NULL, NULL, NULL) == RET_INVALID_PARAMS); printf("===========Warning is normal end==============\n"); return; }
static void test_int_dlist(void) { int i = 0; int n = 100; int data = 0; DList* dlist = dlist_create(NULL, NULL, NULL); for(i = 0; i < n; i++) { assert(dlist_append(dlist, (void*)i) == RET_OK); assert(dlist_length(dlist) == (i + 1)); assert(dlist_get_by_index(dlist, i, (void**)&data) == RET_OK); assert(data == i); assert(dlist_set_by_index(dlist, i, (void*)(2*i)) == RET_OK); assert(dlist_get_by_index(dlist, i, (void**)&data) == RET_OK); assert(data == 2*i); assert(dlist_set_by_index(dlist, i, (void*)i) == RET_OK); assert(dlist_find(dlist, cmp_int, (void*)i) == i); } for(i = 0; i < n; i++) { assert(dlist_get_by_index(dlist, 0, (void**)&data) == RET_OK); assert(data == (i)); assert(dlist_length(dlist) == (n-i)); assert(dlist_delete(dlist, 0) == RET_OK); assert(dlist_length(dlist) == (n-i-1)); if((i + 1) < n) { assert(dlist_get_by_index(dlist, 0, (void**)&data) == RET_OK); assert((int)data == (i+1)); } } assert(dlist_length(dlist) == 0); for(i = 0; i < n; i++) { assert(dlist_prepend(dlist, (void*)i) == RET_OK); assert(dlist_length(dlist) == (i + 1)); assert(dlist_get_by_index(dlist, 0, (void**)&data) == RET_OK); assert(data == i); assert(dlist_set_by_index(dlist, 0, (void*)(2*i)) == RET_OK); assert(dlist_get_by_index(dlist, 0, (void**)&data) == RET_OK); assert(data == 2*i); assert(dlist_set_by_index(dlist, 0, (void*)i) == RET_OK); } i = n - 1; assert(dlist_foreach(dlist, check_and_dec_int, &i) == RET_OK); dlist_destroy(dlist); return; }
Ret hash_table_find(HashTable* thiz, DataCompareFunc cmp, void* data, void** ret_data) { int index = 0; DList* dlist = NULL; return_val_if_fail(thiz != NULL && cmp != NULL && ret_data != NULL, RET_INVALID_PARAMS); index = thiz->hash(data)%thiz->slot_nr; dlist = thiz->slots[index]; if(dlist != NULL) { index = dlist_find(dlist, cmp, data); return dlist_get_by_index(dlist, index, ret_data); } return RET_FAIL; }
static Ret linear_container_dlist_get_by_index(LinearContainer* thiz, size_t index, void** data) { PrivInfo* priv = (PrivInfo*)thiz->priv; return dlist_get_by_index(priv->dlist, index, data); }
Ret queue_head(Queue* thiz, void** data) { return_val_if_fail(thiz != NULL && data != NULL, RET_INVALID_PARAMS); return dlist_get_by_index(thiz->dlist, 0, data); }