From b05a5cb4c73d890ab4cd65d8872a470193439bcc Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 12 Jul 2018 16:25:15 +0900 Subject: [PATCH] tests/edje: split edje tests into separate files Summary: this will speed up tests and make it slightly less intimidating to add new tests Reviewers: devilhorns Subscribers: cedric, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D6554 --- src/Makefile_Edje.am | 6 +- src/tests/edje/edje_suite.c | 37 +- src/tests/edje/edje_suite.h | 9 + src/tests/edje/edje_test_container.c | 282 ++++++++ src/tests/edje/edje_test_edje.c | 927 +-------------------------- src/tests/edje/edje_test_features.c | 229 +++++++ src/tests/edje/edje_test_signal.c | 240 +++++++ src/tests/edje/edje_test_swallow.c | 104 +++ src/tests/edje/edje_test_text.c | 120 ++++ src/tests/edje/edje_tests_helpers.h | 42 -- 10 files changed, 1041 insertions(+), 955 deletions(-) create mode 100644 src/tests/edje/edje_test_container.c create mode 100644 src/tests/edje/edje_test_features.c create mode 100644 src/tests/edje/edje_test_signal.c create mode 100644 src/tests/edje/edje_test_swallow.c create mode 100644 src/tests/edje/edje_test_text.c delete mode 100644 src/tests/edje/edje_tests_helpers.h diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index 745da03501..fc83eaadc6 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -283,7 +283,6 @@ bin/edje/edje_convert.c \ bin/edje/edje_data_convert.c \ bin/edje/edje_convert_main.c \ lib/edje/edje_convert.c \ -tests/edje/edje_tests_helpers.h \ tests/edje/data/complex_layout.edc \ tests/edje/data/test_layout.edc \ tests/edje/data/test_parens.edc \ @@ -318,7 +317,12 @@ TESTS += tests/edje/edje_suite tests_edje_edje_suite_SOURCES = \ tests/edje/edje_suite.c \ +tests/edje/edje_test_container.c \ tests/edje/edje_test_edje.c \ +tests/edje/edje_test_features.c \ +tests/edje/edje_test_signal.c \ +tests/edje/edje_test_swallow.c \ +tests/edje/edje_test_text.c \ tests/edje/edje_suite.h tests/edje/data/%.edj: tests/edje/data/%.edc bin/edje/edje_cc${EXEEXT} diff --git a/src/tests/edje/edje_suite.c b/src/tests/edje/edje_suite.c index 80cb84a8f6..e8f39cf011 100644 --- a/src/tests/edje/edje_suite.c +++ b/src/tests/edje/edje_suite.c @@ -4,21 +4,56 @@ #include "edje_suite.h" #include "../efl_check.h" -#include +#include static const Efl_Test_Case etc[] = { { "Edje", edje_test_edje }, + { "Container", edje_test_container }, + { "Features", edje_test_features }, + { "Signal", edje_test_signal }, + { "Swallow", edje_test_swallow }, + { "Text", edje_test_text }, { NULL, NULL } }; +const char * +test_layout_get(const char *name) +{ + static char filename[PATH_MAX]; + + snprintf(filename, PATH_MAX, TESTS_BUILD_DIR"/data/%s", name); + + return filename; +} + +Evas * +_setup_evas(void) +{ + Evas *evas; + Evas_Engine_Info *einfo; + + evas = evas_new(); + + evas_output_method_set(evas, evas_render_method_lookup("buffer")); + einfo = evas_engine_info_get(evas); + evas_engine_info_set(evas, einfo); + + evas_output_size_set(evas, 500, 500); + evas_output_viewport_set(evas, 0, 0, 500, 500); + + return evas; +} + SUITE_INIT(edje) { + ck_assert_int_eq(ecore_evas_init(), 1); ck_assert_int_eq(edje_init(), 1); } SUITE_SHUTDOWN(edje) { ck_assert_int_eq(edje_shutdown(), 0); + ck_assert_int_eq(ecore_evas_shutdown(), 0); } int diff --git a/src/tests/edje/edje_suite.h b/src/tests/edje/edje_suite.h index a6f1354fec..6f4ee5be83 100644 --- a/src/tests/edje/edje_suite.h +++ b/src/tests/edje/edje_suite.h @@ -3,7 +3,16 @@ #include #include "../efl_check.h" +#include +Evas *_setup_evas(void); +const char *test_layout_get(const char *name); + void edje_test_edje(TCase *tc); +void edje_test_container(TCase *tc); +void edje_test_features(TCase *tc); +void edje_test_signal(TCase *tc); +void edje_test_swallow(TCase *tc); +void edje_test_text(TCase *tc); #endif /* _EDJE_SUITE_H */ diff --git a/src/tests/edje/edje_test_container.c b/src/tests/edje/edje_test_container.c new file mode 100644 index 0000000000..018de4d3a0 --- /dev/null +++ b/src/tests/edje/edje_test_container.c @@ -0,0 +1,282 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define EFL_GFX_FILTER_BETA +#define EFL_CANVAS_LAYOUT_BETA + +#include "edje_suite.h" + +#define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" + + + +EFL_START_TEST(edje_test_box) +{ + Evas *evas; + Evas_Object *obj, *sobj, *sobjs[5]; + const Evas_Object *box; + Eina_Iterator *it; + int i; + + evas = _setup_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); + + edje_object_freeze(obj); + box = edje_object_part_object_get(obj, "box"); + edje_object_thaw(obj); + it = evas_object_box_iterator_new(box); + + i = 0; + EINA_ITERATOR_FOREACH(it, sobj) + { + fail_if(sobj != sobjs[i++]); + } + eina_iterator_free(it); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_box_eoapi) +{ + Evas *evas; + Evas_Object *obj, *sobj, *sobjs[5]; + Eina_Iterator *it; + int i; + + evas = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_table) +{ + Evas *evas; + Evas_Object *obj, *sobj, *sobjs[4]; + int i, k, l, cols, rows; + + evas = _setup_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); + } + + evas_free(evas); +} +EFL_END_TEST + +EFL_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 = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + + +void edje_test_container(TCase *tc) +{ + 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); +} diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index b8c8179436..15e42f1243 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -8,11 +8,7 @@ #define EFL_GFX_FILTER_BETA #define EFL_CANVAS_LAYOUT_BETA -#include -#include - #include "edje_suite.h" -#include "edje_tests_helpers.h" #define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" @@ -23,7 +19,7 @@ EFL_END_TEST EFL_START_TEST(edje_test_edje_load) { - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Edje_Load_Error error; Evas_Object *obj; @@ -32,23 +28,13 @@ EFL_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); } EFL_END_TEST -static const char * -test_layout_get(const char *name) -{ - static char filename[PATH_MAX]; - - snprintf(filename, PATH_MAX, TESTS_BUILD_DIR"/data/%s", name); - - return filename; -} - EFL_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); @@ -58,7 +44,7 @@ EFL_START_TEST(edje_test_load_simple_layout) fail_unless(edje_object_part_exists(obj, "background")); - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } EFL_END_TEST @@ -66,7 +52,7 @@ 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; @@ -87,14 +73,14 @@ EFL_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); } EFL_END_TEST 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); @@ -135,14 +121,14 @@ EFL_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); } EFL_END_TEST 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; @@ -158,301 +144,13 @@ EFL_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(); -} -EFL_END_TEST - -EFL_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); - - edje_object_freeze(obj); - clip = edje_object_part_object_get(obj, "clip2"); - edje_object_thaw(obj); - fail_if(!clip); - - /* check value of no_render flag as seen from evas land */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "mask"); - edje_object_thaw(obj); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* check that text has a clip (based on description.clip_to) */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "text"); - edje_object_thaw(obj); - fail_if(!efl_canvas_object_clip_get(sub)); - - /* test description.clip_to override */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "noclip"); - edje_object_thaw(obj); - clip2 = efl_canvas_object_clip_get(sub); - fail_if(clip != clip2); - - EDJE_TEST_FREE_EVAS(); -} -EFL_END_TEST - -EFL_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 */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "mask"); - edje_object_thaw(obj); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* check no_render inheritance */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "mask2"); - edje_object_thaw(obj); - fail_if(efl_canvas_object_no_render_get(sub)); - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "mask3"); - edje_object_thaw(obj); - fail_if(!efl_canvas_object_no_render_get(sub)); - - /* text part: check filter status */ - edje_object_freeze(obj); - text = edje_object_part_object_get(obj, "text"); - edje_object_thaw(obj); - 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(); -} -EFL_END_TEST - -EFL_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 */ - edje_object_freeze(obj); - sub = edje_object_part_object_get(obj, "snap"); - edje_object_thaw(obj); - 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(); -} -EFL_END_TEST - -EFL_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(); -} -EFL_END_TEST - -EFL_START_TEST(edje_test_color_class) -{ - 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(); -} -EFL_END_TEST - -EFL_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(); -} -EFL_END_TEST - -EFL_START_TEST(edje_test_swallows_lifetime) -{ - Evas *evas = EDJE_TEST_INIT_EVAS(); - Evas_Object *ly, *o1; - - ly = edje_object_add(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 = edje_object_add(ly); - fail_if(!edje_object_part_swallow(ly, "swallow", o1)); - - evas_object_del(ly); - fail_if(!efl_parent_get(o1)); - - EDJE_TEST_FREE_EVAS(); -} -EFL_END_TEST - -EFL_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(); + evas_free(evas); } EFL_END_TEST EFL_START_TEST(edje_test_access) { - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); const char *name; Evas_Object *obj; Eina_Iterator *it; @@ -489,265 +187,7 @@ EFL_START_TEST(edje_test_access) } fail_if(i != 2); - EDJE_TEST_FREE_EVAS(); -} -EFL_END_TEST - -EFL_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); - - edje_object_freeze(obj); - box = edje_object_part_object_get(obj, "box"); - edje_object_thaw(obj); - 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(); -} -EFL_END_TEST - -EFL_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(); -} -EFL_END_TEST - -EFL_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(); -} -EFL_END_TEST - -EFL_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(); + evas_free(evas); } EFL_END_TEST @@ -756,316 +196,18 @@ 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(); -} -EFL_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)++; -} - -EFL_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(); -} -EFL_END_TEST - -EFL_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(); -} -EFL_END_TEST - -EFL_START_TEST(edje_test_signals) -{ - 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_entity_size_set(efl_added, EINA_SIZE2D(320, 240)), - efl_gfx_entity_visible_set(efl_added, 1)); - - 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(); -} -EFL_END_TEST - -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; -} - -EFL_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_entity_size_set(efl_added, EINA_SIZE2D(320, 240)), - efl_gfx_entity_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]); - - 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]); - - edje_object_signal_emit(obj, "some_signal", "event"); - - edje_object_message_signal_process(obj); - ck_assert_int_eq(_signal_count, (data[1] + data[2])); - - efl_del(obj); - - EDJE_TEST_FREE_EVAS(); -} -EFL_END_TEST - -EFL_START_TEST(edje_test_text_cursor) -{ - Evas *evas; - Evas_Object *obj; - const char *buf = "ABC
DEF"; - const char *txt; - int i, old_pos, new_pos; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_text_cursor.edj"), "test_text_cursor")); - edje_object_part_text_set(obj, "text", buf); - txt = edje_object_part_text_get(obj, "text"); - fail_if(!txt || strcmp(txt, buf)); - - edje_object_part_text_cursor_pos_set(obj, "text", EDJE_CURSOR_MAIN, 0); - ck_assert_int_eq(edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN), 0); - edje_object_part_text_cursor_pos_set(obj, "text", EDJE_CURSOR_MAIN, 1); - ck_assert_int_eq(edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN), 1); - - /* Move cursor to the 0 pos from 1 pos */ - old_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert(edje_object_part_text_cursor_prev(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_ne(old_pos, new_pos); - - /* Move cursor to the -1 pos from 0 pos. It has to fail. */ - old_pos = new_pos; - ck_assert(!edje_object_part_text_cursor_prev(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_eq(old_pos, new_pos); - - /* Jump to 2nd line from 1st line. - * It has to return EINA_TRUE which means success. */ - old_pos = new_pos; - ck_assert(edje_object_part_text_cursor_down(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_ne(old_pos, new_pos); - - /* Try to jump to 3rd line from 2nd line. But, 3rd line does not exist. - * So, it has to return EINA_FALSE which means failure. */ - old_pos = new_pos; - ck_assert(!edje_object_part_text_cursor_down(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_eq(old_pos, new_pos); - - /* Move cursor to the end of 2nd line. */ - for (i = 0; i < 3; i++) - { - old_pos = new_pos; - ck_assert(edje_object_part_text_cursor_next(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_ne(old_pos, new_pos); - } - - /* Move cursor to the next of the end of 2nd line which does not exist. */ - old_pos = new_pos; - ck_assert(!edje_object_part_text_cursor_next(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_eq(old_pos, new_pos); - - /* Jump to 1st line from 2nd line. - * It has to return EINA_TRUE which means success. */ - old_pos = new_pos; - ck_assert(edje_object_part_text_cursor_up(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_ne(old_pos, new_pos); - - /* Try to jump to the above of 1st line from 1st line. But, there is no such line. - * So, it has to return EINA_FALSE which means failure. */ - old_pos = new_pos; - ck_assert(!edje_object_part_text_cursor_up(obj, "text", EDJE_CURSOR_MAIN)); - new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); - ck_assert_int_eq(old_pos, new_pos); - - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } EFL_END_TEST EFL_START_TEST(edje_test_part_caching) { - Evas *evas = EDJE_TEST_INIT_EVAS(); + Evas *evas = _setup_evas(); Evas_Object *ly, *o1, *global_p = NULL; ly = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, @@ -1088,26 +230,7 @@ EFL_START_TEST(edje_test_part_caching) } - EDJE_TEST_FREE_EVAS(); -} -EFL_END_TEST - -EFL_START_TEST(edje_test_textblock) -{ - Evas *evas; - Evas_Object *obj; - const char *buf = "Hello"; - const char *txt; - - evas = EDJE_TEST_INIT_EVAS(); - - obj = edje_object_add(evas); - fail_unless(edje_object_file_set(obj, test_layout_get("test_textblock.edj"), "test_textblock")); - edje_object_part_text_set(obj, "text", buf); - txt = edje_object_part_text_get(obj, "text"); - fail_if(!txt || strcmp(txt, buf)); - - EDJE_TEST_FREE_EVAS(); + evas_free(evas); } EFL_END_TEST @@ -1119,25 +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_lifetime); - 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_text_cursor); tcase_add_test(tc, edje_test_part_caching); - tcase_add_test(tc, edje_test_textblock); } diff --git a/src/tests/edje/edje_test_features.c b/src/tests/edje/edje_test_features.c new file mode 100644 index 0000000000..1cff283835 --- /dev/null +++ b/src/tests/edje/edje_test_features.c @@ -0,0 +1,229 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define EFL_GFX_FILTER_BETA +#define EFL_CANVAS_LAYOUT_BETA + +#include "edje_suite.h" + +#define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" + + +EFL_START_TEST(edje_test_masking) +{ + int x, y, w, h; + Evas *evas = _setup_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); + + edje_object_freeze(obj); + clip = edje_object_part_object_get(obj, "clip2"); + edje_object_thaw(obj); + fail_if(!clip); + + /* check value of no_render flag as seen from evas land */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "mask"); + edje_object_thaw(obj); + fail_if(!efl_canvas_object_no_render_get(sub)); + + /* check that text has a clip (based on description.clip_to) */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "text"); + edje_object_thaw(obj); + fail_if(!efl_canvas_object_clip_get(sub)); + + /* test description.clip_to override */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "noclip"); + edje_object_thaw(obj); + clip2 = efl_canvas_object_clip_get(sub); + fail_if(clip != clip2); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_filters) +{ + Evas *evas = _setup_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 */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "mask"); + edje_object_thaw(obj); + fail_if(!efl_canvas_object_no_render_get(sub)); + + /* check no_render inheritance */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "mask2"); + edje_object_thaw(obj); + fail_if(efl_canvas_object_no_render_get(sub)); + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "mask3"); + edje_object_thaw(obj); + fail_if(!efl_canvas_object_no_render_get(sub)); + + /* text part: check filter status */ + edje_object_freeze(obj); + text = edje_object_part_object_get(obj, "text"); + edje_object_thaw(obj); + 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 + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_snapshot) +{ + Evas *evas = _setup_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 */ + edje_object_freeze(obj); + sub = edje_object_part_object_get(obj, "snap"); + edje_object_thaw(obj); + 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) + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_size_class) +{ + int minw, minh, minw2, minh2; + Evas *evas = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_color_class) +{ + Evas *evas = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + +void edje_test_features(TCase *tc) +{ + 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); +} diff --git a/src/tests/edje/edje_test_signal.c b/src/tests/edje/edje_test_signal.c new file mode 100644 index 0000000000..2dc42b0ae7 --- /dev/null +++ b/src/tests/edje/edje_test_signal.c @@ -0,0 +1,240 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define EFL_GFX_FILTER_BETA +#define EFL_CANVAS_LAYOUT_BETA + +#include "edje_suite.h" + +#define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" + +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)++; +} + +EFL_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 = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_message_send_eo) +{ + Evas *evas; + Evas_Object *obj; + Eina_Value v, *va; + int id = 0; + + evas = _setup_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); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_signals) +{ + Evas *evas; + Evas_Object *obj; + const char *state; + + evas = _setup_evas(); + + obj = efl_add(EFL_CANVAS_LAYOUT_CLASS, evas, + efl_file_set(efl_added, test_layout_get("test_signals.edj"), "level1"), + efl_gfx_entity_size_set(efl_added, EINA_SIZE2D(320, 240)), + efl_gfx_entity_visible_set(efl_added, 1)); + + 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); + + evas_free(evas); +} +EFL_END_TEST + +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; +} + +EFL_START_TEST(edje_test_signal_callback_del_full) +{ + Evas *evas; + Evas_Object *obj; + int data[4] = { 1, 2, 4, 8 }; + + evas = _setup_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_entity_size_set(efl_added, EINA_SIZE2D(320, 240)), + efl_gfx_entity_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]); + + 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]); + + edje_object_signal_emit(obj, "some_signal", "event"); + + edje_object_message_signal_process(obj); + ck_assert_int_eq(_signal_count, (data[1] + data[2])); + + efl_del(obj); + + evas_free(evas); +} +EFL_END_TEST + +void edje_test_signal(TCase *tc) +{ + 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); + +} diff --git a/src/tests/edje/edje_test_swallow.c b/src/tests/edje/edje_test_swallow.c new file mode 100644 index 0000000000..d255937f8f --- /dev/null +++ b/src/tests/edje/edje_test_swallow.c @@ -0,0 +1,104 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define EFL_GFX_FILTER_BETA +#define EFL_CANVAS_LAYOUT_BETA + +#include "edje_suite.h" + +#define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" + + +EFL_START_TEST(edje_test_swallows) +{ + Evas *evas = _setup_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)); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_swallows_lifetime) +{ + Evas *evas = _setup_evas(); + Evas_Object *ly, *o1; + + ly = edje_object_add(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 = edje_object_add(ly); + fail_if(!edje_object_part_swallow(ly, "swallow", o1)); + + evas_object_del(ly); + fail_if(!efl_parent_get(o1)); + + evas_free(evas); +} +EFL_END_TEST + +EFL_START_TEST(edje_test_swallows_eoapi) +{ + Evas *evas = _setup_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)); + + evas_free(evas); +} +EFL_END_TEST + + +void edje_test_swallow(TCase *tc) +{ + tcase_add_test(tc, edje_test_swallows); + tcase_add_test(tc, edje_test_swallows_lifetime); + tcase_add_test(tc, edje_test_swallows_eoapi); +} diff --git a/src/tests/edje/edje_test_text.c b/src/tests/edje/edje_test_text.c new file mode 100644 index 0000000000..d87ab48208 --- /dev/null +++ b/src/tests/edje/edje_test_text.c @@ -0,0 +1,120 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#define EFL_GFX_FILTER_BETA +#define EFL_CANVAS_LAYOUT_BETA + +#include "edje_suite.h" + +#define EVAS_DATA_DIR TESTS_SRC_DIR "/../../lib/evas" + + +EFL_START_TEST(edje_test_text_cursor) +{ + Evas *evas; + Evas_Object *obj; + const char *buf = "ABC
DEF"; + const char *txt; + int i, old_pos, new_pos; + + evas = _setup_evas(); + + obj = edje_object_add(evas); + fail_unless(edje_object_file_set(obj, test_layout_get("test_text_cursor.edj"), "test_text_cursor")); + edje_object_part_text_set(obj, "text", buf); + txt = edje_object_part_text_get(obj, "text"); + fail_if(!txt || strcmp(txt, buf)); + + edje_object_part_text_cursor_pos_set(obj, "text", EDJE_CURSOR_MAIN, 0); + ck_assert_int_eq(edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN), 0); + edje_object_part_text_cursor_pos_set(obj, "text", EDJE_CURSOR_MAIN, 1); + ck_assert_int_eq(edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN), 1); + + /* Move cursor to the 0 pos from 1 pos */ + old_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert(edje_object_part_text_cursor_prev(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_ne(old_pos, new_pos); + + /* Move cursor to the -1 pos from 0 pos. It has to fail. */ + old_pos = new_pos; + ck_assert(!edje_object_part_text_cursor_prev(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_eq(old_pos, new_pos); + + /* Jump to 2nd line from 1st line. + * It has to return EINA_TRUE which means success. */ + old_pos = new_pos; + ck_assert(edje_object_part_text_cursor_down(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_ne(old_pos, new_pos); + + /* Try to jump to 3rd line from 2nd line. But, 3rd line does not exist. + * So, it has to return EINA_FALSE which means failure. */ + old_pos = new_pos; + ck_assert(!edje_object_part_text_cursor_down(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_eq(old_pos, new_pos); + + /* Move cursor to the end of 2nd line. */ + for (i = 0; i < 3; i++) + { + old_pos = new_pos; + ck_assert(edje_object_part_text_cursor_next(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_ne(old_pos, new_pos); + } + + /* Move cursor to the next of the end of 2nd line which does not exist. */ + old_pos = new_pos; + ck_assert(!edje_object_part_text_cursor_next(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_eq(old_pos, new_pos); + + /* Jump to 1st line from 2nd line. + * It has to return EINA_TRUE which means success. */ + old_pos = new_pos; + ck_assert(edje_object_part_text_cursor_up(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_ne(old_pos, new_pos); + + /* Try to jump to the above of 1st line from 1st line. But, there is no such line. + * So, it has to return EINA_FALSE which means failure. */ + old_pos = new_pos; + ck_assert(!edje_object_part_text_cursor_up(obj, "text", EDJE_CURSOR_MAIN)); + new_pos = edje_object_part_text_cursor_pos_get(obj, "text", EDJE_CURSOR_MAIN); + ck_assert_int_eq(old_pos, new_pos); + + evas_free(evas); +} +EFL_END_TEST + + +EFL_START_TEST(edje_test_textblock) +{ + Evas *evas; + Evas_Object *obj; + const char *buf = "Hello"; + const char *txt; + + evas = _setup_evas(); + + obj = edje_object_add(evas); + fail_unless(edje_object_file_set(obj, test_layout_get("test_textblock.edj"), "test_textblock")); + edje_object_part_text_set(obj, "text", buf); + txt = edje_object_part_text_get(obj, "text"); + fail_if(!txt || strcmp(txt, buf)); + + evas_free(evas); +} +EFL_END_TEST + +void edje_test_text(TCase *tc) +{ + tcase_add_test(tc, edje_test_text_cursor); + tcase_add_test(tc, edje_test_textblock); +} diff --git a/src/tests/edje/edje_tests_helpers.h b/src/tests/edje/edje_tests_helpers.h deleted file mode 100644 index 530d10e6e3..0000000000 --- a/src/tests/edje/edje_tests_helpers.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef EDJE_TEST_HELPERS_H -#define EDJE_TEST_HELPERS_H - -#include - -/* FIXME: Currently depends on the buffer engine, should we do anything - * fancier? */ - -#define EDJE_TEST_INIT_EVAS() _setup_evas() - -#define EDJE_TEST_FREE_EVAS() \ - do \ - { \ - edje_shutdown(); \ - evas_free(evas); \ - ecore_evas_shutdown(); \ - } \ - while (0) - -static Evas * -_setup_evas() -{ - Evas *evas; - Evas_Engine_Info *einfo; - - ecore_evas_init(); - edje_init(); - - evas = evas_new(); - - evas_output_method_set(evas, evas_render_method_lookup("buffer")); - einfo = evas_engine_info_get(evas); - evas_engine_info_set(evas, einfo); - - evas_output_size_set(evas, 500, 500); - evas_output_viewport_set(evas, 0, 0, 500, 500); - - return evas; -} - -#endif -