forked from enlightenment/efl
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.
This commit is contained in:
parent
290b3d8926
commit
5ba58353f0
|
@ -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(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);
|
||||
|
||||
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);
|
||||
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.
|
||||
*
|
||||
* very ugly code below - test case only!
|
||||
* 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.
|
||||
*
|
||||
* 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);
|
||||
|
|
Loading…
Reference in New Issue