--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/list_tests.c Sat Dec 31 18:57:30 2011 +0100 @@ -0,0 +1,65 @@ +/* + * tests of list implementation + */ + +#include <stdio.h> +#include <stdlib.h> + +#include "ucx/list.h" +#include "ucx/dlist.h" + +struct test1_data { + int values[3]; + int i; +}; + +int list_tests_foreach1(void *v, void *custom) { + UcxDlist *dl = (UcxDlist*)v; + struct test1_data *tdata = (struct test1_data*)custom; + + tdata->values[tdata->i] = *(int*)dl->data; + tdata->i++; +} + +int list_tests() { + int r = 0; + int v[8]; + UcxDlist *dl = NULL; + // build list 0,1,2,3,4,5,6,7 + for(int i=0;i<8;i++) { + v[i] = i; + dl = ucx_dlist_append(dl, &v[i]); + } + + for(int i=0;i<8;i++) { + UcxDlist *elm = ucx_dlist_get(dl, i); + if(elm == NULL) { + fprintf(stderr, "ucx_dlist_get failed: element is NULL\n"); + } + if(elm->data == NULL) { + fprintf(stderr, "ucx_dlist_get failed: data is NULL\n"); + } + int *data = (int*)elm->data; + if(*data != i) { + fprintf(stderr, "ucx_dlist_get failed with index %d\n", i); + } + } + + //TODO: ucx_dlist_free test + + dl = NULL; + // build list 4,0,4 + dl = ucx_dlist_prepend(dl, &v[0]); + dl = ucx_dlist_prepend(dl, &v[5]); + dl = ucx_dlist_append(dl, &v[5]); + + struct test1_data tdata; + tdata.i = 0; + ucx_dlist_foreach(dl, list_tests_foreach1, &tdata); + + if(tdata.values[0] != 4 || tdata.values[1] != 0 || tdata.values[2] != 4) { + fprintf(stderr, "prepend/append test failed\n"); + } + + return r; +}