Evas tests: Added a bit of line geometry tests.

SVN revision: 61343
This commit is contained in:
Tom Hacohen 2011-07-13 15:16:34 +00:00
parent e03f8274dc
commit edf4d4ee86
1 changed files with 83 additions and 13 deletions

View File

@ -62,25 +62,28 @@ END_TEST
#define _CHECK_CURSOR_COORDS() \ #define _CHECK_CURSOR_COORDS() \
do \ do \
{ \ { \
Evas_Coord x, y, w, h; \ Evas_Coord cx, cy, cw, ch; \
int ret; \ int ret; \
ret = evas_textblock_cursor_geometry_get(cur, &x, &y, &w, &h, NULL, \ ret = evas_textblock_cursor_geometry_get(cur, &cx, &cy, &cw, &ch, \
EVAS_TEXTBLOCK_CURSOR_UNDER); \ NULL, EVAS_TEXTBLOCK_CURSOR_UNDER); \
fail_if(ret == -1); \ fail_if(ret == -1); \
ret = evas_textblock_cursor_geometry_get(cur, &x, &y, &w, &h, NULL, \ ret = evas_textblock_cursor_geometry_get(cur, &cx, &cy, &cw, &ch, \
EVAS_TEXTBLOCK_CURSOR_BEFORE); \ NULL, EVAS_TEXTBLOCK_CURSOR_BEFORE); \
fail_if(ret == -1); \ 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); \ 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); \ 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); \ fail_if(ret == -1); \
} \ } \
while (0) while (0)
START_TEST(evas_textblock_cursor) START_TEST(evas_textblock_cursor)
{ {
START_TB_TEST(); START_TB_TEST();
Evas_Coord x, y, w, h;
size_t i, len; size_t i, len;
Evas_Coord nw, nh; Evas_Coord nw, nh;
const char *buf = "This is a<br> test.<ps>Lets see if this works.<ps>עוד פסקה."; const char *buf = "This is a<br> test.<ps>Lets see if this works.<ps>עוד פסקה.";
@ -352,7 +355,6 @@ START_TEST(evas_textblock_cursor)
/* Check that pen geometry and getting char at coord are in sync. */ /* Check that pen geometry and getting char at coord are in sync. */
do do
{ {
Evas_Coord x, y, w, h;
int cur_pos; int cur_pos;
/* Check if it's the last char, if it is, break, otherwise, go back /* 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); cur_pos = evas_textblock_cursor_pos_get(cur);
evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h); evas_textblock_cursor_pen_geometry_get(cur, &x, &y, &w, &h);
evas_textblock_cursor_char_coord_set(cur, x + (w / 2), evas_textblock_cursor_char_coord_set(cur, x + (w / 2), y + (h / 2));
y + (h / 2));
fail_if(cur_pos != evas_textblock_cursor_pos_get(cur)); fail_if(cur_pos != evas_textblock_cursor_pos_get(cur));
} }
while (evas_textblock_cursor_char_next(cur)); while (evas_textblock_cursor_char_next(cur));
@ -386,8 +387,77 @@ START_TEST(evas_textblock_cursor)
evas_textblock_cursor_paragraph_last(main_cur); evas_textblock_cursor_paragraph_last(main_cur);
fail_if(evas_textblock_cursor_compare(cur, main_cur)); fail_if(evas_textblock_cursor_compare(cur, main_cur));
/* FIXME: Add tests that check positions left of/right of right/left /* Try positions beyond the left/right limits of lines. */
* aligned paragraphs + with rtl strings. */ 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(); END_TB_TEST();
} }