Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/bin


Modified Files:
        main.c 


Log Message:
Hook in progress bar for unit tests.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/bin/main.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -3 -r1.15 -r1.16
--- main.c      10 Mar 2006 18:40:45 -0000      1.15
+++ main.c      11 Mar 2006 07:19:54 -0000      1.16
@@ -7,6 +7,7 @@
 #include <fcntl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <Ecore.h>
 #include <Ecore_File.h>
 #include <Ecore_Data.h>
 
@@ -23,12 +24,15 @@
 static void fill_source_text(Ewl_Test *test);
 static void setup_unit_tests(Ewl_Test *test);
 
+static int ewl_test_cb_unit_test_timer(void *data);
 static void ewl_test_cb_delete_window(Ewl_Widget *w, void *ev, void *data);
 static void ewl_test_cb_exit(Ewl_Widget *w, void *ev, void *data);
 static void cb_run_unit_tests(Ewl_Widget *w, void *ev, void *data);
 
 static Ecore_List *tests = NULL;
 static int window_count = 0;
+static int current_unit_test = 0;
+static Ecore_Timer *unit_test_timer = NULL;
 
 int
 main(int argc, char **argv)
@@ -97,6 +101,44 @@
        return 0;
 }
 
+static int
+ewl_test_cb_unit_test_timer(void *data)
+{
+       char buf[1024];
+       char *entries[3];
+       Ewl_Widget *tree;
+       Ewl_Unit_Test *unit_tests = data;
+
+       tree = ewl_widget_name_find("unit_test_tree");
+
+       if (unit_tests[current_unit_test].func)
+       {
+               int ret;
+               Ewl_Widget *progress;
+
+               ret = unit_tests[current_unit_test].func(buf, sizeof(buf));
+
+               progress = ewl_widget_name_find("unit_test_progress");
+
+               entries[0] = (char *)unit_tests[current_unit_test].name;
+               entries[1] = (ret ? "PASS" : "FAIL");
+               entries[2] = (ret ? "" : buf);
+               ewl_tree_text_row_add(EWL_TREE(tree), NULL, entries);
+
+               ewl_progressbar_value_set(EWL_PROGRESSBAR(progress),
+                               (double)(++current_unit_test));
+       }
+       else
+       {
+               ecore_timer_del(unit_test_timer);
+               unit_test_timer = NULL;
+               current_unit_test = 0;
+               return 0;
+       }
+
+       return 1;
+}
+
 static void
 ewl_test_cb_delete_window(Ewl_Widget *w, void *ev __UNUSED__, 
                                void *data __UNUSED__)
@@ -488,28 +530,29 @@
 static void
 cb_run_unit_tests(Ewl_Widget *w, void *ev __UNUSED__, void *data __UNUSED__)
 {
+       int i;
        Ewl_Test *test;
        Ewl_Widget *tree;
-       char *entries[3];
-       char buf[1024];
-       int i;
+       Ewl_Widget *progress;
+
+       tree = ewl_widget_name_find("unit_test_tree");
+       ewl_container_reset(EWL_CONTAINER(tree));
 
        test = ewl_widget_data_get(w, "test");
        if ((!test) || (!test->unit_tests)) return;
 
-       tree = ewl_widget_name_find("unit_test_tree");
-       ewl_container_reset(EWL_CONTAINER(tree));
+       for (i = 0; test->unit_tests[i].func; i++);
 
-       for (i = 0; test->unit_tests[i].func; i++)
-       {
-               int ret;
-               ret = test->unit_tests[i].func(buf, sizeof(buf));
+       progress = ewl_widget_name_find("unit_test_progress");
+       ewl_progressbar_range_set(EWL_PROGRESSBAR(progress), (double)(i));
+       ewl_progressbar_value_set(EWL_PROGRESSBAR(progress), 0.0);
 
-               entries[0] = (char *)test->unit_tests[i].name;
-               entries[1] = (ret ? "PASS" : "FAIL");
-               entries[2] = (ret ? "" : buf);
-               ewl_tree_text_row_add(EWL_TREE(tree), NULL, entries);
+       if (unit_test_timer) {
+               ecore_timer_del(unit_test_timer);
+               current_unit_test = 0;
        }
+
+       unit_test_timer = ecore_timer_add(0.1, ewl_test_cb_unit_test_timer, 
test->unit_tests);
 }
 
 




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to