Enlightenment CVS committal

Author  : pfritz
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src/bin/tests/container


Modified Files:
        ewl_container_test.c 


Log Message:
add unit tests for container

===================================================================
RCS file: /cvs/e/e17/libs/ewl/src/bin/tests/container/ewl_container_test.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- ewl_container_test.c        28 Jul 2008 00:47:49 -0000      1.4
+++ ewl_container_test.c        6 Aug 2008 18:40:42 -0000       1.5
@@ -8,12 +8,31 @@
 #include <stdlib.h>
 
 /* unit tests */
-static int constructor_test(char *buf, int len);
-static int switch_parents(char *buf, int len);
+static int test_constructor(char *buf, int len);
+static int test_parents_switch(char *buf, int len);
+static int test_child_append(char *buf, int len);
+static int test_child_prepend(char *buf, int len);
+static int test_child_index_get(char *buf, int len);
+static int test_child_index_internal_get(char *buf, int len);
+static int test_child_count_internal_get(char *buf, int len);
+static int test_child_at_get(char *buf, int len);
+static int test_reset(char *buf, int len);
+//static int test_largest_sum_prefer(char *buf, int len);
+static int test_redirect_set_get(char *buf, int len);
+
 
 static Ewl_Unit_Test container_unit_tests[] = {
-                {"constructor", constructor_test, NULL, -1, 0},
-                {"switch parents", switch_parents, NULL, -1, 0},
+                {"constructor", test_constructor, NULL, -1, 0},
+                {"switch parents", test_parents_switch, NULL, -1, 0},
+                {"Child append", test_child_append, NULL, -1, 0},
+                {"Child prepend", test_child_prepend, NULL, -1, 0},
+                {"Child index get", test_child_index_get, NULL, -1, 0},
+                {"Child internal index get", test_child_index_internal_get, 
NULL, -1, 0},
+                {"Child internal child count", test_child_count_internal_get, 
NULL, -1, 0},
+                {"Child at get", test_child_at_get, NULL, -1, 0},
+                {"Reset", test_reset, NULL, -1, 0},
+                //{"Largest/sum prefer", test_largest_sum_prefer, NULL, -1, 0},
+                {"Redirect set get", test_redirect_set_get, NULL, -1, 0},
                 {NULL, NULL, NULL, -1, 0}
         };
 
@@ -28,13 +47,12 @@
 }
 
 static int
