edje: Add test case for signal_recursive_process

This commit is contained in:
Jean-Philippe Andre 2017-05-30 13:34:57 +09:00
parent 63518c4c2c
commit bca55bb52f
4 changed files with 162 additions and 0 deletions

View File

@ -282,6 +282,7 @@ tests/edje/data/test_box.edc \
tests/edje/data/test_table.edc \
tests/edje/data/test_combine_keywords.edc \
tests/edje/data/test_messages.edc \
tests/edje/data/test_signals.edc \
tests/edje/data/filter.lua
@ -323,6 +324,7 @@ EDJE_TEST_FILES = tests/edje/data/test_layout.edj \
tests/edje/data/test_table.edj \
tests/edje/data/test_combine_keywords.edj \
tests/edje/data/test_messages.edj \
tests/edje/data/test_signals.edj \
$(NULL)
CLEANFILES += $(EDJE_TEST_FILES)

View File

@ -65,3 +65,5 @@ collections {
}
}
}
}

View File

@ -0,0 +1,124 @@
// compile: edje_cc edje_signal_test.edc
collections {
group {
name: "level1";
parts {
part {
name: "group";
type: GROUP;
source: "level2";
description {
state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 0 0;
}
rel2 {
relative: 1.0 1.0;
offset: -1 -1;
}
}
}
}
}
group {
name: "level2";
parts {
part {
name: "group";
type: GROUP;
source: "level3";
description {
state: "default" 0.0;
rel1 {
relative: 0.0 0.0;
offset: 0 0;
}
rel2 {
relative: 1.0 1.0;
offset: -1 -1;
}
}
}
}
}
group {
name: "level3"; // must be the same as in edje_example.c
parts {
part {
name: "background";
type: RECT; // plain boring rectangle
mouse_events: 0; // we don't need any mouse event on the background
// just one state "default"
description {
state: "default" 0.0; // must always exist
color: 255 255 255 255; // white
// define part coordinates:
rel1 { // top-left point at (0, 0) [WIDTH * 0 + 0, HEIGHT * 0 + 0]
relative: 0.0 0.0;
offset: 0 0;
}
rel2 { // bottom-right point at (WIDTH * 1.0 - 1, HEIGHT * 1.0 - 1)
relative: 1.0 1.0;
offset: -1 -1;
}
}
}
part {
name: "text";
type: TEXT;
mouse_events: 1; // we want to change the color on mouse-over
// 2 states, one "default" and another "over" to be used
// on mouse over effect
description {
state: "default" 0.0;
color: 255 0 0 255; // red
// define part coordinates:
rel1 { // top-left at (WIDTH * 0.1 + 5, HEIGHT * 0.2 + 10)
relative: 0.1 0.2;
offset: 5 10;
}
rel2 { // bottom-right at (WIDTH * 0.9 - 6, HEIGHT * 0.8 - 11)
relative: 0.9 0.8;
offset: -6 -11;
}
// define text specific state details
text {
font: "Sans"; // using fontconfig name!
size: 10;
text: "hello world";
}
}
description {
state: "over" 0.0;
inherit: "default" 0.0; // copy everything from "default" at this point
color: 0 255 0 255; // override color, now it is green
}
}
programs {
program {
signal: "mouse,in";
source: "text";
action: STATE_SET "over" 0.0;
target: "text";
}
}
}
}
}

View File

@ -867,6 +867,39 @@ START_TEST(edje_test_message_send_eo)
}
END_TEST
START_TEST(edje_test_signals)
{
Evas *evas;
Evas_Object *obj;
const char *state;
evas = EDJE_TEST_INIT_EVAS();
obj = efl_add(EDJE_OBJECT_CLASS, evas,
efl_file_set(efl_added, test_layout_get("test_signals.edj"), "level1"),
efl_gfx_size_set(efl_added, 320, 240),
efl_gfx_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();
}
END_TEST
void edje_test_edje(TCase *tc)
{
tcase_add_test(tc, edje_test_edje_init);
@ -890,4 +923,5 @@ void edje_test_edje(TCase *tc)
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);
}