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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs