void test_list_prepend(void) { ListEntry *list = NULL; assert(list_prepend(&list, &variable1) != NULL); check_list_integrity(list); assert(list_prepend(&list, &variable2) != NULL); check_list_integrity(list); assert(list_prepend(&list, &variable3) != NULL); check_list_integrity(list); assert(list_prepend(&list, &variable4) != NULL); check_list_integrity(list); assert(list_nth_data(list, 0) == &variable4); assert(list_nth_data(list, 1) == &variable3); assert(list_nth_data(list, 2) == &variable2); assert(list_nth_data(list, 3) == &variable1); /* Test out of memory scenario */ alloc_test_set_limit(0); assert(list_length(list) == 4); assert(list_prepend(&list, &variable1) == NULL); assert(list_length(list) == 4); check_list_integrity(list); list_free(list); }
void test_list_sort(void) { ListEntry *list; int entries[] = { 89, 4, 23, 42, 4, 16, 15, 4, 8, 99, 50, 30, 4 }; int sorted[] = { 4, 4, 4, 4, 8, 15, 16, 23, 30, 42, 50, 89, 99 }; unsigned int num_entries = sizeof(entries) / sizeof(int); unsigned int i; list = NULL; for (i=0; i<num_entries; ++i) { assert(list_prepend(&list, &entries[i]) != NULL); } list_sort(&list, int_compare); /* List length is unchanged */ assert(list_length(list) == num_entries); /* Check the list is sorted */ for (i=0; i<num_entries; ++i) { int *value; value = (int *) list_nth_data(list, i); assert(*value == sorted[i]); } list_free(list); /* Check sorting an empty list */ list = NULL; list_sort(&list, int_compare); assert(list == NULL); }
void test_list_nth_data(void) { ListEntry *list; list = generate_list(); /* Check all values in the list */ assert(list_nth_data(list, 0) == &variable1); assert(list_nth_data(list, 1) == &variable2); assert(list_nth_data(list, 2) == &variable3); assert(list_nth_data(list, 3) == &variable4); /* Check out of range values */ assert(list_nth_data(list, 4) == NULL); assert(list_nth_data(list, 400) == NULL); list_free(list); }
LIST *list_remove_nth(LIST *list, UINT n) { return list_remove(list, list_nth_data(list, n), TRUE); }