X-Git-Url: https://git.librecmc.org/?p=oweals%2Fopkg-lede.git;a=blobdiff_plain;f=tests%2Fopkg_active_list_test.c;h=b6af3b30e78fc86141fafc577febcec46a3fff0c;hp=f7bd390e181b9ffd68d8e644f1a548fbea2ee021;hb=0d9f9342d4b6071c158351d4c30370ddf36dc7ec;hpb=32ee5d15aca5dcdae46084c4a07fb7a072af379a diff --git a/tests/opkg_active_list_test.c b/tests/opkg_active_list_test.c index f7bd390..b6af3b3 100644 --- a/tests/opkg_active_list_test.c +++ b/tests/opkg_active_list_test.c @@ -29,7 +29,7 @@ struct active_test { struct active_test *active_test_new(char *str) { struct active_test *ans = (struct active_test *)calloc(1, sizeof(struct active_test)); ans->str = str; - active_list_init(&ans->list); + active_list_init(&ans->list); return ans; } void active_test_add(struct active_list *head, struct active_test *node) { @@ -47,8 +47,9 @@ void active_test_add_depend(struct active_test *A, struct active_test *B) { |__ G ---H ---I---J |_M |_O -Then the sequence will be -G M H I O J A B K N L C D E F +Then the sequence will be ++: G M H I O J A B K N L C D E F +-: F E D C L N K B A J O I H M G */ void make_list(struct active_list *head) { struct active_test *A = active_test_new("A"); @@ -89,10 +90,27 @@ void make_list(struct active_list *head) { active_test_add_depend(A, J); active_test_add_depend(J, O); active_test_add_depend(C, K); - active_test_add_depend(C, L); + active_test_add_depend(C, L); active_test_add_depend(L, N); } +int active_test_compare(const void *a, const void *b) { + struct active_list *first = (struct active_list *)a; + struct active_list *second = (struct active_list *)b; + return strcmp(list_entry(first, struct active_test, list), + list_entry(second, struct active_test, list)); +} + +void show_list(struct active_list *head) { + struct active_list *ptr; + struct active_test *test; + for(ptr = active_list_next(head, NULL); ptr ;ptr = active_list_next(head, ptr)) { + test = list_entry(ptr, struct active_test, list); + printf ("%s ",test->str); + } + printf("\n"); +} + int main (void) { struct active_list head; struct active_list *ptr; @@ -100,16 +118,23 @@ int main (void) { active_list_init(&head); make_list(&head); - for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) { + printf("pos order: "); + show_list(&head); +/* for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) { test = list_entry(ptr, struct active_test, list); printf ("%s ",test->str); - } - printf("\n"); - for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) { + }*/ + printf("neg order: "); + for(ptr = active_list_prev(&head, &head); ptr ;ptr = active_list_prev(&head, ptr)) { test = list_entry(ptr, struct active_test, list); printf ("%s ",test->str); } - printf("\n"); + printf("\npos order after sort: "); + active_list_sort(&head, &active_test_compare); + show_list(&head); + + printf("after clear: "); + active_list_clear(&head); for(ptr = active_list_next(&head, NULL); ptr ;ptr = active_list_next(&head, ptr)) { test = list_entry(ptr, struct active_test, list); printf ("%s ",test->str);