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

Reply via email to