示例#1
0
UA_Int32 UA_list_destroy(UA_list_List* list, UA_list_PayloadVisitor visitor){
	if(list==UA_NULL)return UA_ERROR;
	UA_list_Element* current = UA_NULL;
	current=list->first;
	while(current){
		UA_list_Element* next = current->next;
		if(visitor){
			(*visitor)(current->payload);
		}
		UA_free(current);
		current = next;
	}
	UA_list_init(list);
	return UA_NO_ERROR;
}
示例#2
0
END_TEST

START_TEST(findElementShallFind42)
{
	// given
	UA_list_List list;
	UA_list_init(&list);
	UA_Int32 plv[] = {42,24,1};
	myAddPayloadVectorToFront(&list,plv,sizeof(plv)/sizeof(UA_Int32));
	// when
	UA_list_Element* e = UA_list_find(&list,matcher);
	// then
	ck_assert_ptr_ne(e, UA_NULL);
	ck_assert_int_eq(*(UA_Int32*)(e->payload), 42);
	// finally
	UA_list_destroy(&list, freer);
}
示例#3
0
END_TEST

START_TEST(searchElementShallFind24)
{
	// given
	UA_list_List list;
	UA_list_init(&list);
	UA_Int32 plv[] = {42,24,1};
	myAddPayloadVectorToFront(&list,plv,sizeof(plv)/sizeof(UA_Int32));
	UA_Int32 payload = 24;
	// when
	UA_list_Element* e = UA_list_search(&list,comparer,(void*)&payload);
	// then
	ck_assert_ptr_ne(e, UA_NULL);
	ck_assert_int_eq(*(UA_Int32*)(e->payload), 24);
	// finally
	UA_list_destroy(&list, freer);
}
示例#4
0
END_TEST

START_TEST(addTwiceAndRemoveLastShallYieldListWithOneElement)
{
	// given
	UA_list_List list;
	UA_list_init(&list);
	UA_Int32 plv[] = {42,24};
	myAddPayloadVectorToFront(&list,plv,sizeof(plv)/sizeof(UA_Int32));
	// when
	UA_list_Element* e = UA_list_search(&list,comparer,(void*)&plv[1]);
	UA_list_removeElement(e,UA_NULL);
	visit_count = 0;
	UA_list_iteratePayload(&list,visitor);
	// then
	ck_assert_int_eq(list.size,1);
	ck_assert_int_eq(visit_count,1);
	// finally
	UA_list_destroy(&list, freer);
}
示例#5
0
UA_Int32 UA_indexedList_init(UA_indexedList_List* list){
	if(list==UA_NULL)return UA_ERROR;
	return UA_list_init((UA_list_List*)list);
}