summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora.srour <a.srour@samsung.com>2019-12-26 17:45:29 +0900
committerWooHyun Jung <wh0705.jung@samsung.com>2019-12-26 17:45:30 +0900
commit43bd6ab7ea86f4947ee7306c346e716329b93422 (patch)
tree8bda8106e205d4a97541559d0ad4e937870cdd6c
parenta239fc4a1a22ba05a7106248c0cb1655cc87d2c3 (diff)
downloadefl-43bd6ab7ea86f4947ee7306c346e716329b93422.tar.gz
Efl.Text.Cursor: Add tests for evas_suite
Summary: This patch add tests for almost all `Efl.Text.Cursor` exposed methods. Test Plan: Using `ninja test` Reviewers: ali.alzyod, segfaultxavi, woohyun Subscribers: #committers, cedric, #reviewers Tags: #efl Maniphest Tasks: T8454 Differential Revision: https://phab.enlightenment.org/D10950
-rw-r--r--src/tests/evas/evas_test_textblock.c270
1 files changed, 251 insertions, 19 deletions
diff --git a/src/tests/evas/evas_test_textblock.c b/src/tests/evas/evas_test_textblock.c
index 33bbad6472..64dc47996b 100644
--- a/src/tests/evas/evas_test_textblock.c
+++ b/src/tests/evas/evas_test_textblock.c
@@ -4490,6 +4490,8 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
efl_text_set(txt, buf);
ck_assert_int_eq(strcmp(efl_text_get(txt), buf), 0);
+ pos = efl_text_cursor_position_get(cur_obj);
+ ck_assert_int_eq(pos, 0);
ck_assert(!efl_text_cursor_line_jump_by(cur_obj, -1));
pos = efl_text_cursor_position_get(cur_obj);
ck_assert_int_eq(pos, 0);
@@ -4497,6 +4499,21 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
pos = efl_text_cursor_position_get(cur_obj);
ck_assert_int_eq(pos, 10);
+ efl_text_markup_set(txt, "Hello World<ps/>This is EFL<br/>Enlightenment");
+ efl_text_cursor_position_set(cur_obj, 0);
+ ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 0);
+ ck_assert(efl_text_cursor_line_jump_by(cur_obj, 2));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 24);
+ ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 2);
+ ck_assert(efl_text_cursor_line_jump_by(cur_obj, -2));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+ ck_assert_int_eq(efl_text_cursor_line_number_get(cur_obj), 0);
+
+ ck_assert(efl_text_cursor_line_jump_by(cur_obj, 2));
+ efl_text_cursor_line_number_set(cur_obj, 2);
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 24);
+ efl_text_cursor_line_number_set(cur_obj, 0);
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
Eo * cursor1 = efl_add(EFL_TEXT_CURSOR_CLASS, txt);
pos = efl_text_cursor_position_get(cursor1);
@@ -4515,33 +4532,248 @@ EFL_START_TEST(efl_canvas_textblock_cursor)
efl_text_cursor_text_insert(cursor1, "aa");
ck_assert_int_eq(changed_emit, 3);
- Eo *cursor_temp = efl_add(EFL_TEXT_CURSOR_CLASS, txt);
- efl_text_cursor_copy(cursor1 ,cursor_temp);
- ck_assert_ptr_eq(
- efl_text_cursor_text_object_get(cursor1),
- efl_text_cursor_text_object_get(cursor_temp));
+ efl_text_set(txt, "");
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_PREV));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST));
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+
+ ck_assert_int_eq(changed_emit, 4);
- efl_text_set(txt, "occaecat \n mollit");
- efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST);
- efl_text_cursor_line_jump_by(cur_obj, 1);
- efl_text_cursor_line_jump_by(cur_obj, -1);
+ efl_text_markup_set(txt, "Hello World<ps/>This is EFL<br/>Enlightenment");
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_PREV));
ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
- efl_text_set(txt, "Word");
- efl_text_cursor_position_set(cur_obj, 1);
- changed_emit = 0;
- efl_event_callback_add(cur_obj, EFL_TEXT_CURSOR_EVENT_CHANGED, _increment_int_changed, &changed_emit);
+ efl_text_cursor_position_set(cur_obj, 0);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START));
- ck_assert_int_eq(changed_emit, 1);
-
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_START));
- ck_assert_int_eq(changed_emit, 1);
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
- ck_assert_int_eq(changed_emit, 2);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 10);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
+ ck_assert_int_ne(efl_text_cursor_position_get(cur_obj), 10);
+
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 12);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LINE_START));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
- ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_WORD_END));
- ck_assert_int_eq(changed_emit, 2);
+#if defined(HAVE_FRIBIDI) && defined(HAVE_HARFBUZZ)
+ efl_text_markup_set(txt, "الْبَرْمَجةُ<ps/>مَرْحبَاً");
+ efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0));
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 1);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 3);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_PREV));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 4);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 5);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CHAR_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 6);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_CLUSTER_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 7);
+
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22);
+ ck_assert(!efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_LAST));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_START));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 13);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_END));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22);
+ ck_assert(efl_text_cursor_move(cur_obj, EFL_TEXT_CURSOR_MOVE_TYPE_FIRST));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+#endif
+
+ Eo *nCur = efl_add(EFL_TEXT_CURSOR_CLASS, txt), *nCur2 = efl_add(EFL_TEXT_CURSOR_CLASS, txt), *nCur3 = efl_add(EFL_TEXT_CURSOR_CLASS, txt);
+ efl_text_markup_set(txt, "Hello World<ps/>This is EFL<br/>Enlightenment");
+ efl_text_cursor_position_set(cur_obj, 0);
+ efl_text_cursor_copy(cur_obj, nCur);
+ ck_assert_ptr_ne(nCur, NULL);
+ efl_text_cursor_copy(cur_obj, nCur2);
+ efl_text_cursor_copy(cur_obj, nCur3);
+ ck_assert_ptr_ne(nCur2, NULL);
+ ck_assert_ptr_ne(nCur3, NULL);
+
+ ck_assert(efl_text_cursor_equal(cur_obj, nCur));
+ ck_assert(efl_text_cursor_equal(cur_obj, nCur2));
+ ck_assert(efl_text_cursor_equal(cur_obj, nCur3));
+ ck_assert(efl_text_cursor_equal(nCur2, nCur3));
+
+ ck_assert_int_eq(efl_text_cursor_compare(cur_obj, nCur3), 0);
+ ck_assert_int_eq(efl_text_cursor_compare(nCur2, nCur3), 0);
+ ck_assert_int_eq(efl_text_cursor_compare(cur_obj, nCur), 0);
+
+ ck_assert(efl_text_cursor_move(nCur, EFL_TEXT_CURSOR_MOVE_TYPE_PARAGRAPH_NEXT));
+ ck_assert_int_lt(efl_text_cursor_compare(cur_obj, nCur), 0);
+ ck_assert_int_gt(efl_text_cursor_compare(nCur, cur_obj), 0);
+ efl_text_cursor_copy(nCur, nCur2);
+ ck_assert_int_lt(efl_text_cursor_compare(cur_obj, nCur2), 0);
+ ck_assert_int_gt(efl_text_cursor_compare(nCur2, cur_obj), 0);
+ ck_assert(!efl_text_cursor_equal(nCur2, nCur3));
+
+ efl_text_set(txt, "");
+ efl_text_cursor_text_insert(cur_obj, "Hello World");
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 11);
+ efl_text_cursor_text_insert(cur_obj, "Hello World");
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 22);
+ ck_assert_str_eq(efl_text_get(txt), "Hello WorldHello World");
+
+ efl_text_set(txt, "");
+ efl_text_cursor_markup_insert(cur_obj, "Hello World<ps/>Hello World");
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23);
+
+ efl_text_cursor_char_coord_set(cur_obj, EINA_POSITION2D(0, 0));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+ efl_text_cursor_char_coord_set(cur_obj, EINA_POSITION2D(500, 500));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23);
+ efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(0, 0));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+ efl_text_cursor_cluster_coord_set(cur_obj, EINA_POSITION2D(500, 500));
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 23);
+
+ efl_text_cursor_position_set(nCur, 0);
+ efl_text_cursor_position_set(cur_obj, 5);
+
+ ck_assert_str_eq(efl_text_cursor_range_text_get(cur_obj, nCur), "Hello");
+ ck_assert_str_eq(efl_text_cursor_range_text_get(nCur, cur_obj), "Hello");
+
+ efl_text_cursor_position_set(nCur, 0);
+ efl_text_cursor_position_set(cur_obj, 17);
+
+ Eina_Iterator *iter = efl_text_cursor_range_geometry_get(cur_obj, nCur);
+ Eina_Rect *geoRect;
+ int x = 0;
+
+ EINA_ITERATOR_FOREACH(iter, geoRect)
+ {
+ x ++;
+ ck_assert_int_ne(geoRect->w, 0);
+ ck_assert_int_ne(geoRect->h, 0);
+ }
+
+ ck_assert_int_eq(x, 3);
+
+ iter = efl_text_cursor_range_precise_geometry_get(cur_obj, nCur);
+ x = 0;
+
+ EINA_ITERATOR_FOREACH(iter, geoRect)
+ {
+ x ++;
+ ck_assert_int_ne(geoRect->w, 0);
+ ck_assert_int_ne(geoRect->h, 0);
+ }
+
+ ck_assert_int_eq(x, 2);
+
+ ck_assert_str_eq(efl_text_cursor_range_markup_get(cur_obj, nCur), "Hello World<ps/>Hello");
+ ck_assert_str_eq(efl_text_cursor_range_markup_get(nCur, cur_obj), "Hello World<ps/>Hello");
+
+ efl_text_cursor_position_set(nCur, 0);
+ efl_text_cursor_position_set(cur_obj, 5);
+
+ efl_text_cursor_range_delete(nCur, cur_obj);
+
+ ck_assert_str_eq(efl_text_markup_get(txt), " World<ps/>Hello World");
+ ck_assert_int_eq(efl_text_cursor_position_get(cur_obj), 0);
+ ck_assert_int_eq(efl_text_cursor_position_get(nCur), 0);
+
+ efl_text_markup_set(txt, "Hello World<ps/>Hello World");
+ efl_text_cursor_position_set(cur_obj, 6);
+ Eina_Unicode str[2] = {0};
+ str[0] = efl_text_cursor_content_get(cur_obj);
+ ck_assert_str_eq(eina_unicode_unicode_to_utf8(str, NULL), "W");
+
+ efl_text_cursor_char_delete(cur_obj);
+
+ str[0] = efl_text_cursor_content_get(cur_obj);
+ ck_assert_str_eq(eina_unicode_unicode_to_utf8(str, NULL), "o");
+
+ Eo *cur_txt = efl_text_cursor_text_object_get(cur_obj);
+ Eo *cur_txt2 = efl_text_cursor_text_object_get(nCur);
+ ck_assert_ptr_eq(cur_txt, txt);
+ ck_assert_ptr_eq(cur_txt2, txt);
+
+ efl_text_cursor_position_set(cur_obj, 1);
+ Eina_Rect rect = efl_text_cursor_content_geometry_get(cur_obj);
+ ck_assert_int_ne(rect.w, 0);
+ ck_assert_int_ne(rect.h, 0);
+ ck_assert_int_ne(rect.x, 0);
+
+ rect = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE);
+ ck_assert_int_eq(rect.w, 0);
+ ck_assert_int_ne(rect.h, 0);
+ ck_assert_int_ne(rect.x, 0);
+
+ Eina_Rect rect2 = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_UNDER);
+ ck_assert_int_ne(rect2.w, 0);
+ ck_assert_int_ne(rect2.h, 0);
+ ck_assert_int_ne(rect2.x, 0);
+
+ ck_assert_int_ne(rect2.w, rect.w);
+ ck_assert_int_eq(rect2.h, rect.h);
+ ck_assert_int_eq(rect2.x, rect.x);
+ ck_assert_int_eq(rect2.y, rect.y);
+
+ efl_text_markup_set(txt, "Hello World");
+ efl_text_cursor_position_set(cur_obj, 11);
+ ck_assert(!efl_text_cursor_lower_cursor_geometry_get(cur_obj, &rect2));
+#ifdef HAVE_FRIBIDI
+ efl_text_cursor_text_insert(cur_obj, "مرحباً");
+ rect = efl_text_cursor_geometry_get(cur_obj, EFL_TEXT_CURSOR_TYPE_BEFORE);
+ ck_assert(efl_text_cursor_lower_cursor_geometry_get(cur_obj, &rect2));
+ ck_assert_int_eq(rect2.w, 0);
+ ck_assert_int_ne(rect2.h, 0);
+ ck_assert_int_ne(rect2.x, 0);
+
+ ck_assert_int_eq(rect2.w, rect.w);
+ ck_assert_int_eq(rect2.h, rect.h);
+ ck_assert_int_ne(rect2.x, rect.x);
+ ck_assert_int_eq(rect2.y, rect.y);
+#endif
END_EFL_CANVAS_TEXTBLOCK_TEST();
}