19 |
19 |
20 tdata->values[tdata->i] = *(int*)dl->data; |
20 tdata->values[tdata->i] = *(int*)dl->data; |
21 tdata->i++; |
21 tdata->i++; |
22 } |
22 } |
23 |
23 |
24 int list_tests() { |
24 int list_tests_foreach2(void *v, void *custom) { |
|
25 UcxList *dl = (UcxList*)v; |
|
26 struct test1_data *tdata = (struct test1_data*)custom; |
|
27 |
|
28 tdata->values[tdata->i] = *(int*)dl->data; |
|
29 tdata->i++; |
|
30 } |
|
31 |
|
32 int dlist_tests() { |
25 int r = 0; |
33 int r = 0; |
26 int v[8]; |
34 int v[8]; |
27 UcxDlist *dl = NULL; |
35 UcxDlist *dl = NULL; |
28 // build list 0,1,2,3,4,5,6,7 |
36 // build list 0,1,2,3,4,5,6,7 |
|
37 printf(" Test ucx_dlist_append\n"); |
|
38 fflush(stdout); |
29 for(int i=0;i<8;i++) { |
39 for(int i=0;i<8;i++) { |
30 v[i] = i; |
40 v[i] = i; |
31 dl = ucx_dlist_append(dl, &v[i]); |
41 dl = ucx_dlist_append(dl, &v[i]); |
32 } |
42 } |
33 |
43 |
|
44 printf(" Test ucx_dlist_get\n"); |
|
45 fflush(stdout); |
34 for(int i=0;i<8;i++) { |
46 for(int i=0;i<8;i++) { |
35 UcxDlist *elm = ucx_dlist_get(dl, i); |
47 UcxDlist *elm = ucx_dlist_get(dl, i); |
36 if(elm == NULL) { |
48 if(elm == NULL) { |
37 fprintf(stderr, "ucx_dlist_get failed: element is NULL\n"); |
49 fprintf(stderr, "ucx_dlist_get failed: element is NULL\n"); |
|
50 r--; |
38 } |
51 } |
39 if(elm->data == NULL) { |
52 if(elm->data == NULL) { |
40 fprintf(stderr, "ucx_dlist_get failed: data is NULL\n"); |
53 fprintf(stderr, "ucx_dlist_get failed: data is NULL\n"); |
|
54 r--; |
41 } |
55 } |
42 int *data = (int*)elm->data; |
56 int *data = (int*)elm->data; |
43 if(*data != i) { |
57 if(*data != i) { |
44 fprintf(stderr, "ucx_dlist_get failed with index %d\n", i); |
58 fprintf(stderr, "ucx_dlist_get failed with index %d\n", i); |
|
59 r--; |
45 } |
60 } |
46 } |
61 } |
47 |
62 |
48 //TODO: ucx_dlist_free test |
63 printf(" Test ucx_dlist_free\n"); |
49 |
64 fflush(stdout); |
|
65 ucx_dlist_free(dl); |
|
66 |
50 dl = NULL; |
67 dl = NULL; |
51 // build list 4,0,4 |
68 // build list 4,0,4 |
|
69 printf(" Test ucx_dlist_prepend\n"); |
52 dl = ucx_dlist_prepend(dl, &v[0]); |
70 dl = ucx_dlist_prepend(dl, &v[0]); |
53 dl = ucx_dlist_prepend(dl, &v[5]); |
71 dl = ucx_dlist_prepend(dl, &v[4]); |
54 dl = ucx_dlist_append(dl, &v[5]); |
72 dl = ucx_dlist_append(dl, &v[4]); |
55 |
73 |
56 struct test1_data tdata; |
74 struct test1_data tdata; |
57 tdata.i = 0; |
75 tdata.i = 0; |
58 ucx_dlist_foreach(dl, list_tests_foreach1, &tdata); |
76 ucx_dlist_foreach(dl, list_tests_foreach1, &tdata); |
59 |
77 |
60 if(tdata.values[0] != 4 || tdata.values[1] != 0 || tdata.values[2] != 4) { |
78 if(tdata.values[0] != 4 || tdata.values[1] != 0 || tdata.values[2] != 4) { |
61 fprintf(stderr, "prepend/append test failed\n"); |
79 fprintf(stderr, "prepend/append test failed\n"); |
|
80 fprintf(stderr, "content: [%d, %d, %d]\n", tdata.values[0], tdata.values[1], tdata.values[2]); |
|
81 r--; |
62 } |
82 } |
63 |
83 |
64 return r; |
84 return r; |
65 } |
85 } |
|
86 |
|
87 int list_tests() { |
|
88 int r = 0; |
|
89 int v[8]; |
|
90 UcxList *dl = NULL; |
|
91 // build list 0,1,2,3,4,5,6,7 |
|
92 printf(" Test ucx_list_append\n"); |
|
93 fflush(stdout); |
|
94 for(int i=0;i<8;i++) { |
|
95 v[i] = i; |
|
96 dl = ucx_list_append(dl, &v[i]); |
|
97 } |
|
98 |
|
99 printf(" Test ucx_list_get\n"); |
|
100 fflush(stdout); |
|
101 for(int i=0;i<8;i++) { |
|
102 UcxList *elm = ucx_list_get(dl, i); |
|
103 if(elm == NULL) { |
|
104 fprintf(stderr, "ucx_list_get failed: element is NULL\n"); |
|
105 r--; |
|
106 } |
|
107 if(elm->data == NULL) { |
|
108 fprintf(stderr, "ucx_list_get failed: data is NULL\n"); |
|
109 r--; |
|
110 } |
|
111 int *data = (int*)elm->data; |
|
112 if(*data != i) { |
|
113 fprintf(stderr, "ucx_list_get failed with index %d\n", i); |
|
114 r--; |
|
115 } |
|
116 } |
|
117 |
|
118 printf(" Test ucx_list_free\n"); |
|
119 fflush(stdout); |
|
120 ucx_list_free(dl); |
|
121 |
|
122 dl = NULL; |
|
123 // build list 4,0,4 |
|
124 printf(" Test ucx_list_prepend\n"); |
|
125 dl = ucx_list_prepend(dl, &v[0]); |
|
126 dl = ucx_list_prepend(dl, &v[4]); |
|
127 dl = ucx_list_append(dl, &v[4]); |
|
128 |
|
129 struct test1_data tdata; |
|
130 tdata.i = 0; |
|
131 ucx_list_foreach(dl, list_tests_foreach1, &tdata); |
|
132 |
|
133 if(tdata.values[0] != 4 || tdata.values[1] != 0 || tdata.values[2] != 4) { |
|
134 fprintf(stderr, "prepend/append test failed\n"); |
|
135 fprintf(stderr, "content: [%d, %d, %d]\n", tdata.values[0], tdata.values[1], tdata.values[2]); |
|
136 r--; |
|
137 } |
|
138 |
|
139 return r; |
|
140 } |