opkg: introduce the protype of active_list
[oweals/opkg-lede.git] / tests / opkg_active_list_test.c
1
2 /*
3 .--A---B----C----D-----E----F
4     |             |__k---L
5     |                    |_ N
6     |__ G ---H ---I---J
7              |_M      |_O
8
9 Then the sequence will be 
10 G M H I O J A B K N L C D E F
11 */
12
13 #include <stdlib.h>
14 #include <libopkg/active_list.h>
15 #include <stdio.h>
16
17 struct active_test {
18     char *str;
19     struct active_list list;
20 } __attribute__((packed));
21
22 struct active_test *active_test_new(char *str) {
23     struct active_test *ans = (struct active_test *)calloc(1, sizeof(struct active_test));
24     ans->str = str;
25     active_list_init(&ans->list); 
26     return ans;
27 }
28 void active_test_add(struct active_list *head, struct active_test *node) {
29     active_list_add(head, &node->list);
30 }
31
32 void active_test_add_depend(struct active_test *A, struct active_test *B) {
33     active_list_add_depend(&A->list, &B->list);
34 }
35
36 void make_list(struct active_list *head) {
37     struct active_test *A = active_test_new("A");
38     struct active_test *B = active_test_new("B");
39     struct active_test *C = active_test_new("C");
40     struct active_test *D = active_test_new("D");
41     struct active_test *E = active_test_new("E");
42     struct active_test *F = active_test_new("F");
43     struct active_test *G = active_test_new("G");
44     struct active_test *H = active_test_new("H");
45     struct active_test *I = active_test_new("I");
46     struct active_test *J = active_test_new("J");
47     struct active_test *K = active_test_new("K");
48     struct active_test *L = active_test_new("L");
49     struct active_test *M = active_test_new("M");
50     struct active_test *N = active_test_new("N");
51     struct active_test *O = active_test_new("O");
52
53     active_test_add(head, A);
54     active_test_add(head, B);
55     active_test_add(head, C);
56     active_test_add(head, D);
57     active_test_add(head, E);
58     active_test_add(head, F);
59     active_test_add(head, G);
60     active_test_add(head, H);
61     active_test_add(head, I);
62     active_test_add(head, J);
63     active_test_add(head, K);
64     active_test_add(head, L);
65     active_test_add(head, M);
66     active_test_add(head, N);
67     active_test_add(head, O);
68     active_test_add_depend(H, M);
69     active_test_add_depend(A, G);
70     active_test_add_depend(A, H);
71     active_test_add_depend(A, I);
72     active_test_add_depend(A, J);
73     active_test_add_depend(J, O);
74     active_test_add_depend(C, K);
75     active_test_add_depend(C, L); 
76     active_test_add_depend(L, N);
77 }
78
79 int main (void) {
80     struct active_list head;
81     struct active_list *ptr;
82     struct active_test *test;
83     active_list_init(&head);
84     make_list(&head);
85
86     for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) {
87         test = list_entry(ptr, struct active_test, list);
88         printf ("%s ",test->str);
89     }
90     printf("\n");
91     for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) {
92         test = list_entry(ptr, struct active_test, list);
93         printf ("%s ",test->str);
94     }
95     printf("\n");
96     for(ptr = active_list_next(&head, &head); ptr ;ptr = active_list_next(&head, ptr)) {
97         test = list_entry(ptr, struct active_test, list);
98         printf ("%s ",test->str);
99     }
100     printf("\n");
101
102
103 }