diff options
author | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
commit | dd7595a3475407a7fa96a97393bae8c5220e8762 (patch) | |
tree | e341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/evas/src/tests/evas_test_text.c | |
parent | Add the skeleton. (diff) | |
download | SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2 SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz |
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to 'libraries/evas/src/tests/evas_test_text.c')
-rw-r--r-- | libraries/evas/src/tests/evas_test_text.c | 493 |
1 files changed, 493 insertions, 0 deletions
diff --git a/libraries/evas/src/tests/evas_test_text.c b/libraries/evas/src/tests/evas_test_text.c new file mode 100644 index 0000000..f87ee79 --- /dev/null +++ b/libraries/evas/src/tests/evas_test_text.c | |||
@@ -0,0 +1,493 @@ | |||
1 | |||
2 | #ifdef HAVE_CONFIG_H | ||
3 | # include "config.h" | ||
4 | #endif | ||
5 | |||
6 | #include <stdio.h> | ||
7 | |||
8 | #include "evas_suite.h" | ||
9 | #include "Evas.h" | ||
10 | #include "evas_tests_helpers.h" | ||
11 | |||
12 | #define START_TEXT_TEST() \ | ||
13 | Evas *evas; \ | ||
14 | Evas_Object *to; \ | ||
15 | evas = EVAS_TEST_INIT_EVAS(); \ | ||
16 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO); \ | ||
17 | to = evas_object_text_add(evas); \ | ||
18 | do \ | ||
19 | { \ | ||
20 | } \ | ||
21 | while (0) | ||
22 | |||
23 | #define END_TEXT_TEST() \ | ||
24 | do \ | ||
25 | { \ | ||
26 | evas_object_del(to); \ | ||
27 | evas_free(evas); \ | ||
28 | evas_shutdown(); \ | ||
29 | } \ | ||
30 | while (0) | ||
31 | |||
32 | START_TEST(evas_text_simple) | ||
33 | { | ||
34 | START_TEXT_TEST(); | ||
35 | const char *buf = "Test - בדיקה"; | ||
36 | evas_object_text_text_set(to, buf); | ||
37 | fail_if(strcmp(evas_object_text_text_get(to), buf)); | ||
38 | END_TEXT_TEST(); | ||
39 | } | ||
40 | END_TEST | ||
41 | |||
42 | /* Various text related geometries */ | ||
43 | START_TEST(evas_text_geometries) | ||
44 | { | ||
45 | START_TEXT_TEST(); | ||
46 | const char *buf = "Tests"; | ||
47 | const char *font = "Sans"; | ||
48 | Evas_Font_Size size = 14; | ||
49 | Evas_Coord prev; | ||
50 | int i; | ||
51 | Evas_Coord x, y, w, h, px; | ||
52 | |||
53 | evas_object_text_text_set(to, buf); | ||
54 | |||
55 | /* All should be 0 without a font set */ | ||
56 | fail_if(evas_object_text_ascent_get(to) != 0); | ||
57 | fail_if(evas_object_text_descent_get(to) != 0); | ||
58 | fail_if(evas_object_text_max_ascent_get(to) != 0); | ||
59 | fail_if(evas_object_text_max_descent_get(to) != 0); | ||
60 | fail_if(evas_object_text_horiz_advance_get(to) != 0); | ||
61 | fail_if(evas_object_text_vert_advance_get(to) != 0); | ||
62 | |||
63 | evas_object_text_font_set(to, font, size); | ||
64 | |||
65 | /* Check that they are bigger than 0. */ | ||
66 | fail_if(evas_object_text_ascent_get(to) <= 0); | ||
67 | fail_if(evas_object_text_descent_get(to) <= 0); | ||
68 | fail_if(evas_object_text_max_ascent_get(to) <= 0); | ||
69 | fail_if(evas_object_text_max_descent_get(to) <= 0); | ||
70 | fail_if(evas_object_text_horiz_advance_get(to) <= 0); | ||
71 | fail_if(evas_object_text_vert_advance_get(to) <= 0); | ||
72 | |||
73 | /* Check that expanding the text does what we expect it */ | ||
74 | evas_object_text_text_set(to, "Test"); | ||
75 | prev = evas_object_text_ascent_get(to); | ||
76 | evas_object_text_text_set(to, "Testing"); | ||
77 | fail_if(evas_object_text_ascent_get(to) != prev); | ||
78 | |||
79 | evas_object_text_text_set(to, "Test"); | ||
80 | prev = evas_object_text_descent_get(to); | ||
81 | evas_object_text_text_set(to, "Testing"); | ||
82 | fail_if(evas_object_text_descent_get(to) != prev); | ||
83 | |||
84 | evas_object_text_text_set(to, "Test"); | ||
85 | prev = evas_object_text_max_ascent_get(to); | ||
86 | evas_object_text_text_set(to, "Testing"); | ||
87 | fail_if(evas_object_text_max_ascent_get(to) != prev); | ||
88 | |||
89 | evas_object_text_text_set(to, "Test"); | ||
90 | prev = evas_object_text_max_descent_get(to); | ||
91 | evas_object_text_text_set(to, "Testing"); | ||
92 | fail_if(evas_object_text_max_descent_get(to) != prev); | ||
93 | |||
94 | evas_object_text_text_set(to, "Test"); | ||
95 | prev = evas_object_text_horiz_advance_get(to); | ||
96 | evas_object_text_text_set(to, "Testing"); | ||
97 | fail_if(evas_object_text_horiz_advance_get(to) <= prev); | ||
98 | |||
99 | evas_object_text_text_set(to, "Test"); | ||
100 | prev = evas_object_text_vert_advance_get(to); | ||
101 | evas_object_text_text_set(to, "Testing"); | ||
102 | fail_if(evas_object_text_vert_advance_get(to) != prev); | ||
103 | |||
104 | /* Go through all the characters, making sure the geometries we get | ||
105 | * are in a monotonically increasing order and that all sizes are | ||
106 | * bigger than 0. */ | ||
107 | evas_object_text_text_set(to, "Testing..."); | ||
108 | x = 0; | ||
109 | px = -100; | ||
110 | for (i = 0 ; i < eina_unicode_utf8_get_len("Testing...") ; i++) | ||
111 | { | ||
112 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
113 | fail_if(x <= px); | ||
114 | px = x; | ||
115 | /* Get back the coords */ | ||
116 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
117 | y + (h / 2), &x, &y, &w, &h)); | ||
118 | } | ||
119 | |||
120 | /* Last up to pos */ | ||
121 | Evas_Coord adv; | ||
122 | int pos, prev_pos; | ||
123 | evas_object_text_text_set(to, "Test - 유니코드"); | ||
124 | adv = evas_object_text_horiz_advance_get(to); | ||
125 | pos = prev_pos = 0; | ||
126 | for (x = 0 ; x <= (adv - 1) ; x++) | ||
127 | { | ||
128 | pos = evas_object_text_last_up_to_pos(to, x, 0); | ||
129 | fail_if(pos < prev_pos); | ||
130 | prev_pos = pos; | ||
131 | } | ||
132 | pos = evas_object_text_last_up_to_pos(to, x, 0); | ||
133 | fail_if(pos != -1); | ||
134 | pos = evas_object_text_last_up_to_pos(to, -50, 0); | ||
135 | fail_if(pos != -1); | ||
136 | |||
137 | END_TEXT_TEST(); | ||
138 | } | ||
139 | END_TEST | ||
140 | |||
141 | /* Various evas stuff, such as scale */ | ||
142 | START_TEST(evas_text_evas) | ||
143 | { | ||
144 | Evas_Coord w, h, bw, bh; | ||
145 | START_TEXT_TEST(); | ||
146 | const char *buf = "Test - בדיקה"; | ||
147 | const char *font = "Sans"; | ||
148 | Evas_Font_Size size = 14; | ||
149 | |||
150 | evas_object_text_font_set(to, font, size); | ||
151 | evas_object_text_text_set(to, buf); | ||
152 | evas_object_geometry_get(to, NULL, NULL, &bw, &bh); | ||
153 | evas_object_scale_set(to, 3.0); | ||
154 | evas_object_geometry_get(to, NULL, NULL, &w, &h); | ||
155 | fail_if((w <= bw) || (h <= bh)); | ||
156 | |||
157 | evas_object_scale_set(to, 0.5); | ||
158 | evas_object_geometry_get(to, NULL, NULL, &w, &h); | ||
159 | fail_if((w >= bw) || (h >= bh)); | ||
160 | |||
161 | END_TEXT_TEST(); | ||
162 | } | ||
163 | END_TEST | ||
164 | |||
165 | /* Tests for functions that are in evas_object_text.c but | ||
166 | * don't really have anything to do with it. */ | ||
167 | START_TEST(evas_text_unrelated) | ||
168 | { | ||
169 | START_TEXT_TEST(); | ||
170 | const char *buf = "נסיון"; | ||
171 | int pos; | ||
172 | Eina_Unicode value; | ||
173 | /* Actually, they are tested in eina, just doing it for completeness. */ | ||
174 | fail_if(evas_string_char_len_get(buf) != 5); | ||
175 | |||
176 | pos = 0; | ||
177 | fail_if(2 != evas_string_char_next_get(buf, pos, &value)); | ||
178 | fail_if(value != L'נ'); | ||
179 | |||
180 | pos = 2; | ||
181 | fail_if(0 != evas_string_char_prev_get(buf, pos, &value)); | ||
182 | fail_if(value != L'ס'); | ||
183 | |||
184 | END_TEXT_TEST(); | ||
185 | } | ||
186 | END_TEST | ||
187 | |||
188 | #define _CHECK_SET_GET(x) \ | ||
189 | do \ | ||
190 | { \ | ||
191 | Evas_Coord r, g, b, a; \ | ||
192 | evas_object_text_##x##_set(to, 100, 150, 125, 12); \ | ||
193 | evas_object_text_##x##_get(to, &r, &g, &b, &a); \ | ||
194 | fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \ | ||
195 | /* Set to the same value */ \ | ||
196 | evas_object_text_##x##_set(to, 100, 150, 125, 12); \ | ||
197 | evas_object_text_##x##_get(to, &r, &g, &b, &a); \ | ||
198 | fail_if((r != 100) || (g != 150) || (b != 125) || (a != 12)); \ | ||
199 | } \ | ||
200 | while (0) | ||
201 | |||
202 | START_TEST(evas_text_set_get) | ||
203 | { | ||
204 | START_TEXT_TEST(); | ||
205 | const char *buf = "Test - בדיקה"; | ||
206 | /* Text */ | ||
207 | evas_object_text_text_set(to, buf); | ||
208 | fail_if(strcmp(evas_object_text_text_get(to), buf)); | ||
209 | |||
210 | /* Colors */ | ||
211 | _CHECK_SET_GET(shadow_color); | ||
212 | _CHECK_SET_GET(glow_color); | ||
213 | _CHECK_SET_GET(glow2_color); | ||
214 | _CHECK_SET_GET(outline_color); | ||
215 | |||
216 | /* Font and size */ | ||
217 | const char *font = "Sans"; | ||
218 | Evas_Font_Size size = 14; | ||
219 | evas_object_text_font_set(to, font, size); | ||
220 | font = NULL; | ||
221 | size = 0; | ||
222 | evas_object_text_font_get(to, &font, &size); | ||
223 | fail_if(strcmp(font, "Sans")); | ||
224 | fail_if(size != 14); | ||
225 | evas_object_text_font_set(to, font, size); | ||
226 | font = NULL; | ||
227 | size = 0; | ||
228 | evas_object_text_font_get(to, &font, &size); | ||
229 | fail_if(strcmp(font, "Sans")); | ||
230 | fail_if(size != 14); | ||
231 | |||
232 | font = "NON-EXISTING-FONT"; | ||
233 | size = 14; | ||
234 | evas_object_text_font_set(to, font, size); | ||
235 | font = NULL; | ||
236 | size = 0; | ||
237 | evas_object_text_font_get(to, &font, &size); | ||
238 | fail_if(strcmp(font, "NON-EXISTING-FONT")); | ||
239 | |||
240 | font = "Serif"; | ||
241 | size = 2; | ||
242 | evas_object_text_font_set(to, font, size); | ||
243 | font = NULL; | ||
244 | size = 0; | ||
245 | evas_object_text_font_get(to, &font, &size); | ||
246 | fail_if(strcmp(font, "Serif")); | ||
247 | fail_if(size != 2); | ||
248 | |||
249 | evas_object_text_font_source_set(to, "/usr/share/fonts/Sans.ttf"); | ||
250 | font = evas_object_text_font_source_get(to); | ||
251 | fail_if(strcmp(font, "/usr/share/fonts/Sans.ttf")); | ||
252 | evas_object_text_font_source_set(to, "/usr/share/fonts/Sans.ttf"); | ||
253 | font = evas_object_text_font_source_get(to); | ||
254 | fail_if(strcmp(font, "/usr/share/fonts/Sans.ttf")); | ||
255 | |||
256 | /* BiDi Delimiters */ | ||
257 | evas_object_text_bidi_delimiters_set(to, ",.|"); | ||
258 | fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",.|")); | ||
259 | evas_object_text_bidi_delimiters_set(to, ",|"); | ||
260 | fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",|")); | ||
261 | evas_object_text_bidi_delimiters_set(to, NULL); | ||
262 | fail_if(evas_object_text_bidi_delimiters_get(to)); | ||
263 | evas_object_text_bidi_delimiters_set(to, ",|"); | ||
264 | fail_if(strcmp(evas_object_text_bidi_delimiters_get(to), ",|")); | ||
265 | |||
266 | /* Style */ | ||
267 | evas_object_text_text_set(to, ""); | ||
268 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_SHADOW); | ||
269 | fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_SHADOW); | ||
270 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE); | ||
271 | fail_if(evas_object_text_style_get(to) != EVAS_TEXT_STYLE_OUTLINE); | ||
272 | |||
273 | /* Rehinting */ | ||
274 | evas_object_text_text_set(to, "Bla"); | ||
275 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_NONE); | ||
276 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_AUTO); | ||
277 | evas_font_hinting_set(evas, EVAS_FONT_HINTING_BYTECODE); | ||
278 | |||
279 | /* Direction of an empty text should be NEUTRAL */ | ||
280 | evas_object_text_text_set(to, ""); | ||
281 | fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_NEUTRAL); | ||
282 | |||
283 | END_TEXT_TEST(); | ||
284 | } | ||
285 | END_TEST | ||
286 | |||
287 | START_TEST(evas_text_style) | ||
288 | { | ||
289 | Evas_Coord l, r, t, b; | ||
290 | START_TEXT_TEST(); | ||
291 | const char *buf = "Test"; | ||
292 | evas_object_text_text_set(to, buf); | ||
293 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_PLAIN); | ||
294 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
295 | fail_if((l != 0) || (r != 0) || (t != 0) || (b != 0)); | ||
296 | |||
297 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_SHADOW); | ||
298 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
299 | fail_if((l != 0) || (r != 1) || (t != 0) || (b != 1)); | ||
300 | |||
301 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE); | ||
302 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
303 | fail_if((l != 1) || (r != 1) || (t != 1) || (b != 1)); | ||
304 | |||
305 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_SOFT_OUTLINE); | ||
306 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
307 | fail_if((l != 2) || (r != 2) || (t != 2) || (b != 2)); | ||
308 | |||
309 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_GLOW); | ||
310 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
311 | fail_if((l != 2) || (r != 2) || (t != 2) || (b != 2)); | ||
312 | |||
313 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE_SHADOW); | ||
314 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
315 | fail_if((l != 1) || (r != 2) || (t != 1) || (b != 2)); | ||
316 | |||
317 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_FAR_SHADOW); | ||
318 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
319 | fail_if((l != 1) || (r != 2) || (t != 1) || (b != 2)); | ||
320 | |||
321 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW); | ||
322 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
323 | fail_if((l != 1) || (r != 3) || (t != 1) || (b != 3)); | ||
324 | |||
325 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_SOFT_SHADOW); | ||
326 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
327 | fail_if((l != 1) || (r != 3) || (t != 1) || (b != 3)); | ||
328 | |||
329 | evas_object_text_style_set(to, EVAS_TEXT_STYLE_FAR_SOFT_SHADOW); | ||
330 | evas_object_text_style_pad_get(to, &l, &r, &t, &b); | ||
331 | fail_if((l != 0) || (r != 4) || (t != 0) || (b != 4)); | ||
332 | |||
333 | fail_if(strcmp(evas_object_text_text_get(to), buf)); | ||
334 | END_TEXT_TEST(); | ||
335 | } | ||
336 | END_TEST | ||
337 | |||
338 | #ifdef HAVE_FRIBIDI | ||
339 | START_TEST(evas_text_bidi) | ||
340 | { | ||
341 | START_TEXT_TEST(); | ||
342 | const char *buf = "Test - בדיקה"; | ||
343 | int i; | ||
344 | Evas_Coord x, y, w, h, px; | ||
345 | const char *font = "Sans"; | ||
346 | Evas_Font_Size size = 14; | ||
347 | |||
348 | evas_object_text_font_set(to, font, size); | ||
349 | |||
350 | evas_object_text_text_set(to, buf); | ||
351 | fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_LTR); | ||
352 | evas_object_text_text_set(to, "בדיקה"); | ||
353 | fail_if(evas_object_text_direction_get(to) != EVAS_BIDI_DIRECTION_RTL); | ||
354 | |||
355 | /* With RTL text coords should be monotontically decreasing. */ | ||
356 | evas_object_text_text_set(to, "נסיון..."); | ||
357 | x = 0; | ||
358 | px = 200; | ||
359 | for (i = 0 ; i < eina_unicode_utf8_get_len("נסיון...") ; i++) | ||
360 | { | ||
361 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
362 | fail_if(x >= px); | ||
363 | px = x; | ||
364 | /* Get back the coords */ | ||
365 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
366 | y + (h / 2), &x, &y, &w, &h)); | ||
367 | } | ||
368 | |||
369 | /* Bidi text is a bit more complex */ | ||
370 | evas_object_text_text_set(to, "Test - נסיון..."); | ||
371 | x = 0; | ||
372 | px = -100; | ||
373 | for (i = 0 ; i < eina_unicode_utf8_get_len("Test - ") ; i++) | ||
374 | { | ||
375 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
376 | fail_if(x <= px); | ||
377 | px = x; | ||
378 | /* Get back the coords */ | ||
379 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
380 | y + (h / 2), &x, &y, &w, &h)); | ||
381 | } | ||
382 | |||
383 | /* First rtl char requires more specific handling */ | ||
384 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
385 | fail_if(x <= px); | ||
386 | px = x; | ||
387 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
388 | y + (h / 2), &x, &y, &w, &h)); | ||
389 | i++; | ||
390 | for ( ; i < eina_unicode_utf8_get_len("Test - נסיון") ; i++) | ||
391 | { | ||
392 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
393 | fail_if(x >= px); | ||
394 | px = x; | ||
395 | /* Get back the coords */ | ||
396 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
397 | y + (h / 2), &x, &y, &w, &h)); | ||
398 | } | ||
399 | /* First ltr char requires more specific handling */ | ||
400 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
401 | fail_if(x <= px); | ||
402 | px = x; | ||
403 | i++; | ||
404 | for ( ; i < eina_unicode_utf8_get_len("Test - נסיון...") ; i++) | ||
405 | { | ||
406 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
407 | fail_if(x <= px); | ||
408 | px = x; | ||
409 | /* Get back the coords */ | ||
410 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
411 | y + (h / 2), &x, &y, &w, &h)); | ||
412 | } | ||
413 | |||
414 | /* And with an rtl text */ | ||
415 | evas_object_text_text_set(to, "נסיון - test..."); | ||
416 | x = 0; | ||
417 | px = 100; | ||
418 | for (i = 0 ; i < eina_unicode_utf8_get_len("נסיון - ") ; i++) | ||
419 | { | ||
420 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
421 | fail_if(x >= px); | ||
422 | px = x; | ||
423 | /* Get back the coords */ | ||
424 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
425 | y + (h / 2), &x, &y, &w, &h)); | ||
426 | } | ||
427 | |||
428 | /* First ltr char requires more specific handling */ | ||
429 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
430 | fail_if(x >= px); | ||
431 | px = x; | ||
432 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
433 | y + (h / 2), &x, &y, &w, &h)); | ||
434 | i++; | ||
435 | for ( ; i < eina_unicode_utf8_get_len("נסיון - test") ; i++) | ||
436 | { | ||
437 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
438 | fail_if(x <= px); | ||
439 | px = x; | ||
440 | /* Get back the coords */ | ||
441 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
442 | y + (h / 2), &x, &y, &w, &h)); | ||
443 | } | ||
444 | /* First rtl char requires more specific handling */ | ||
445 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
446 | fail_if(x >= px); | ||
447 | px = x; | ||
448 | i++; | ||
449 | for ( ; i < eina_unicode_utf8_get_len("נסיון - test...") ; i++) | ||
450 | { | ||
451 | fail_if(!evas_object_text_char_pos_get(to, i, &x, &y, &w, &h)); | ||
452 | fail_if(x >= px); | ||
453 | px = x; | ||
454 | /* Get back the coords */ | ||
455 | fail_if(i != evas_object_text_char_coords_get(to, x + (w / 2), | ||
456 | y + (h / 2), &x, &y, &w, &h)); | ||
457 | } | ||
458 | |||
459 | /* And some last up to pos tests */ | ||
460 | Evas_Coord adv; | ||
461 | int pos, prev_pos; | ||
462 | evas_object_text_text_set(to, "Test - נסיון..."); | ||
463 | adv = evas_object_text_horiz_advance_get(to); | ||
464 | pos = prev_pos = 0; | ||
465 | for (x = 0 ; x <= (adv - 1) ; x++) | ||
466 | { | ||
467 | pos = evas_object_text_last_up_to_pos(to, x, 0); | ||
468 | fail_if(pos < prev_pos); | ||
469 | prev_pos = pos; | ||
470 | } | ||
471 | pos = evas_object_text_last_up_to_pos(to, x, 0); | ||
472 | fail_if(pos != -1); | ||
473 | pos = evas_object_text_last_up_to_pos(to, -50, 0); | ||
474 | fail_if(pos != -1); | ||
475 | |||
476 | END_TEXT_TEST(); | ||
477 | } | ||
478 | END_TEST | ||
479 | #endif | ||
480 | |||
481 | void evas_test_text(TCase *tc) | ||
482 | { | ||
483 | tcase_add_test(tc, evas_text_simple); | ||
484 | tcase_add_test(tc, evas_text_style); | ||
485 | tcase_add_test(tc, evas_text_set_get); | ||
486 | tcase_add_test(tc, evas_text_geometries); | ||
487 | tcase_add_test(tc, evas_text_evas); | ||
488 | #ifdef HAVE_FRIBIDI | ||
489 | tcase_add_test(tc, evas_text_bidi); | ||
490 | #endif | ||
491 | |||
492 | tcase_add_test(tc, evas_text_unrelated); | ||
493 | } | ||