From c8180e219b0c222891e576d51173bd11e44cd6b2 Mon Sep 17 00:00:00 2001 From: tasn Date: Wed, 13 Jul 2011 15:16:34 +0000 Subject: [PATCH] Evas tests: Added a bit of line geometry tests. git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@61343 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/tests/evas_test_textblock.c | 96 +++++++++++++++++++++++++++++++++++------ 1 file changed, 83 insertions(+), 13 deletions(-) diff --git a/src/tests/evas_test_textblock.c b/src/tests/evas_test_textblock.c index 821f366..1136d0c 100644 --- a/src/tests/evas_test_textblock.c +++ b/src/tests/evas_test_textblock.c @@ -62,25 +62,28 @@ END_TEST #define _CHECK_CURSOR_COORDS() \ do \ { \ - Evas_Coord x, y, w, h; \ + Evas_Coord cx, cy, cw, ch; \ int ret; \ - ret = evas_textblock_cursor_geometry_get(cur, &x, &y, &w, &h, NULL, \ - EVAS_TEXTBLOCK_CURSOR_UNDER); \ + ret = evas_textblock_cursor_geometry_get(cur, &cx, &cy, &cw, &ch, \ + NULL, EVAS_TEXTBLOCK_CURSOR_UNDER); \ fail_if(ret == -1); \ - ret = evas_textblock_cursor_geometry_get(cur, &x, &y, &w, &h, NULL, \ - EVAS_TEXTBLOCK_CURSOR_BEFORE); \ + ret = evas_textblock_cursor_geometry_get(cur, &cx, &cy, &cw, &ch, \ + NULL, EVAS_TEXTBLOCK_CURSOR_BEFORE); \ fail_if(ret == -1); \ - ret = evas_textblock_cursor_char_geometry_get(cur, &x, &y, &w, &h); \ + ret = evas_textblock_cursor_char_geometry_get(cur, \ + &cx, &cy, &cw, &ch); \ fail_if(ret == -1); \ - ret = evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); \ + ret = evas_textblock_cursor_pen_geometry_get(cur, &cx, &cy, &cw, &ch); \ fail_if(ret == -1); \ - ret = evas_textblock_cursor_line_geometry_get(cur, &x, &y, &w, &h); \ + ret = evas_textblock_cursor_line_geometry_get(cur, \ + &cx, &cy, &cw, &ch); \ fail_if(ret == -1); \ } \ while (0) START_TEST(evas_textblock_cursor) { START_TB_TEST(); + Evas_Coord x, y, w, h; size_t i, len; Evas_Coord nw, nh; const char *buf = "This is a
test.Lets see if this works.עוד פסקה."; @@ -352,7 +355,6 @@ START_TEST(evas_textblock_cursor) /* Check that pen geometry and getting char at coord are in sync. */ do { - Evas_Coord x, y, w, h; int cur_pos; /* Check if it's the last char, if it is, break, otherwise, go back @@ -364,8 +366,7 @@ START_TEST(evas_textblock_cursor) cur_pos = evas_textblock_cursor_pos_get(cur); evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); - evas_textblock_cursor_char_coord_set(cur, x + (w / 2), - y + (h / 2)); + evas_textblock_cursor_char_coord_set(cur, x + (w / 2), y + (h / 2)); fail_if(cur_pos != evas_textblock_cursor_pos_get(cur)); } while (evas_textblock_cursor_char_next(cur)); @@ -386,8 +387,77 @@ START_TEST(evas_textblock_cursor) evas_textblock_cursor_paragraph_last(main_cur); fail_if(evas_textblock_cursor_compare(cur, main_cur)); - /* FIXME: Add tests that check positions left of/right of right/left - * aligned paragraphs + with rtl strings. */ + /* Try positions beyond the left/right limits of lines. */ + evas_textblock_cursor_line_set(cur, 0); + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + evas_textblock_cursor_char_coord_set(main_cur, x - 50, y); + fail_if(evas_textblock_cursor_compare(main_cur, cur)); + + evas_textblock_cursor_line_char_last(cur); + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + evas_textblock_cursor_char_coord_set(main_cur, x + 50, y); + fail_if(evas_textblock_cursor_compare(main_cur, cur)); + + evas_textblock_cursor_line_set(cur, 1); + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + evas_textblock_cursor_char_coord_set(main_cur, x - 50, y); + fail_if(evas_textblock_cursor_compare(main_cur, cur)); + + evas_textblock_cursor_line_char_last(cur); + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + evas_textblock_cursor_char_coord_set(main_cur, x + 50, y); + fail_if(evas_textblock_cursor_compare(main_cur, cur)); + + /* Testing line geometry.*/ + { + Evas_Coord lx, ly, lw, lh; + Evas_Coord plx, ply, plw, plh; + evas_textblock_cursor_line_set(cur, 0); + evas_textblock_cursor_copy(cur, main_cur); + evas_textblock_cursor_line_char_last(main_cur); + evas_textblock_cursor_line_geometry_get(cur, &plx, &ply, &plw, &plh); + + while (evas_textblock_cursor_compare(cur, main_cur) <= 0) + { + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + fail_if(0 != + evas_textblock_cursor_line_geometry_get( + cur, &lx, &ly, &lw, &lh)); + fail_if((x < lx) || (x + w > lx + lw) || + (y < ly) || (y + h > ly + lh)); + fail_if((lx != plx) || (ly != ply) || (lw != plw) || (lh != plh)); + + plx = lx; + ply = ly; + plw = lw; + plh = lh; + evas_textblock_cursor_char_next(cur); + } + + evas_textblock_cursor_line_set(cur, 1); + evas_textblock_cursor_copy(cur, main_cur); + evas_textblock_cursor_line_char_last(main_cur); + evas_textblock_cursor_line_geometry_get(cur, &plx, &ply, &plw, &plh); + + while (evas_textblock_cursor_compare(cur, main_cur) <= 0) + { + evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); + fail_if(1 != + evas_textblock_cursor_line_geometry_get( + cur, &lx, &ly, &lw, &lh)); + fail_if((x < lx) || (x + w > lx + lw) || + (y < ly) || (y + h > ly + lh)); + fail_if((lx != plx) || (ly != ply) || (lw != plw) || (lh != plh)); + + plx = lx; + ply = ly; + plw = lw; + plh = lh; + evas_textblock_cursor_char_next(cur); + } + } + + /* FIXME: Add tests that check positions left of/right of rtl lines. */ END_TB_TEST(); } -- 2.7.4