summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@samsung.com>2018-07-12 16:25:15 +0900
committerHermet Park <hermetpark@gmail.com>2018-07-12 16:25:15 +0900
commitb05a5cb4c73d890ab4cd65d8872a470193439bcc (patch)
treebbeca6357e2ddc38e1b2fb6b70dcef98da1f4ab5
parenta62420ce36c38a85433c22185ed5dec9ce73e398 (diff)
downloadefl-b05a5cb4c73d890ab4cd65d8872a470193439bcc.tar.gz
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
-rw-r--r--src/Makefile_Edje.am6
-rw-r--r--src/tests/edje/edje_suite.c37
-rw-r--r--src/tests/edje/edje_suite.h9
-rw-r--r--src/tests/edje/edje_test_container.c282
-rw-r--r--src/tests/edje/edje_test_edje.c927
-rw-r--r--src/tests/edje/edje_test_features.c229
-rw-r--r--src/tests/edje/edje_test_signal.c240
-rw-r--r--src/tests/edje/edje_test_swallow.c104
-rw-r--r--src/tests/edje/edje_test_text.c120
-rw-r--r--src/tests/edje/edje_tests_helpers.h42
10 files changed, 1041 insertions, 955 deletions
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 <Edje.h>
+#include <Ecore_Evas.h>
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 <check.h>
#include "../efl_check.h"
+#include <Edje.h>
+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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+
+#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 <Eina.h>
-#include <Edje.h>
-
#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<br/>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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+
+#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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+
+#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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+
+#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 <config.h>
+#endif
+
+#include <unistd.h>
+#include <stdio.h>
+
+#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<br/>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 <Ecore_Evas.h>
-
-/* 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
-