-constructor_test(char *buf, int len)
+test_constructor(char *buf, int len)
 {
         Ewl_Widget *c;
         int ret = 0;
 
-        c = NEW(Ewl_Container, 1);
-        ewl_container_init(EWL_CONTAINER(c));
+        c = ewl_container_new();
 
         if (!EWL_CONTAINER_IS(c))
         {
@@ -56,7 +74,7 @@
 }
 
 static int
-switch_parents(char *buf, int len)
+test_parents_switch(char *buf, int len)
 {
         Ewl_Widget *p1, *p2, *w;
 
@@ -86,4 +104,436 @@
         return TRUE;
 }
 
+static int 
+test_child_append(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+        Ecore_List *list;
+
+        c = ewl_container_new();
+        list = ecore_list_new();
+        
+        for (i = 0; i < 10; i++)
+        {
+                w = ewl_widget_new();
+                ewl_container_child_append(EWL_CONTAINER(c), w);
+                ecore_list_append(list, w);
+        }
+
+        ecore_list_first_goto(list);
+        ewl_container_child_iterate_begin(EWL_CONTAINER(c));
+        while ((w = ewl_container_child_next(EWL_CONTAINER(c))))
+        {
+                if (w != ecore_list_next(list))
+                {
+                        ret = 0;
+                        LOG_FAILURE(buf, len, "The order of the appended 
widets"
+                                        " and of the presend widgets differ");
+                        break;
+                }
+        }
+
+        ewl_widget_destroy(c);
+        ecore_list_destroy(list);
+
+        return ret;
+}
+
+static int 
+test_child_prepend(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+        Ecore_List *list;
+
+        c = ewl_container_new();
+        list = ecore_list_new();
+        
+        for (i = 0; i < 10; i++)
+        {
+                w = ewl_widget_new();
+                ewl_container_child_prepend(EWL_CONTAINER(c), w);
+                ecore_list_prepend(list, w);
+        }
+
+        ecore_list_first_goto(list);
+        ewl_container_child_iterate_begin(EWL_CONTAINER(c));
+        while ((w = ewl_container_child_next(EWL_CONTAINER(c))))
+        {
+                if (w != ecore_list_next(list))
+                {
+                        ret = 0;
+                        LOG_FAILURE(buf, len, "The order of the prepended 
widets"
+                                        " and of the presend widgets differ");
+                        break;
+                }
+        }
+
+        ewl_widget_destroy(c);
+        ecore_list_destroy(list);
+
+        return ret;
+}
+
+//static int test_child_insert(char *buf, int len);
+//static int test_child_internal_insert(char *buf, int len);
+static int
+test_child_index_get(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+        Ecore_List *list;
+
+        c = ewl_container_new();
+        list = ecore_list_new();
+        
+        for (i = 0; i < 30; i++)
+        {
+                w = ewl_widget_new();
+
+                if ((i % 2))
+                        ewl_widget_internal_set(w, TRUE);
+                else
+                        ecore_list_prepend(list, w);
+                ewl_container_child_prepend(EWL_CONTAINER(c), w);
+        }
+
+        i = 0;
+        ecore_list_first_goto(list);
+        while ((w = ecore_list_next(list)))
+        {
+                int index = ewl_container_child_index_get(EWL_CONTAINER(c), w);
+
+                if (i != index)
+                {
+                        ret = 0;
+                        LOG_FAILURE(buf, len, "Returned Index %i is incorrect,"
+                                        " it should be %i", index, i);
+                        break;
+                }
+                i++;
+        }
+
+        ewl_widget_destroy(c);
+        ecore_list_destroy(list);
+
+        return ret;
+}
+
+static int
+test_child_index_internal_get(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+        Ecore_List *list;
+
+        c = ewl_container_new();
+        list = ecore_list_new();
+        
+        for (i = 0; i < 30; i++)
+        {
+                w = ewl_widget_new();
+
+                if ((i % 2))
+                        ewl_widget_internal_set(w, TRUE);
+                ecore_list_prepend(list, w);
+                ewl_container_child_prepend(EWL_CONTAINER(c), w);
+        }
+
+        i = 0;
+        ecore_list_first_goto(list);
+        while ((w = ecore_list_next(list)))
+        {
+                int index = ewl_container_child_index_internal_get(
+                                EWL_CONTAINER(c), w);
+
+                if (i != index)
+                {
+                        ret = 0;
+                        LOG_FAILURE(buf, len, "Returned Index %i is incorrect,"
+                                        " it should be %i", index, i);
+                        break;
+                }
+                i++;
+        }
+
+        ewl_widget_destroy(c);
+        ecore_list_destroy(list);
+
+        return ret;
+}
+
+//static int test_child_iterate(char *buf, int len);
+static int
+test_child_count_internal_get(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+        int not_internal = 0;
+
+        c = ewl_container_new();
+        
+        for (i = 0; i < 30; i++)
+        {
+                w = ewl_widget_new();
+
+                if ((i % 2))
+                        ewl_widget_internal_set(w, TRUE);
+                else
+                        not_internal++;
+                ewl_container_child_prepend(EWL_CONTAINER(c), w);
+        }
+
+        if (i != ewl_container_child_count_internal_get(EWL_CONTAINER(c)))
+        {
+                ret = 0;
+                LOG_FAILURE(buf, len, "Returned internal child count %i is "
+                                "incorrect, it should be %i", 
+                                ewl_container_child_count_internal_get(
+                                                        EWL_CONTAINER(c)),
+                                i);
+                goto DONE;
+        }
+        if (not_internal != ewl_container_child_count_get(EWL_CONTAINER(c)))
+        {
+                ret = 0;
+                LOG_FAILURE(buf, len, "Returned child count %i is incorrect,"
+                                " it should be %i", 
+                                
ewl_container_child_count_get(EWL_CONTAINER(c)),
+                                not_internal);
+                goto DONE;
+        }
+
+DONE:
+        ewl_widget_destroy(c);
+
+        return ret;
+}
+
+static int 
+test_child_at_get(char *buf, int len)
+{
+        Ewl_Widget *c;
+        Ewl_Widget *w1, *w2, *w3, *w4;
+        Ewl_Widget *found;
+        int ret = 0;
+
+        c = ewl_container_new();
+        ewl_object_size_request(EWL_OBJECT(c), 100, 100);
+        ewl_widget_show(c);
+
+        /* We place now the widget that it looks like that:
+         *  +----+----+
+         *  | w1 | w2 |
+         *  +------+--+
+         *  | w3 | w4 |
+         *  +----+----+
+         */
+        w1 = ewl_widget_new();
+        ewl_container_child_append(EWL_CONTAINER(c), w1);
+        ewl_object_place(EWL_OBJECT(w1), 0, 0, 50, 50);
+        ewl_widget_show(w1);
+
+        w2 = ewl_widget_new();
+        ewl_container_child_append(EWL_CONTAINER(c), w2);
+        ewl_object_place(EWL_OBJECT(w2), 50, 0, 50, 50);
+        ewl_widget_show(w2);
+
+        w3 = ewl_widget_new();
+        ewl_container_child_append(EWL_CONTAINER(c), w3);
+        ewl_object_place(EWL_OBJECT(w3), 0, 50, 50, 50);
+
+        w4 = ewl_widget_new();
+        ewl_container_child_append(EWL_CONTAINER(c), w4);
+        ewl_object_place(EWL_OBJECT(w4), 50, 50, 50, 50);
+        ewl_widget_show(w4);
+
+        found = ewl_container_child_at_get(EWL_CONTAINER(c), 25, 25);
+        if (found != w1)
+        {
+                LOG_FAILURE(buf, len, "Do not find widget 1");
+                goto DONE;
+        }
+        found = ewl_container_child_at_get(EWL_CONTAINER(c), 75, 25);
+        if (found != w2)
+        {
+                LOG_FAILURE(buf, len, "Do not find widget 2");
+                goto DONE;
+        }
+        found = ewl_container_child_at_get(EWL_CONTAINER(c), 25, 75);
+        /* we shouldn't find it because it is not shown */
+        if (found == w3)
+        {
+                LOG_FAILURE(buf, len, "We found widget 3");
+                goto DONE;
+        }
+        found = ewl_container_child_at_get(EWL_CONTAINER(c), 75, 75);
+        if (found != w4)
+        {
+                LOG_FAILURE(buf, len, "Do not find widget 4");
+                goto DONE;
+        }
+        ret = 1;
+DONE:
+        ewl_widget_destroy(c);
+        return ret;
+
+}
+
+static int
+test_reset(char *buf, int len)
+{
+        Ewl_Widget *c, *w;
+        int i, ret = 1;
+
+        c = ewl_container_new();
+        
+        for (i = 0; i < 30; i++)
+        {
+                w = ewl_widget_new();
+                ewl_container_child_prepend(EWL_CONTAINER(c), w);
+        }
+
+        ewl_container_reset(EWL_CONTAINER(c));
+        if (ewl_container_child_count_get(EWL_CONTAINER(c)) != 0)
+        {
+                LOG_FAILURE(buf, len, "The container is not emty after reset");
+                ret = 0;
+        }
+
+        ewl_widget_destroy(c);
+
+        return ret;
+}
+
+/* largest and sum prefer works only for realized widgets */
+#if 0
+static int
+test_largest_sum_prefer(char *buf, int len)
+{
+        int i = 0;
+        int ret = 0;
+        struct {
+                int width;
+                int height;
+                unsigned char visible;
+        } sizes[] = {
+                {20, 30, 1},
+                { 1, 63, 0},
+                {25, 25, 1},
+                {21, 36, 1},
+                {45, 45, 1},
+                {65, 85, 0},
+                {48, 52, 1},
+                { 0,  0, 0}
+        };
+
+        const int sum_w = 159;
+        const int sum_h = 188;
+        const int largest_w = 48;
+        const int largest_h = 52;
+
+        Ewl_Widget *c;
+
+        c = ewl_container_new();
+        ewl_object_fill_policy_set(EWL_OBJECT(c), EWL_FLAG_FILL_FILL);
+        ewl_widget_show(c);
+
+        for (i = 0; sizes[i].width != 0; i++)
+        {
+                Ewl_Widget *w;
+
+                w = ewl_widget_new();
+                ewl_object_preferred_inner_size_set(EWL_OBJECT(w), 
+                                                        sizes[i].width,
+                                                        sizes[i].height);
+                ewl_container_child_append(EWL_CONTAINER(c), w);
+
+                if (sizes[i].visible)
+                        ewl_widget_show(w);
+        }
+
+        ewl_container_sum_prefer(EWL_CONTAINER(c), EWL_ORIENTATION_HORIZONTAL);
+        if (ewl_object_preferred_w_get(EWL_OBJECT(c)) != sum_w)
+        {
+                LOG_FAILURE(buf, len, "sum of preferred width is %d, but it "
+                                "should be %d", ewl_object_preferred_w_get(
+                                                        EWL_OBJECT(c)), sum_w);
+                goto DONE;
+        }
+
+        ewl_container_sum_prefer(EWL_CONTAINER(c), EWL_ORIENTATION_VERTICAL);
+        if (ewl_object_preferred_h_get(EWL_OBJECT(c)) != sum_h)
+        {
+                LOG_FAILURE(buf, len, "sum of preferred height is %d, but it "
+                                "should be %d", ewl_object_preferred_h_get(
+                                                        EWL_OBJECT(c)), sum_h);
+                goto DONE;
+        }
+
+        ewl_container_largest_prefer(EWL_CONTAINER(c), 
+                                        EWL_ORIENTATION_HORIZONTAL);
+        if (ewl_object_preferred_w_get(EWL_OBJECT(c)) != largest_w)
+        {
+                LOG_FAILURE(buf, len, "largest width is %d, but it "
+                                "should be %d", ewl_object_preferred_w_get(
+                                                        EWL_OBJECT(c)),
+                                largest_w);
+                goto DONE;
+        }
+
+        ewl_container_largest_prefer(EWL_CONTAINER(c), 
+                                        EWL_ORIENTATION_VERTICAL);
+        if (ewl_object_preferred_h_get(EWL_OBJECT(c)) != largest_h)
+        {
+                LOG_FAILURE(buf, len, "largest height is %d, but it "
+                                "should be %d", ewl_object_preferred_h_get(
+                                                        EWL_OBJECT(c)),
+                                largest_h);
+                goto DONE;
+        }
+
+        ret = 1;
+DONE:
+        ewl_widget_destroy(c);
+        return ret;
+}
+#endif
+
+static int test_redirect_set_get(char *buf, int len)
+{
+        Ewl_Widget *c1, *c2, *w;
+        int ret = 0;
+
+        c1 = ewl_container_new();
+        c2 = ewl_container_new();
+        ewl_container_child_append(EWL_CONTAINER(c1), c2);
+
+        ewl_container_redirect_set(EWL_CONTAINER(c1), EWL_CONTAINER(c2));
+
+        if (ewl_container_redirect_get(EWL_CONTAINER(c1)) != EWL_CONTAINER(c2))
+        {
+                LOG_FAILURE(buf, len, "returned redirect container differs "
+                                "from the set one");
+                goto DONE;
+        }
+
+        w = ewl_widget_new();
+        ewl_container_child_append(EWL_CONTAINER(c1), w);
+
+        /* this widget needs to be in the container c2 now */
+        ewl_container_child_iterate_begin(EWL_CONTAINER(c2));
+        if (ewl_container_child_next(EWL_CONTAINER(c2)) != w)
+        {
+                LOG_FAILURE(buf, len, "added child is not part of the redirect 
"
+                                "container");
+                goto DONE;
+        }
+
+        ret = 1;
+DONE:
+        ewl_widget_destroy(c1);
+        return ret;
+}
 



-------------------------------------------------------------------------
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