jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=5ba58353f006d54f096c371e9c773d24cf4263cc

commit 5ba58353f006d54f096c371e9c773d24cf4263cc
Author: Jean-Philippe Andre <[email protected]>
Date:   Mon May 9 14:37:22 2016 +0900

    Edje: Fix test case to show proper use of part APIs
    
    The one and only valid use case is calling a function directly on
    the part handle, like:
      func(part_get(obj, "part"), args).
    
    This does not change the actual proxy object lifecycle or resolve
    any potential issues, but this should clear up things in terms
    of scope for proper (supported) use.
    
    efl_content_get may become efl_part() and return a temporary object,
    valid for a single function call. Those are "details" still to be
    refined.
---
 src/tests/edje/edje_test_edje.c | 88 ++++++++++++++++++++---------------------
 1 file changed, 43 insertions(+), 45 deletions(-)

diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c
index 71969b0..bcd36f1 100644
--- a/src/tests/edje/edje_test_edje.c
+++ b/src/tests/edje/edje_test_edje.c
@@ -499,7 +499,6 @@ START_TEST(edje_test_box_eoapi)
    Evas *evas;
    Evas_Object *obj, *sobj, *sobjs[5];
    Eina_Iterator *it;
-   Eo *box;
    int i;
 
    evas = EDJE_TEST_INIT_EVAS();
@@ -514,17 +513,14 @@ START_TEST(edje_test_box_eoapi)
      }
 
    /* same test case as legacy api above */
-   box = efl_content_get(obj, "box");
-   fail_if(!box);
-
-   efl_pack_end(box, sobjs[3]);
-   efl_pack_begin(box, sobjs[1]);
-   efl_pack_before(box, sobjs[0], sobjs[1]);
-   efl_pack_after(box, sobjs[4], sobjs[3]);
-   efl_pack_at(box, sobjs[2], 2);
-   fail_if(efl_content_count(box) != 5);
-
-   it = efl_content_iterate(box);
+   efl_pack_end(efl_content_get(obj, "box"), sobjs[3]);
+   efl_pack_begin(efl_content_get(obj, "box"), sobjs[1]);
+   efl_pack_before(efl_content_get(obj, "box"), sobjs[0], sobjs[1]);
+   efl_pack_after(efl_content_get(obj, "box"), sobjs[4], sobjs[3]);
+   efl_pack_at(efl_content_get(obj, "box"), sobjs[2], 2);
+   fail_if(efl_content_count(efl_content_get(obj, "box")) != 5);
+
+   it = efl_content_iterate(efl_content_get(obj, "box"));
    i = 0;
    EINA_ITERATOR_FOREACH(it, sobj)
      fail_if(sobj != sobjs[i++]);
@@ -532,29 +528,27 @@ START_TEST(edje_test_box_eoapi)
    eina_iterator_free(it);
 
    /* clear up and test a bit more */
-   efl_pack_unpack_all(box);
-   fail_if(efl_content_count(box) != 0);
+   efl_pack_unpack_all(efl_content_get(obj, "box"));
+   fail_if(efl_content_count(efl_content_get(obj, "box")) != 0);
 
-   efl_pack(box, sobjs[1]);
-   efl_pack_at(box, sobjs[0], 0);
-   efl_pack_at(box, sobjs[2], -1);
-   it = efl_content_iterate(box);
+   efl_pack(efl_content_get(obj, "box"), sobjs[1]);
+   efl_pack_at(efl_content_get(obj, "box"), sobjs[0], 0);
+   efl_pack_at(efl_content_get(obj, "box"), sobjs[2], -1);
+   it = efl_content_iterate(efl_content_get(obj, "box"));
    i = 0;
    EINA_ITERATOR_FOREACH(it, sobj)
      fail_if(sobj != sobjs[i++]);
    fail_if(i != 3);
    eina_iterator_free(it);
 
-   fail_if(!efl_content_remove(box, sobjs[0]));
-   fail_if(efl_content_count(box) != 2);
-   fail_if(!efl_pack_unpack_at(box, 1));
-   fail_if(efl_content_count(box) != 1);
-   fail_if(efl_pack_index_get(box, sobjs[1]) != 0);
+   fail_if(!efl_content_remove(efl_content_get(obj, "box"), sobjs[0]));
+   fail_if(efl_content_count(efl_content_get(obj, "box")) != 2);
+   fail_if(!efl_pack_unpack_at(efl_content_get(obj, "box"), 1));
+   fail_if(efl_content_count(efl_content_get(obj, "box")) != 1);
+   fail_if(efl_pack_index_get(efl_content_get(obj, "box"), sobjs[1]) != 0);
 
