Esempio n. 1
0
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");
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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);
}
Esempio n. 4
0
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;
}
Esempio n. 5
0
File: friends.c Progetto: 91D2/pvpgn
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;
}
Esempio n. 6
0
File: friends.c Progetto: 91D2/pvpgn
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;
}
Esempio n. 7
0
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);
}