void test_list_remove_data (void) { list *l = list_empty(); assert(list_remove_head(l) == NULL); element *tmp = NULL; element* e1 = element_init("plop"); element* e2 = element_init("plap"); element* e3 = element_init("plup"); list_add_head(l,e1); list_add_head(l,e2); assert(list_remove_data(l,"plup") == NULL); list_add_head(l,e3); tmp = list_remove_data(l,"plup"); assert( tmp == e3); assert(l->head == e2); free(tmp); tmp = list_remove_data(l,"plop"); assert( tmp == e1); assert(l->head == e2); assert(e2->next == NULL); free(tmp); list_free(l); printf("Les tests de list_remove_data sont réussis!\n"); }
static void rpc_free(RPC* rpc) { RPCData* data = (RPCData*)rpc->data; ListIterator iter; list_iterator_init(&iter, data->pbufs); while(list_iterator_has_next(&iter)) { struct pbuf* pbuf = list_iterator_next(&iter); list_iterator_remove(&iter); pbuf_free(pbuf); } list_destroy(data->pbufs); list_remove_data(manager.actives, rpc); free(rpc); list_remove_data(manager_core->clients, rpc); }
void test_list_remove_data(void) { int entries[] = { 89, 4, 23, 42, 4, 16, 15, 4, 8, 99, 50, 30, 4 }; unsigned int num_entries = sizeof(entries) / sizeof(int); int val; ListEntry *list; unsigned int i; /* Generate a list containing all the entries in the array */ list = NULL; for (i=0; i<num_entries; ++i) { assert(list_prepend(&list, &entries[i]) != NULL); } /* Test removing invalid data */ val = 0; assert(list_remove_data(&list, int_equal, &val) == 0); val = 56; assert(list_remove_data(&list, int_equal, &val) == 0); check_list_integrity(list); /* Remove the number 8 from the list */ val = 8; assert(list_remove_data(&list, int_equal, &val) == 1); assert(list_length(list) == num_entries - 1); check_list_integrity(list); /* Remove the number 4 from the list (occurs multiple times) */ val = 4; assert(list_remove_data(&list, int_equal, &val) == 4); assert(list_length(list) == num_entries - 5); check_list_integrity(list); /* Remove the number 89 from the list (first entry) */ val = 89; assert(list_remove_data(&list, int_equal, &val) == 1); assert(list_length(list) == num_entries - 6); check_list_integrity(list); list_free(list); }
static int anongame_wol_player_destroy(t_anongame_wol_player * player, t_elem ** curr) { if (list_remove_data(anongame_wol_matchlist_head,player,curr)<0){ ERROR0("could not remove item from list"); return -1; } DEBUG0("[** WOL **] destroying annongame player"); xfree(player); return 0; }
extern int friendlist_remove_friend(t_list * flist, t_friend * fr) { t_elem * elem; if(flist==NULL) return -1; if(fr!=NULL) { if(list_remove_data(flist, fr, &elem)<0) { eventlog(eventlog_level_error,__FUNCTION__,"could not remove item from list"); return -1; } xfree((void *)fr); return 0; } return -1; }
extern int friendlist_remove_username(t_list * flist, const char * accname) { t_elem * elem; t_friend * fr; if(flist==NULL) return -1; fr=friendlist_find_username(flist, accname); if(fr!=NULL) { if(list_remove_data(flist, fr, &elem)<0) { eventlog(eventlog_level_error,__FUNCTION__,"could not remove item from list"); return -1; } xfree((void *)fr); return 0; } return -1; }
void test_list_iterate_bad_remove(void) { ListEntry *list; ListIterator iter; int values[49]; int i; int *val; /* Create a list with 49 entries */ list = NULL; for (i=0; i<49; ++i) { values[i] = i; assert(list_prepend(&list, &values[i]) != NULL); } /* Iterate over the list, removing each element in turn. We * use an odd number of list elements so that the first and * last entries are removed. */ list_iterate(&list, &iter); while (list_iter_has_more(&iter)) { val = list_iter_next(&iter); /* Remove all the even numbers. Check that list_iter_remove * can cope with the fact that the current element has * already been removed. */ if ((*val % 2) == 0) { assert(list_remove_data(&list, int_equal, val) != 0); list_iter_remove(&iter); } } list_free(list); }