Sat, 31 Dec 2011 19:08:27 +0100
Added list tests
1 /*
2 * tests of list implementation
3 */
5 #include <stdio.h>
6 #include <stdlib.h>
8 #include "ucx/list.h"
9 #include "ucx/dlist.h"
11 struct test1_data {
12 int values[3];
13 int i;
14 };
16 int list_tests_foreach1(void *v, void *custom) {
17 UcxDlist *dl = (UcxDlist*)v;
18 struct test1_data *tdata = (struct test1_data*)custom;
20 tdata->values[tdata->i] = *(int*)dl->data;
21 tdata->i++;
22 }
24 int list_tests_foreach2(void *v, void *custom) {
25 UcxList *dl = (UcxList*)v;
26 struct test1_data *tdata = (struct test1_data*)custom;
28 tdata->values[tdata->i] = *(int*)dl->data;
29 tdata->i++;
30 }
32 int dlist_tests() {
33 int r = 0;
34 int v[8];
35 UcxDlist *dl = NULL;
36 // build list 0,1,2,3,4,5,6,7
37 printf(" Test ucx_dlist_append\n");
38 fflush(stdout);
39 for(int i=0;i<8;i++) {
40 v[i] = i;
41 dl = ucx_dlist_append(dl, &v[i]);
42 }
44 printf(" Test ucx_dlist_get\n");
45 fflush(stdout);
46 for(int i=0;i<8;i++) {
47 UcxDlist *elm = ucx_dlist_get(dl, i);
48 if(elm == NULL) {
49 fprintf(stderr, "ucx_dlist_get failed: element is NULL\n");
50 r--;
51 }
52 if(elm->data == NULL) {
53 fprintf(stderr, "ucx_dlist_get failed: data is NULL\n");
54 r--;
55 }
56 int *data = (int*)elm->data;
57 if(*data != i) {
58 fprintf(stderr, "ucx_dlist_get failed with index %d\n", i);
59 r--;
60 }
61 }
63 printf(" Test ucx_dlist_free\n");
64 fflush(stdout);
65 ucx_dlist_free(dl);
67 dl = NULL;
68 // build list 4,0,4
69 printf(" Test ucx_dlist_prepend\n");
70 dl = ucx_dlist_prepend(dl, &v[0]);
71 dl = ucx_dlist_prepend(dl, &v[4]);
72 dl = ucx_dlist_append(dl, &v[4]);
74 struct test1_data tdata;
75 tdata.i = 0;
76 ucx_dlist_foreach(dl, list_tests_foreach1, &tdata);
78 if(tdata.values[0] != 4 || tdata.values[1] != 0 || tdata.values[2] != 4) {
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--;
82 }
84 return r;
85 }
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 }
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 }
118 printf(" Test ucx_list_free\n");
119 fflush(stdout);
120 ucx_list_free(dl);
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]);
129 struct test1_data tdata;
130 tdata.i = 0;
131 ucx_list_foreach(dl, list_tests_foreach1, &tdata);
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 }
139 return r;
140 }