Evas tests: Added various text object tests.

SVN revision: 61280
This commit is contained in:
Tom Hacohen 2011-07-12 11:40:28 +00:00
parent a6d0247724
commit 9871789a5e
1 changed files with 127 additions and 0 deletions

View File

@ -39,6 +39,108 @@ START_TEST(evas_text_simple)
}
END_TEST
/* Various text related geometries */
START_TEST(evas_text_geometries)
{
START_TEXT_TEST();
const char *buf = "Tests";
const char *font = "Sans";
Evas_Font_Size size = 14;
Evas_Coord prev;
evas_object_text_font_set(to, font, size);
evas_object_text_text_set(to, buf);
/* Check that they are bigger than 0. */
fail_if(evas_object_text_ascent_get(to) <= 0);
fail_if(evas_object_text_descent_get(to) <= 0);
fail_if(evas_object_text_max_ascent_get(to) <= 0);
fail_if(evas_object_text_max_descent_get(to) <= 0);
fail_if(evas_object_text_horiz_advance_get(to) <= 0);
fail_if(evas_object_text_vert_advance_get(to) <= 0);
/* Check that expanding the text does what we expect it */
evas_object_text_text_set(to, "Test");
prev = evas_object_text_ascent_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_ascent_get(to) != prev);
evas_object_text_text_set(to, "Test");
prev = evas_object_text_descent_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_descent_get(to) != prev);
evas_object_text_text_set(to, "Test");
prev = evas_object_text_max_ascent_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_max_ascent_get(to) != prev);
evas_object_text_text_set(to, "Test");
prev = evas_object_text_max_descent_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_max_descent_get(to) != prev);
evas_object_text_text_set(to, "Test");
prev = evas_object_text_horiz_advance_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_horiz_advance_get(to) <= prev);
evas_object_text_text_set(to, "Test");
prev = evas_object_text_vert_advance_get(to);
evas_object_text_text_set(to, "Testing");
fail_if(evas_object_text_vert_advance_get(to) != prev);
END_TEXT_TEST();
}
END_TEST
/* Various evas stuff, such as scale */
START_TEST(evas_text_evas)
{
Evas_Coord w, h, bw, bh;
START_TEXT_TEST();
const char *buf = "Test - בדיקה";
const char *font = "Sans";
Evas_Font_Size size = 14;
evas_object_text_font_set(to, font, size);
evas_object_text_text_set(to, buf);
evas_object_geometry_get(to, NULL, NULL, &bw, &bh);
evas_object_scale_set(to, 3.0);
evas_object_geometry_get(to, NULL, NULL, &w, &h);
fail_if((w <= bw) || (h <= bh));
evas_object_scale_set(to, 0.5);
evas_object_geometry_get(to, NULL, NULL, &w, &h);
fail_if((w >= bw) || (h >= bh));
END_TEXT_TEST();
}
END_TEST
/* Tests for functions that are in evas_object_text.c but
* don't really have anything to do with it. */
START_TEST(evas_text_unrelated)
{
START_TEXT_TEST();
const char *buf = "נסיון";
int pos;
Eina_Unicode value;
/* Actually, they are tested in eina, just doing it for completeness. */
fail_if(evas_string_char_len_get(buf) != 5);
pos = 0;
fail_if(2 != evas_string_char_next_get(buf, pos, &value));
fail_if(value != L'נ');
pos = 2;
fail_if(0 != evas_string_char_prev_get(buf, pos, &value));
fail_if(value != L'ס');
END_TEXT_TEST();
}
END_TEST
#define _CHECK_SET_GET(x) \
do \
{ \
@ -46,6 +148,10 @@ do \
evas_object_text_##x##_set(to, 100, 150, 125, 12); \
evas_object_text_##x##_get(to, &r, &g, &b, &a); \
fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \
/* Set to the same value */ \
evas_object_text_##x##_set(to, 100, 150, 125, 12); \
evas_object_text_##x##_get(to, &r, &g, &b, &a); \
fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \
} \
while (0)
@ -95,6 +201,20 @@ START_TEST(evas_text_set_get)
fail_if(evas_object_text_bidi_delimiters_get(to));
evas_object_text_bidi_delimiters_set(to, ",|");
fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",|"));
/* Style */
evas_object_text_text_set(to, "");
evas_object_text_style_set(to, EVAS_TEXT_STYLE_SHADOW);
fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_SHADOW);
evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE);
fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_OUTLINE);
/* Rehinting */
evas_object_text_text_set(to, "Bla");
evas_font_hinting_set(evas, EVAS_FONT_HINTING_NONE);
evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO);
evas_font_hinting_set(evas, EVAS_FONT_HINTING_BYTECODE);
END_TEXT_TEST();
}
END_TEST
@ -159,6 +279,9 @@ START_TEST(evas_text_bidi)
fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_LTR);
evas_object_text_text_set(to, "בדיקה");
fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_RTL);
/* FIXME: Add tests that check visual position */
END_TEXT_TEST();
}
END_TEST
@ -169,7 +292,11 @@ void evas_test_text(TCase *tc)
tcase_add_test(tc, evas_text_simple);
tcase_add_test(tc, evas_text_style);
tcase_add_test(tc, evas_text_set_get);
tcase_add_test(tc, evas_text_geometries);
tcase_add_test(tc, evas_text_evas);
#ifdef HAVE_FRIBIDI
tcase_add_test(tc, evas_text_bidi);
#endif
tcase_add_test(tc, evas_text_unrelated);
}