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=1e216450fe8d3700359512d8da9308e313f6eaea;hb=0d9f9342d4b6071c158351d4c30370ddf36dc7ec;hpb=014e4c306c4765c65abf1f2ce879bebcdd8c7261 diff --git a/tests/opkg_active_list_test.c b/tests/opkg_active_list_test.c index 1e21645..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,7 +47,7 @@ void active_test_add_depend(struct active_test *A, struct active_test *B) { |__ G ---H ---I---J |_M |_O -Then the sequence will be +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 */ @@ -90,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; @@ -102,16 +119,22 @@ int main (void) { make_list(&head); printf("pos order: "); - for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) { + 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("\nneg order: "); + }*/ + 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("\npos order: "); + 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);