Enlightenment CVS committal Author : cedric Project : e17 Module : proto/eina
Dir : e17/proto/eina/src/tests Modified Files: eina_test_iterator.c eina_test_accessor.c eina_bench_array.c Log Message: Add iterator/accessor to eina list. Change list size type to unsigned int. =================================================================== RCS file: /cvs/e/e17/proto/eina/src/tests/eina_test_iterator.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- eina_test_iterator.c 12 Aug 2008 15:58:41 -0000 1.3 +++ eina_test_iterator.c 13 Aug 2008 09:19:34 -0000 1.4 @@ -26,6 +26,7 @@ #include "eina_array.h" #include "eina_hash.h" #include "eina_inlist.h" +#include "eina_list.h" #include "eina_private.h" static Eina_Bool @@ -212,10 +213,68 @@ } END_TEST +static Eina_Bool +eina_iterator_list_data_check(__UNUSED__ const Eina_List *list, int *data, int *fdata) +{ + switch (*fdata) + { + case 0: fail_if(*data != 81); break; + case 1: fail_if(*data != 7); break; + case 2: fail_if(*data != 9); break; + case 3: fail_if(*data != 6); break; + case 4: fail_if(*data != 42); break; + case 5: fail_if(*data != 1); break; + case 6: fail_if(*data != 1337); break; + } + + (*fdata)++; + + return EINA_TRUE; +} + +START_TEST(eina_iterator_list_simple) +{ + Eina_List *list = NULL; + Eina_Iterator *it; + int data[] = { 6, 9, 42, 1, 7, 1337, 81, 1664 }; + int i = 0; + + eina_list_init(); + + list = eina_list_append(list, &data[0]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[1]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[2]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[3]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[4]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[5]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[6]); + fail_if(list == NULL); + + it = eina_list_iterator_new(list); + fail_if(!it); + + eina_iterator_foreach(it, EINA_EACH(eina_iterator_list_data_check), &i); + eina_iterator_free(it); +} +END_TEST + void eina_test_iterator(TCase *tc) { tcase_add_test(tc, eina_iterator_array_simple); tcase_add_test(tc, eina_iterator_hash_simple); tcase_add_test(tc, eina_iterator_inlist_simple); + tcase_add_test(tc, eina_iterator_list_simple); } =================================================================== RCS file: /cvs/e/e17/proto/eina/src/tests/eina_test_accessor.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- eina_test_accessor.c 12 Aug 2008 15:58:41 -0000 1.3 +++ eina_test_accessor.c 13 Aug 2008 09:19:34 -0000 1.4 @@ -25,6 +25,7 @@ #include "eina_suite.h" #include "eina_array.h" #include "eina_inlist.h" +#include "eina_list.h" #include "eina_private.h" static Eina_Bool @@ -164,10 +165,75 @@ } END_TEST +static Eina_Bool +eina_iterator_list_data_check(__UNUSED__ const Eina_List *list, int *data, int *fdata) +{ + switch (*fdata) + { + case 0: fail_if(*data != 9); break; + case 1: fail_if(*data != 6); break; + } + + (*fdata)++; + + return EINA_TRUE; +} + +START_TEST(eina_accessor_list_simple) +{ + Eina_List *list = NULL; + Eina_Accessor *it; + int data[] = { 6, 9, 42, 1, 7, 1337, 81, 1664 }; + int *j; + int i = 0; + + eina_list_init(); + + list = eina_list_append(list, &data[0]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[1]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[2]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[3]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[4]); + fail_if(list == NULL); + + list = eina_list_append(list, &data[5]); + fail_if(list == NULL); + + list = eina_list_prepend(list, &data[6]); + fail_if(list == NULL); + + it = eina_list_accessor_new(list); + fail_if(!it); + + eina_accessor_over(it, EINA_EACH(eina_iterator_list_data_check), 2, 4, &i); + + fail_if(eina_accessor_data_get(it, 5, (void**) &j) != EINA_TRUE); + fail_if(*j != 1); + fail_if(eina_accessor_data_get(it, 3, (void**) &j) != EINA_TRUE); + fail_if(*j != 6); + fail_if(eina_accessor_data_get(it, 3, (void**) &j) != EINA_TRUE); + fail_if(*j != 6); + fail_if(eina_accessor_data_get(it, 1, (void**) &j) != EINA_TRUE); + fail_if(*j != 7); + fail_if(eina_accessor_data_get(it, 5, (void**) &j) != EINA_TRUE); + fail_if(*j != 1); + + eina_accessor_free(it); +} +END_TEST void eina_test_accessor(TCase *tc) { tcase_add_test(tc, eina_accessor_array_simple); tcase_add_test(tc, eina_accessor_inlist_simple); + tcase_add_test(tc, eina_accessor_list_simple); } =================================================================== RCS file: /cvs/e/e17/proto/eina/src/tests/eina_bench_array.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- eina_bench_array.c 12 Aug 2008 16:14:19 -0000 1.4 +++ eina_bench_array.c 13 Aug 2008 09:19:34 -0000 1.5 @@ -234,6 +234,73 @@ } static void +eina_bench_list_4evas_render_iterator(int request) +{ + Eina_List *list = NULL; + Eina_List *tmp; + Eina_Bench_Object *ebo; + Eina_Iterator *it; + int i; + int j; + + eina_list_init(); + + for (i = 0; i < 1000; ++i) + { + for (j = 0; j < request; ++j) + { + ebo = malloc(sizeof (Eina_Bench_Object)); + if (!ebo) continue ; + + ebo->keep = rand() < (RAND_MAX / 2) ? EINA_TRUE : EINA_FALSE; + + list = eina_list_prepend(list, ebo); + } + + if (i == 500) + { + while (list) + { + free(eina_list_data(list)); + list = eina_list_remove_list(list, list); + } + } + else + { + if (i % 30 == 0) + { + tmp = list; + while (tmp) + { + Eina_List *reminder = tmp; + + ebo = eina_list_data(reminder); + tmp = eina_list_next(tmp); + + if (ebo->keep == EINA_FALSE) + { + list = eina_list_remove_list(list, reminder); + free(ebo); + } + } + } + } + + it = eina_list_iterator_new(list); + eina_iterator_foreach(it, EINA_EACH(eina_iterator_ebo_rand), NULL); + eina_iterator_free(it); + } + + while (list) + { + free(eina_list_data(list)); + list = eina_list_remove_list(list, list); + } + + eina_list_shutdown(); +} + +static void eina_bench_inlist_4evas_render(int request) { Eina_Inlist *head = NULL; @@ -362,6 +429,7 @@ eina_bench_register(bench, "array-inline", EINA_BENCH(eina_bench_array_4evas_render_inline), 200, 4000, 100); eina_bench_register(bench, "array-iterator", EINA_BENCH(eina_bench_array_4evas_render_iterator), 200, 4000, 100); eina_bench_register(bench, "list", EINA_BENCH(eina_bench_list_4evas_render), 200, 4000, 100); + eina_bench_register(bench, "list-iterator", EINA_BENCH(eina_bench_list_4evas_render_iterator), 200, 4000, 100); eina_bench_register(bench, "inlist", EINA_BENCH(eina_bench_inlist_4evas_render), 200, 4000, 100); eina_bench_register(bench, "inlist-iterator", EINA_BENCH(eina_bench_inlist_4evas_render_iterator), 200, 4000, 100); } ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs