X-Git-Url: https://git.librecmc.org/?p=oweals%2Fopkg-lede.git;a=blobdiff_plain;f=tests%2Fopkg_active_list_test.c;h=ad964dcd70246232becc450e758a2818a5147190;hp=1e216450fe8d3700359512d8da9308e313f6eaea;hb=19070b6c1a9718bf7ceaa61c48f328cabf1d5ca7;hpb=014e4c306c4765c65abf1f2ce879bebcdd8c7261 diff --git a/tests/opkg_active_list_test.c b/tests/opkg_active_list_test.c index 1e21645..ad964dc 100644 --- a/tests/opkg_active_list_test.c +++ b/tests/opkg_active_list_test.c @@ -15,29 +15,33 @@ General Public License for more details. */ - #include #include #include #include struct active_test { - char *str; - struct active_list list; + char *str; + struct active_list list; }; -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); - return ans; +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); + return ans; } -void active_test_add(struct active_list *head, struct active_test *node) { - active_list_add(head, &node->list); + +void active_test_add(struct active_list *head, struct active_test *node) +{ + active_list_add(head, &node->list); } -void active_test_add_depend(struct active_test *A, struct active_test *B) { - active_list_add_depend(&A->list, &B->list); +void active_test_add_depend(struct active_test *A, struct active_test *B) +{ + active_list_add_depend(&A->list, &B->list); } /* @@ -47,76 +51,105 @@ 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 */ -void make_list(struct active_list *head) { - struct active_test *A = active_test_new("A"); - struct active_test *B = active_test_new("B"); - struct active_test *C = active_test_new("C"); - struct active_test *D = active_test_new("D"); - struct active_test *E = active_test_new("E"); - struct active_test *F = active_test_new("F"); - struct active_test *G = active_test_new("G"); - struct active_test *H = active_test_new("H"); - struct active_test *I = active_test_new("I"); - struct active_test *J = active_test_new("J"); - struct active_test *K = active_test_new("K"); - struct active_test *L = active_test_new("L"); - struct active_test *M = active_test_new("M"); - struct active_test *N = active_test_new("N"); - struct active_test *O = active_test_new("O"); - - active_test_add(head, A); - active_test_add(head, B); - active_test_add(head, C); - active_test_add(head, D); - active_test_add(head, E); - active_test_add(head, F); - active_test_add(head, G); - active_test_add(head, H); - active_test_add(head, I); - active_test_add(head, J); - active_test_add(head, K); - active_test_add(head, L); - active_test_add(head, M); - active_test_add(head, N); - active_test_add(head, O); - active_test_add_depend(H, M); - active_test_add_depend(A, G); - active_test_add_depend(A, H); - active_test_add_depend(A, I); - 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(L, N); +void make_list(struct active_list *head) +{ + struct active_test *A = active_test_new("A"); + struct active_test *B = active_test_new("B"); + struct active_test *C = active_test_new("C"); + struct active_test *D = active_test_new("D"); + struct active_test *E = active_test_new("E"); + struct active_test *F = active_test_new("F"); + struct active_test *G = active_test_new("G"); + struct active_test *H = active_test_new("H"); + struct active_test *I = active_test_new("I"); + struct active_test *J = active_test_new("J"); + struct active_test *K = active_test_new("K"); + struct active_test *L = active_test_new("L"); + struct active_test *M = active_test_new("M"); + struct active_test *N = active_test_new("N"); + struct active_test *O = active_test_new("O"); + + active_test_add(head, A); + active_test_add(head, B); + active_test_add(head, C); + active_test_add(head, D); + active_test_add(head, E); + active_test_add(head, F); + active_test_add(head, G); + active_test_add(head, H); + active_test_add(head, I); + active_test_add(head, J); + active_test_add(head, K); + active_test_add(head, L); + active_test_add(head, M); + active_test_add(head, N); + active_test_add(head, O); + active_test_add_depend(H, M); + active_test_add_depend(A, G); + active_test_add_depend(A, H); + active_test_add_depend(A, I); + 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(L, N); } -int main (void) { - struct active_list head; - struct active_list *ptr; - struct active_test *test; - active_list_init(&head); - make_list(&head); +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)); +} - printf("pos order: "); - 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: "); - 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: "); - for(ptr = active_list_next(&head, NULL); ptr ;ptr = active_list_next(&head, ptr)) { +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; + struct active_test *test; + active_list_init(&head); + make_list(&head); + + 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"); - + }*/ + 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 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); + } + printf("\n"); }