diff options
Diffstat (limited to 'src/tests/edje/edje_test_edje.c')
-rw-r--r-- | src/tests/edje/edje_test_edje.c | 830 |
1 files changed, 50 insertions, 780 deletions
diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index 6432062917..15e42f1243 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -8,29 +8,18 @@ #define EFL_GFX_FILTER_BETA #define EFL_CANVAS_LAYOUT_BETA -#include <Eina.h> -#include <Edje.h> - #include "edje_suite.h" -#include "edje_tests_helpers.h" #define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" -START_TEST(edje_test_edje_init) +EFL_START_TEST(edje_test_edje_init) { - int ret; - - ret = edje_init(); - fail_if(ret != 1); - - ret = edje_shutdown(); - fail_if(ret != 0); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_edje_load) +EFL_START_TEST(edje_test_edje_load) { - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Edje_Load_Error error; Evas_Object *obj; @@ -39,23 +28,13 @@ START_TEST(edje_test_edje_load) error = edje_object_load_error_get(obj); fail_if(error != EDJE_LOAD_ERROR_DOES_NOT_EXIST); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -static const char * -test_layout_get(const char *name) +EFL_START_TEST(edje_test_load_simple_layout) { - static char filename[PATH_MAX]; - - snprintf(filename, PATH_MAX, TESTS_BUILD_DIR"/data/%s", name); - - return filename; -} - -START_TEST(edje_test_load_simple_layout) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Evas_Object *obj; obj = edje_object_add(evas); @@ -65,15 +44,15 @@ START_TEST(edje_test_load_simple_layout) fail_unless(edje_object_part_exists(obj, "background")); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_simple_layout_geometry) +EFL_START_TEST(edje_test_simple_layout_geometry) { int x, y, w, h; int r, g, b, a; - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Evas_Object *obj; const Evas_Object *bg; @@ -94,14 +73,14 @@ START_TEST(edje_test_simple_layout_geometry) evas_object_color_get(bg, &r, &g, &b, &a); fail_if(r != 255 || g != 255 || b != 255 || a != 255); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_complex_layout) +EFL_START_TEST(edje_test_complex_layout) { int x, y, w, h; - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Evas_Object *obj; obj = edje_object_add(evas); @@ -142,14 +121,14 @@ START_TEST(edje_test_complex_layout) fail_if(x != 5 || y != 500+2); fail_if(w != 1000-5-5 + 1 || h != 500-5-2 + 1); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_calculate_parens) +EFL_START_TEST(edje_test_calculate_parens) { int x, y, w, h; - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Evas_Object *obj; Eina_Rect rect; @@ -165,263 +144,13 @@ START_TEST(edje_test_calculate_parens) edje_object_part_geometry_get(obj, "background", &x, &y, &w, &h); fail_if(x != 0 || y != 0 || w != 100 || h != 100); - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_masking) -{ - int x, y, w, h; - Evas *evas = EDJE_TEST_INIT_EVAS(); - const Evas_Object *sub, *clip2, *clip; - Evas_Object *obj; - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_masking.edj"), "test_group")); - - evas_object_resize(obj, 100, 100); - edje_object_part_geometry_get(obj, "background", &x, &y, &w, &h); - fail_if(x != 0 || y != 0 || w != 100 || h != 100); - - clip = edje_object_part_object_get(obj, "clip2"); - fail_if(!clip); - - /* check value of no_render flag as seen from evas land */ - sub = edje_object_part_object_get(obj, "mask"); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* check that text has a clip (based on description.clip_to) */ - sub = edje_object_part_object_get(obj, "text"); - fail_if(!efl_canvas_object_clip_get(sub)); - - /* test description.clip_to override */ - sub = edje_object_part_object_get(obj, "noclip"); - clip2 = efl_canvas_object_clip_get(sub); - fail_if(clip != clip2); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_filters) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); - const Evas_Object *text, *sub; - Evas_Object *obj, *src = NULL; - const char *prg, *name; - - setenv("EVAS_DATA_DIR", EVAS_DATA_DIR, 1); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_filters.edj"), "test_group")); - - evas_object_resize(obj, 200, 200); - - /* check value of no_render flag as seen from evas land */ - sub = edje_object_part_object_get(obj, "mask"); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* check no_render inheritance */ - sub = edje_object_part_object_get(obj, "mask2"); - fail_if(efl_canvas_object_no_render_get(sub)); - sub = edje_object_part_object_get(obj, "mask3"); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* text part: check filter status */ - text = edje_object_part_object_get(obj, "text"); - fail_if(!text); - - efl_gfx_filter_program_get(text, &prg, &name); - fail_if(!prg); - fail_if(!name || strcmp(name, "filterfile")); - - src = efl_gfx_filter_source_get(text, "mask"); - fail_if(!src); - - // TODO: Verify properly that the filter runs well - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_snapshot) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); - const Evas_Object *sub; - Evas_Object *obj; - - setenv("EVAS_DATA_DIR", EVAS_DATA_DIR, 1); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_snapshot.edj"), "test_group")); - - evas_object_resize(obj, 200, 200); - - /* check value of no_render flag as seen from evas land */ - sub = edje_object_part_object_get(obj, "snap"); - fail_if(!efl_isa(sub, EFL_CANVAS_SNAPSHOT_CLASS) && - !evas_object_image_snapshot_get(sub)); - - // TODO: Verify that evas snapshot actually works (and has a filter) - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_size_class) -{ - int minw, minh, minw2, minh2; - Evas *evas = EDJE_TEST_INIT_EVAS(); - Eina_List *l; - Eina_Stringshare *name; - Evas_Object *obj, *obj2; - Eina_Bool b; - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_size_class.edj"), "test_group")); - - obj2 = edje_object_add(evas); - fail_unless(edje_object_file_set(obj2, test_layout_get("test_size_class.edj"), "test_group")); - - evas_object_resize(obj, 200, 200); - evas_object_resize(obj2, 200, 200); - - /* check predefined min size of rect part by edc */ - edje_object_part_geometry_get(obj, "rect", NULL, NULL, &minw, &minh); - fail_if(minw != 50 || minh != 50); - - /* check that edje_size_class_set works */ - b = edje_size_class_set("rect_size", 100, 100, -1, -1); - edje_object_part_geometry_get(obj, "rect", NULL, NULL, &minw, &minh); - edje_object_part_geometry_get(obj2, "rect", NULL, NULL, &minw2, &minh2); - fail_if(!b || minw != 100 || minh != 100 || minw2 != 100 || minh2 != 100); - - /* check that edje_size_class_get works */ - b = edje_size_class_get("rect_size", &minw, &minh, NULL, NULL); - fail_if(!b || minw != 100 || minh != 100); - - /* check that edje_size_class_list works */ - l = edje_size_class_list(); - EINA_LIST_FREE(l, name) - { - fail_if(strcmp(name, "rect_size")); - eina_stringshare_del(name); - } - - /* check that edje_object_size_class_set works */ - b = edje_object_size_class_set(obj, "rect_size", 150, 150, -1, -1); - edje_object_part_geometry_get(obj, "rect", NULL, NULL, &minw, &minh); - edje_object_part_geometry_get(obj2, "rect", NULL, NULL, &minw2, &minh2); - fail_if(!b || minw != 150 || minh != 150 || minw2 != 100 || minh2 != 100); - - /* check that edje_object_size_class_get works */ - b = edje_object_size_class_get(obj, "rect_size", &minw, &minh, NULL, NULL); - fail_if(!b || minw != 150 || minh != 150); - - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_color_class) +EFL_START_TEST(edje_test_access) { - Evas *evas = EDJE_TEST_INIT_EVAS(); - - Eina_File *f; - Eina_Iterator *it; - Edje_Color_Class *itcc, *cc = NULL; - char *filename; - - filename = realpath(test_layout_get("test_color_class.edj"), NULL); - fail_if(!filename); - - f = eina_file_open(filename, EINA_FALSE); - fail_if(!f); - - it = edje_mmap_color_class_iterator_new(f); - fail_if(!it); - EINA_ITERATOR_FOREACH(it, itcc) - { - if (!strcmp(itcc->name, "test_color_class")) - { - cc = itcc; - break; - } - } - fail_if((!cc) || (cc->r != 100) || (cc->g != 100) || (cc->b != 100) || (cc->a != 100)); - - eina_iterator_free(it); - eina_file_close(f); - free(filename); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_swallows) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); - Evas_Object *ly, *o1, *o2; - - ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas); - fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group")); - - fail_unless(edje_object_part_exists(ly, "swallow")); - - - o1 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly); - fail_if(!edje_object_part_swallow(ly, "swallow", o1)); - ck_assert_ptr_eq(efl_parent_get(o1), ly); - - edje_object_part_unswallow(ly, o1); - ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1)); - - fail_if(!edje_object_part_swallow(ly, "swallow", o1)); - ck_assert_ptr_eq(efl_parent_get(o1), ly); - - o2 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly); - fail_if(!edje_object_part_swallow(ly, "swallow", o2)); - ck_assert_ptr_eq(efl_parent_get(o2), ly); - /* o1 is deleted at this point. */ - ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1)); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_swallows_eoapi) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); - Evas_Object *ly, *o1, *o2; - - ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas); - fail_unless(edje_object_file_set(ly, test_layout_get("test_swallows.edj"), "test_group")); - - fail_unless(edje_object_part_exists(ly, "swallow")); - - - o1 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly); - fail_if(!efl_content_set(efl_part(ly, "swallow"), o1)); - ck_assert_ptr_eq(efl_parent_get(o1), ly); - - efl_content_remove(ly, o1); - ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1)); - - fail_if(!efl_content_set(efl_part(ly, "swallow"), o1)); - ck_assert_ptr_eq(efl_parent_get(o1), ly); - - o2 = efl_add(EFL_CANVAS_LAYOUT_CLASS, ly); - fail_if(!efl_content_set(efl_part(ly, "swallow"), o2)); - ck_assert_ptr_eq(efl_parent_get(o2), ly); - /* o1 is deleted at this point. */ - ck_assert_ptr_eq(efl_parent_get(o1), evas_object_evas_get(o1)); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_access) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); const char *name; Evas_Object *obj; Eina_Iterator *it; @@ -458,497 +187,52 @@ START_TEST(edje_test_access) } fail_if(i != 2); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_box) -{ - Evas *evas; - Evas_Object *obj, *sobj, *sobjs[5]; - const Evas_Object *box; - Eina_Iterator *it; - int i; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_box.edj"), "test_group")); - - for (i = 0; i < 5; i++) - { - sobjs[i] = evas_object_rectangle_add(evas); - fail_if(!sobjs[i]); - } - - edje_object_part_box_append(obj, "box", sobjs[3]); - edje_object_part_box_prepend(obj, "box", sobjs[1]); - edje_object_part_box_insert_before(obj, "box", sobjs[0], sobjs[1]); - edje_object_part_box_insert_after(obj, "box", sobjs[4], sobjs[3]); - edje_object_part_box_insert_at(obj, "box", sobjs[2], 2); - - box = edje_object_part_object_get(obj, "box"); - it = evas_object_box_iterator_new(box); - - i = 0; - EINA_ITERATOR_FOREACH(it, sobj) - { - fail_if(sobj != sobjs[i++]); - } - eina_iterator_free(it); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_box_eoapi) -{ - Evas *evas; - Evas_Object *obj, *sobj, *sobjs[5]; - Eina_Iterator *it; - int i; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_box.edj"), "test_group")); - - for (i = 0; i < 5; i++) - { - sobjs[i] = evas_object_rectangle_add(evas); - fail_if(!sobjs[i]); - } - - /* same test case as legacy api above */ - efl_pack_end(efl_part(obj, "box"), sobjs[3]); - efl_pack_begin(efl_part(obj, "box"), sobjs[1]); - efl_pack_before(efl_part(obj, "box"), sobjs[0], sobjs[1]); - efl_pack_after(efl_part(obj, "box"), sobjs[4], sobjs[3]); - efl_pack_at(efl_part(obj, "box"), sobjs[2], 2); - fail_if(efl_content_count(efl_part(obj, "box")) != 5); - - it = efl_content_iterate(efl_part(obj, "box")); - i = 0; - EINA_ITERATOR_FOREACH(it, sobj) - fail_if(sobj != sobjs[i++]); - fail_if(i != 5); - eina_iterator_free(it); - - /* clear up and test a bit more */ - efl_pack_unpack_all(efl_part(obj, "box")); - fail_if(efl_content_count(efl_part(obj, "box")) != 0); - - efl_pack(efl_part(obj, "box"), sobjs[1]); - efl_pack_at(efl_part(obj, "box"), sobjs[0], 0); - efl_pack_at(efl_part(obj, "box"), sobjs[2], -1); - it = efl_content_iterate(efl_part(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(efl_part(obj, "box"), sobjs[0])); - fail_if(efl_content_count(efl_part(obj, "box")) != 2); - fail_if(!efl_pack_unpack_at(efl_part(obj, "box"), 1)); - fail_if(efl_content_count(efl_part(obj, "box")) != 1); - fail_if(efl_pack_index_get(efl_part(obj, "box"), sobjs[1]) != 0); - - efl_pack_clear(efl_part(obj, "box")); - fail_if(efl_content_count(efl_part(obj, "box")) != 0); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_table) -{ - Evas *evas; - Evas_Object *obj, *sobj, *sobjs[4]; - int i, k, l, cols, rows; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_table.edj"), "test_group")); - - /* check items from EDC */ - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - const char *txt; - char buf[20]; - - /* items have a text part "text" containing their position */ - sprintf(buf, "%d,%d", k, l); - sobj = edje_object_part_table_child_get(obj, "table", k, l); - fail_if(!sobj); - txt = edje_object_part_text_get(sobj, "text"); - fail_if(!txt); - fail_if(strcmp(txt, buf) != 0); - } - - /* Add more items */ - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - i = l*2 + k; - sobjs[i] = evas_object_rectangle_add(evas); - fail_if(!sobjs[i]); - edje_object_part_table_pack(obj, "table", sobjs[i], k, l + 2, 1, 1); - } - - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - i = l*2 + k; - sobj = edje_object_part_table_child_get(obj, "table", k, l + 2); - fail_if(sobj != sobjs[i]); - } - - /* table size and clear */ - edje_object_part_table_col_row_size_get(obj, "table", &cols, &rows); - fail_if(cols != 2); - fail_if(rows != 4); - - edje_object_part_table_clear(obj, "table", EINA_TRUE); - - edje_object_part_table_col_row_size_get(obj, "table", &cols, &rows); - fail_if(cols != 2); - fail_if(rows != 2); - - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - const char *txt; - char buf[20]; - - /* items have a text part "text" containing their position */ - sprintf(buf, "%d,%d", k, l); - sobj = edje_object_part_table_child_get(obj, "table", k, l); - fail_if(!sobj); - txt = edje_object_part_text_get(sobj, "text"); - fail_if(!txt); - fail_if(strcmp(txt, buf) != 0); - } - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_table_eoapi) -{ - Evas *evas; - Evas_Object *obj, *sobj, *sobjs[4], *proxy; - Eina_Iterator *it; - int i, k, l, cs, rs, cols, rows; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_table.edj"), "test_group")); - - /* check items from EDC */ - fail_if(efl_content_count(efl_part(obj, "table")) != 4); - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - const char *txt; - char buf[20]; - - /* items have a text part "text" containing their position */ - sprintf(buf, "%d,%d", k, l); - sobj = efl_pack_table_content_get(efl_part(obj, "table"), k, l); - fail_if(!sobj); - //txt = efl_part_text_get(sobj, "text"); - txt = edje_object_part_text_get(sobj, "text"); - fail_if(!txt); - fail_if(strcmp(txt, buf) != 0); - } - - /* Add more items */ - for (l = 0; l < 2; l++) - for (k = 0; k < 2; k++) - { - i = l*2 + k; - sobjs[i] = efl_add(EFL_CANVAS_RECTANGLE_CLASS, evas); - fail_if(!sobjs[i]); - efl_pack_table(efl_part(obj, "table"), sobjs[i], k, l + 2, 1, 1); - } - - fail_if(efl_content_count(efl_part(obj, "table")) != 8); - - i = 0; - it = efl_content_iterate(efl_part(obj, "table")); - EINA_ITERATOR_FOREACH(it, sobj) - { - efl_pack_table_position_get(efl_part(obj, "table"), sobj, &k, &l, &cs, &rs); - fail_if(cs != 1); - fail_if(rs != 1); - if (l >= 2) - fail_if(sobj != sobjs[(l - 2)*2 + k]); - i++; - } - eina_iterator_free(it); - fail_if(i != 8); - - /* table size and clear */ - efl_pack_table_size_get(efl_part(obj, "table"), &cols, &rows); - fail_if(cols != 2); - fail_if(rows != 4); - - efl_pack_clear(efl_part(obj, "table")); - fail_if(efl_content_count(efl_part(obj, "table")) != 4); - - efl_pack_table_size_get(efl_part(obj, "table"), &cols, &rows); - fail_if(cols != 2); - fail_if(rows != 2); - - /* test multiple ops on a proxy object */ - proxy = efl_ref(efl_part(obj, "table")); - fail_if(!proxy); - fail_if(!efl_pack_clear(proxy)); - fail_if(efl_content_count(efl_part(obj, "table")) != 4); - fail_if(!efl_pack_clear(proxy)); - fail_if(efl_content_count(efl_part(obj, "table2")) != 1); - fail_if(efl_content_count(proxy) != 4); - efl_del(proxy); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_combine_keywords) +EFL_START_TEST(edje_test_combine_keywords) { Evas *evas; Evas_Object *obj; - evas = EDJE_TEST_INIT_EVAS(); + evas = _setup_evas(); obj = edje_object_add(evas); fail_unless(edje_object_file_set(obj, test_layout_get("test_combine_keywords.edj"), "test_group")); - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -static void -_message_signal_reply_cb(void *data, Evas_Object *obj EINA_UNUSED, - const char *emission, const char *source) -{ - int *id = data; - - fprintf(stderr, "source %s emit %s id %d\n", source, emission, *id); - fflush(stderr); - ck_assert_str_eq(source, "edc"); - ck_assert_ptr_ne(emission, NULL); - - if (!strncmp(emission, "int set", 7)) - ck_assert_str_eq(emission, "int set 7 12 42 255"); - else if (!strncmp(emission, "int", 3)) - ck_assert_str_eq(emission, "int 42"); - else if (!strncmp(emission, "float", 5)) - { - char buf[64]; - sprintf(buf, "float %f", 0.12); - ck_assert_str_eq(emission, buf); - } - else if (!strncmp(emission, "str", 3)) - ck_assert_str_eq(emission, "str hello world"); - else ck_abort_msg("Invalid emission!"); - - (*id)++; -} - -START_TEST(edje_test_message_send_legacy) -{ - Evas *evas; - Evas_Object *obj; - Edje_Message_Int msgi; - Edje_Message_Float msgf; - Edje_Message_String msgs; - Edje_Message_Int_Set *msgis; - int id = 0; - - /* Ugly calls to process: - * - * 1. Send edje message (async) - * 2. Process edje message (sync) - * 3. EDC program emits edje signal (async) - * 4. Process edje signal (sync) - * 5. Finally reached signal cb - */ - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_messages.edj"), "test_group")); - edje_object_signal_callback_add(obj, "*", "edc", _message_signal_reply_cb, &id); - - msgs.str = "hello world"; - edje_object_message_send(obj, EDJE_MESSAGE_STRING, 0, &msgs); - edje_message_signal_process(); - ck_assert_int_eq(id, 1); - - msgi.val = 42; - edje_object_message_send(obj, EDJE_MESSAGE_INT, 1, &msgi); - edje_message_signal_process(); - ck_assert_int_eq(id, 2); - - msgf.val = 0.12; - edje_object_message_send(obj, EDJE_MESSAGE_FLOAT, 2, &msgf); - edje_message_signal_process(); - ck_assert_int_eq(id, 3); - - msgis = alloca(sizeof(*msgis) + 4 * sizeof(msgis->val)); - msgis->count = 4; - msgis->val[0] = 7; - msgis->val[1] = 12; - msgis->val[2] = 42; - msgis->val[3] = 255; - edje_object_message_send(obj, EDJE_MESSAGE_INT_SET, 3, msgis); - edje_message_signal_process(); - ck_assert_int_eq(id, 4); - - evas_object_del(obj); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST - -START_TEST(edje_test_message_send_eo) -{ - Evas *evas; - Evas_Object *obj; - Eina_Value v, *va; - int id = 0; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, - efl_file_set(efl_added, test_layout_get("test_messages.edj"), "test_group")); - - // FIXME: EO API HERE - edje_object_signal_callback_add(obj, "*", "edc", _message_signal_reply_cb, &id); - - // NOTE: edje_object_message_signal_process may or may not be in EO (TBD) - - eina_value_setup(&v, EINA_VALUE_TYPE_STRING); - eina_value_set(&v, "hello world"); - efl_layout_signal_message_send(obj, 0, v); - eina_value_flush(&v); - edje_message_signal_process(); - edje_object_calc_force(obj); - ck_assert_int_eq(id, 1); - - eina_value_setup(&v, EINA_VALUE_TYPE_INT); - eina_value_set(&v, 42); - efl_layout_signal_message_send(obj, 1, v); - eina_value_flush(&v); - edje_message_signal_process(); - edje_object_calc_force(obj); - ck_assert_int_eq(id, 2); - - eina_value_setup(&v, EINA_VALUE_TYPE_FLOAT); - eina_value_set(&v, 0.12); - efl_layout_signal_message_send(obj, 2, v); - eina_value_flush(&v); - edje_message_signal_process(); - edje_object_calc_force(obj); - ck_assert_int_eq(id, 3); - - va = eina_value_array_new(EINA_VALUE_TYPE_INT, 4); - eina_value_array_append(va, 7); - eina_value_array_append(va, 12); - eina_value_array_append(va, 42); - eina_value_array_append(va, 255); - efl_layout_signal_message_send(obj, 3, *va); - eina_value_free(va); - edje_message_signal_process(); - edje_object_calc_force(obj); - ck_assert_int_eq(id, 4); - - efl_del(obj); - - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST -START_TEST(edje_test_signals) +EFL_START_TEST(edje_test_part_caching) { - Evas *evas; - Evas_Object *obj; - const char *state; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, - efl_file_set(efl_added, test_layout_get("test_signals.edj"), "level1"), - efl_gfx_size_set(efl_added, EINA_SIZE2D(320, 240)), - efl_gfx_visible_set(efl_added, 1)); + Evas *evas = _setup_evas(); + Evas_Object *ly, *o1, *global_p = NULL; - edje_object_signal_emit(obj, "mouse,in", "text"); - - edje_object_message_signal_process(obj); - state = edje_object_part_state_get(obj, "group:group:text", NULL); - ck_assert_str_eq(state, "default"); - - edje_object_message_signal_process(obj); - state = edje_object_part_state_get(obj, "group:group:text", NULL); - ck_assert_str_eq(state, "default"); - - edje_object_message_signal_recursive_process(obj); - state = edje_object_part_state_get(obj, "group:group:text", NULL); - ck_assert_str_eq(state, "over"); - - efl_del(obj); - - EDJE_TEST_FREE_EVAS(); -} -END_TEST + ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, + efl_file_set(efl_added, test_layout_get("test_swallows.edj"), "test_group") + ); -static int _signal_count; - -static void -_signal_callback_count_cb(void *data, Evas_Object *obj EINA_UNUSED, - const char *emission EINA_UNUSED, const char *source EINA_UNUSED) -{ - int *_data = data; - _signal_count += *_data; -} - -START_TEST(edje_test_signal_callback_del_full) -{ - Evas *evas; - Evas_Object *obj; - int data[4] = { 1, 2, 4, 8 }; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, - efl_file_set(efl_added, - test_layout_get("test_signal_callback_del_full.edj"), "test"), - efl_gfx_size_set(efl_added, EINA_SIZE2D(320, 240)), - efl_gfx_visible_set(efl_added, 1)); - - edje_object_signal_callback_add(obj, "some_signal", "event", _signal_callback_count_cb, &data[0]); - edje_object_signal_callback_add(obj, "some_signal", "event", _signal_callback_count_cb, &data[1]); - edje_object_signal_callback_add(obj, "some_signal", "event", _signal_callback_count_cb, &data[2]); - edje_object_signal_callback_add(obj, "some_signal", "event", _signal_callback_count_cb, &data[3]); + for (int i = 0; i < 10; ++i) + { + Evas_Object *p; - edje_object_signal_callback_del_full(obj, "some_signal", "event", _signal_callback_count_cb, &data[0]); - edje_object_signal_callback_del_full(obj, "some_signal", "event", _signal_callback_count_cb, &data[3]); + p = efl_part(ly, "swallow"); + o1 = efl_content_get(p); - edje_object_signal_emit(obj, "some_signal", "event"); + if (global_p) + ck_assert_ptr_eq(global_p, p); + global_p = p; - edje_object_message_signal_process(obj); - ck_assert_int_eq(_signal_count, (data[1] + data[2])); + ck_assert_int_eq(efl_ref_count(p), 1); + ck_assert_ptr_eq(efl_parent_get(p), NULL); - efl_del(obj); + } - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } -END_TEST +EFL_END_TEST void edje_test_edje(TCase *tc) { @@ -958,21 +242,7 @@ void edje_test_edje(TCase *tc) tcase_add_test(tc, edje_test_simple_layout_geometry); tcase_add_test(tc, edje_test_complex_layout); tcase_add_test(tc, edje_test_calculate_parens); - tcase_add_test(tc, edje_test_masking); - tcase_add_test(tc, edje_test_filters); - tcase_add_test(tc, edje_test_snapshot); - tcase_add_test(tc, edje_test_size_class); - tcase_add_test(tc, edje_test_color_class); - tcase_add_test(tc, edje_test_swallows); - tcase_add_test(tc, edje_test_swallows_eoapi); tcase_add_test(tc, edje_test_access); - tcase_add_test(tc, edje_test_box); - tcase_add_test(tc, edje_test_box_eoapi); - tcase_add_test(tc, edje_test_table); - tcase_add_test(tc, edje_test_table_eoapi); tcase_add_test(tc, edje_test_combine_keywords); - tcase_add_test(tc, edje_test_message_send_legacy); - tcase_add_test(tc, edje_test_message_send_eo); - tcase_add_test(tc, edje_test_signals); - tcase_add_test(tc, edje_test_signal_callback_del_full); + tcase_add_test(tc, edje_test_part_caching); } |