-   efl_pack_clear(box);
-   fail_if(efl_content_count(box) != 0);
-
-   eo_del(box);
+   efl_pack_clear(efl_content_get(obj, "box"));
+   fail_if(efl_content_count(efl_content_get(obj, "box")) != 0);
 
    EDJE_TEST_FREE_EVAS();
 }
@@ -640,7 +634,6 @@ START_TEST(edje_test_table_eoapi)
    Evas *evas;
    Evas_Object *obj, *sobj, *sobjs[4];
    Eina_Iterator *it;
-   Eo *table, *other;
    int i, k, l, cs, rs, cols, rows;
 
    evas = EDJE_TEST_INIT_EVAS();
@@ -648,11 +641,8 @@ START_TEST(edje_test_table_eoapi)
    obj = edje_object_add(evas);
    fail_unless(edje_object_file_set(obj, test_layout_get("test_table.edj"), 
"test_group"));
 
-   table = efl_content_get(obj, "table");
-   fail_if(!table);
-
    /* check items from EDC */
-   fail_if(efl_content_count(table) != 4);
+   fail_if(efl_content_count(efl_content_get(obj, "table")) != 4);
    for (l = 0; l < 2; l++)
      for (k = 0; k < 2; k++)
        {
@@ -661,7 +651,7 @@ START_TEST(edje_test_table_eoapi)
 
           /* items have a text part "text" containing their position */
           sprintf(buf, "%d,%d", k, l);
-          sobj = efl_pack_grid_content_get(table, k, l);
+          sobj = efl_pack_grid_content_get(efl_content_get(obj, "table"), k, 
l);
           fail_if(!sobj);
           //txt = efl_part_text_get(sobj, "text");
           txt = edje_object_part_text_get(sobj, "text");
@@ -676,16 +666,16 @@ START_TEST(edje_test_table_eoapi)
           i = l*2 + k;
           sobjs[i] = eo_add(EVAS_RECTANGLE_CLASS, evas);
           fail_if(!sobjs[i]);
-          efl_pack_grid(table, sobjs[i], k, l + 2, 1, 1);
+          efl_pack_grid(efl_content_get(obj, "table"), sobjs[i], k, l + 2, 1, 
1);
        }
 
-   fail_if(efl_content_count(table) != 8);
+   fail_if(efl_content_count(efl_content_get(obj, "table")) != 8);
 
    i = 0;
-   it = efl_content_iterate(table);
+   it = efl_content_iterate(efl_content_get(obj, "table"));
    EINA_ITERATOR_FOREACH(it, sobj)
      {
-        efl_pack_grid_position_get(table, sobj, &k, &l, &cs, &rs);
+        efl_pack_grid_position_get(efl_content_get(obj, "table"), sobj, &k, 
&l, &cs, &rs);
         fail_if(cs != 1);
         fail_if(rs != 1);
         if (l >= 2)
@@ -696,24 +686,32 @@ START_TEST(edje_test_table_eoapi)
    fail_if(i != 8);
 
    /* table size and clear */
-   efl_pack_grid_size_get(table, &cols, &rows);
+   efl_pack_grid_size_get(efl_content_get(obj, "table"), &cols, &rows);
    fail_if(cols != 2);
    fail_if(rows != 4);
 
-   efl_pack_clear(table);
-   fail_if(efl_content_count(table) != 4);
+   efl_pack_clear(efl_content_get(obj, "table"));
+   fail_if(efl_content_count(efl_content_get(obj, "table")) != 4);
 
-   efl_pack_grid_size_get(table, &cols, &rows);
+   efl_pack_grid_size_get(efl_content_get(obj, "table"), &cols, &rows);
    fail_if(cols != 2);
    fail_if(rows != 2);
 
 
-   /* test proxy object references
-    * exact reference count is not part of API,
-    * only lifecycle of object matters
+   /* Test proxy object lifecycle.
+    *
+    * Note: Some things below this point may break if the implementation
+    * changes, that's OK. We only want to provide a certain level of safety
+    * against misuse. Only the above use case is correct.
     *
-    * very ugly code below - test case only!
+    * Pretty much everything below this point is a misuse of the API.
     */
+
+   Eo *table, *other;
+
+   table = efl_content_get(obj, "table");
+   fail_if(!table);
+
    i = eo_ref_get(table);
    fail_if(i != 1);
    eo_del(table);

-- 


Reply via email to