From f24b45a7d0e22689b321ab15276b9275b2309325 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Thu, 11 Jun 2015 17:46:50 +0900 Subject: [PATCH] Edje: Add test case for "no_render" and "clip_to" state flag --- src/Makefile_Edje.am | 12 ++++-- src/tests/edje/data/test_masking.edc | 82 ++++++++++++++++++++++++++++++++++++ src/tests/edje/edje_test_edje.c | 36 ++++++++++++++++ 3 files changed, 126 insertions(+), 4 deletions(-) create mode 100644 src/tests/edje/data/test_masking.edc diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index e42f3c4..596a02b 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -283,19 +283,23 @@ tests_edje_edje_suite_DEPENDENCIES = @USE_EDJE_INTERNAL_LIBS@ tests/edje/data/%.edj: tests/edje/data/%.edc bin/edje/edje_cc${EXEEXT} $(AM_V_EDJ) \ $(MKDIR_P) tests/edje/data; \ - $(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/edje/data $< $@ + $(EDJE_CC) $(EDJE_CC_FLAGS) -id $(srcdir)/tests/edje/data \ + -id $(srcdir)/tests/emotion/data $< $@ EDJE_DATA_FILES = tests/edje/data/test_layout.edc \ tests/edje/data/complex_layout.edc \ - tests/edje/data/test_parens.edc + tests/edje/data/test_parens.edc \ + tests/edje/data/test_masking.edc edjedatafilesdir = $(datadir)/edje/data edjedatafiles_DATA = tests/edje/data/test_layout.edj \ tests/edje/data/complex_layout.edj \ - tests/edje/data/test_parens.edj + tests/edje/data/test_parens.edj \ + tests/edje/data/test_masking.edj CLEANFILES += tests/edje/data/test_layout.edj \ tests/edje/data/complex_layout.edj \ - tests/edje/data/test_parens.edj + tests/edje/data/test_parens.edj \ + tests/edje/data/test_masking.edj endif diff --git a/src/tests/edje/data/test_masking.edc b/src/tests/edje/data/test_masking.edc new file mode 100644 index 0000000..63938d9 --- /dev/null +++ b/src/tests/edje/data/test_masking.edc @@ -0,0 +1,82 @@ +collections { + images { + // found in tests/emotion/data + image: "e_logo.png" COMP; + } + group { name: "test_group"; + parts { + part { name: "background"; + type: RECT; + description { state: "default" 0.0; + color: 33 32 32 255; + rel1.relative: 0 0; + rel2.relative: 1 1; + max: 200 200; + } + } + part { name: "clip1"; + type: RECT; + no_render: 1; + description { state: "default" 0.0; + rel1.relative: 0 0; + rel2.relative: 1 1; + } + } + part { name: "clip2"; + type: RECT; + no_render: 1; + description { state: "default" 0.0; + rel1.relative: 0 0; + rel2.relative: 1 1; + } + } + part { name: "mask"; + type: IMAGE; + no_render: 1; + description { state: "default" 0.0; + rel1.relative: 0 0; + rel2.relative: 1 1; + rel1.to: "background"; + rel2.to: "background"; + image.normal: "e_logo.png"; + } + } + part { name: "logo"; + inherit: "mask"; + type: IMAGE; + no_render: 0; + } + part { name: "text"; + inherit: "mask"; + type: TEXT; + description { state: "default" 0.0; + text { + text: "HELLO WORLD"; + font: "Sans"; + size: 16; + } + color: 255 0 0 255; + clip_to: "mask"; + } + } + /* test clip_to override from desc */ + part { name: "noclip"; + type: TEXT; + clip_to: "clip1"; + description { state: "default" 0.0; + text { + text: "HELLO WORLD"; + font: "Sans"; + size: 16; + } + rel1.relative: 0 0; + rel2.relative: 1 1; + rel1.to: "background"; + rel2.to: "background"; + color: 0 255 0 64; + clip_to: "clip2"; + } + } + } + } +} diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index 9862ad9..88cc3fc 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -168,6 +168,41 @@ START_TEST(edje_test_calculate_parens) } 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; + Eina_Bool b; + + 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(!eo_do_ret(sub, b, evas_obj_no_render_get())); + + /* check that text has a clip (based on description.clip_to) */ + sub = edje_object_part_object_get(obj, "text"); + fail_if(!eo_do_ret(sub, clip2, evas_obj_clip_get())); + + /* test description.clip_to override */ + sub = edje_object_part_object_get(obj, "noclip"); + clip2 = eo_do_ret(sub, clip2, evas_obj_clip_get()); + fail_if(clip != clip2); + + EDJE_TEST_FREE_EVAS(); +} +END_TEST + void edje_test_edje(TCase *tc) { tcase_add_test(tc, edje_test_edje_init); @@ -176,4 +211,5 @@ 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); } -- 2.7.4