27
#include "eina_suite.h"
29
EFL_START_TEST(str_simple)
33
const char *escape_ret = "\\ a\\\\x\\'";
36
fail_if(!eina_str_has_prefix("", ""));
38
fail_if(!eina_str_has_prefix("x", "x"));
39
fail_if(!eina_str_has_prefix("xab", "x"));
40
fail_if(!eina_str_has_prefix("xab", "xab"));
42
fail_if(eina_str_has_prefix("x", "xab"));
43
fail_if(eina_str_has_prefix("xab", "xyz"));
44
fail_if(eina_str_has_prefix("", "x"));
45
fail_if(eina_str_has_prefix("X", "x"));
46
fail_if(eina_str_has_prefix("xAb", "X"));
47
fail_if(eina_str_has_prefix("xAb", "xab"));
50
fail_if(!eina_str_has_suffix("", ""));
52
fail_if(!eina_str_has_suffix("x", "x"));
53
fail_if(!eina_str_has_suffix("abx", "x"));
54
fail_if(!eina_str_has_suffix("xab", "xab"));
56
fail_if(eina_str_has_suffix("x", "xab"));
57
fail_if(eina_str_has_suffix("xab", "xyz"));
58
fail_if(eina_str_has_suffix("", "x"));
59
fail_if(eina_str_has_suffix("X", "x"));
60
fail_if(eina_str_has_suffix("aBx", "X"));
61
fail_if(eina_str_has_suffix("xaB", "Xab"));
64
fail_if(!eina_str_has_extension("", ""));
66
fail_if(!eina_str_has_extension("x", "x"));
67
fail_if(!eina_str_has_extension("abx", "x"));
68
fail_if(!eina_str_has_extension("xab", "xab"));
69
fail_if(!eina_str_has_extension("x", "X"));
70
fail_if(!eina_str_has_extension("abx", "X"));
71
fail_if(!eina_str_has_extension("xab", "Xab"));
72
fail_if(!eina_str_has_extension("X", "X"));
73
fail_if(!eina_str_has_extension("aBx", "X"));
74
fail_if(!eina_str_has_extension("xaB", "Xab"));
76
fail_if(eina_str_has_extension("x", "xab"));
77
fail_if(eina_str_has_extension("xab", "xyz"));
78
fail_if(eina_str_has_extension("", "x"));
79
fail_if(eina_str_has_extension("x", "xAb"));
80
fail_if(eina_str_has_extension("xab", "xYz"));
81
fail_if(eina_str_has_extension("", "x"));
83
fail_if(eina_streq("xab", NULL));
84
fail_if(eina_streq(NULL, "xab"));
85
fail_if(eina_streq("x", "xab"));
86
fail_if(eina_streq("xab", "XAB"));
87
fail_if(eina_streq("x", "x "));
88
fail_if(!eina_streq("xab", "xab"));
90
fail_if(eina_strlen_bounded("abc", 4) != strlen("abc"));
91
fail_if(eina_strlen_bounded("abc", 2) != (size_t)-1);
93
str = malloc(sizeof(char) * 4);
95
eina_str_tolower(&str);
96
fail_if(strcmp(str, "bsd") != 0);
97
eina_str_toupper(&str);
98
fail_if(strcmp(str, "BSD") != 0);
101
str = malloc(sizeof(char) * 8);
102
strcpy(str, " a\\x'");
103
ret = eina_str_escape(str);
104
fail_if(strlen(ret) != strlen(escape_ret));
105
for (i = 0; i <= strlen(ret); i++)
106
fail_if(ret[i] != escape_ret[i]);
110
str = malloc(sizeof(char) * 4);
112
ret = eina_str_escape(str);
113
fail_if(!eina_streq(ret, "a\\t\\ "));
120
EFL_START_TEST(str_split)
123
unsigned int elements;
127
result = eina_str_split_full(NULL, ":", 1, &elements);
128
fail_if(result != NULL);
129
fail_if(elements != 0);
131
result = eina_str_split_full("nomatch", NULL, 1, &elements);
132
fail_if(result != NULL);
133
fail_if(elements != 0);
135
result = eina_str_split_full("match:match", ":", 1, &elements);
136
fail_if(result == NULL);
137
fail_if(elements != 1);
138
fail_if(strcmp(result[0], "match:match") != 0);
142
result = eina_str_split_full("match:match:nomatch:nomatch", ":", 3, &elements);
143
fail_if(result == NULL);
144
fail_if(elements != 3);
145
fail_if(strcmp(result[0], "match") != 0);
146
fail_if(strcmp(result[1], "match") != 0);
147
fail_if(strcmp(result[2], "nomatch:nomatch") != 0);
151
result = eina_str_split_full("nomatch", "", -1, &elements);
152
fail_if(result != NULL);
153
fail_if(elements != 0);
155
result = eina_str_split_full("nomatch", "x", -1, &elements);
156
fail_if(result == NULL);
157
fail_if(elements != 1);
158
fail_if(strcmp(result[0], "nomatch") != 0);
163
result = eina_str_split_full("nomatch", "xyz", -1, &elements);
164
fail_if(result == NULL);
165
fail_if(elements != 1);
166
fail_if(strcmp(result[0], "nomatch") != 0);
171
result = eina_str_split_full("match:match:match", ":", -1, &elements);
172
fail_if(result == NULL);
173
fail_if(elements != 3);
174
for (elements = 0; elements < 3 - 1; elements++)
175
fail_if(strcmp(result[elements], "match") != 0);
180
str = malloc(sizeof(char) * 1024);
182
for (elements = 0; elements < 300; elements++)
185
result = eina_str_split_full(str, ":", -1, &elements);
186
fail_if(result == NULL);
187
fail_if(elements != 301);
192
result = eina_str_split_full("a:b:c", ":", -1, &elements);
193
fail_if(result == NULL);
194
fail_if(elements != 3);
195
fail_if(strcmp(result[0], "a") != 0);
196
fail_if(strcmp(result[1], "b") != 0);
197
fail_if(strcmp(result[2], "c") != 0);
202
result = eina_str_split_full("a:b:", ":", -1, &elements);
203
fail_if(result == NULL);
204
fail_if(elements != 3);
205
fail_if(strcmp(result[0], "a") != 0);
206
fail_if(strcmp(result[1], "b") != 0);
207
fail_if(strcmp(result[2], "") != 0);
212
result = eina_str_split_full(":b:c", ":", -1, &elements);
213
fail_if(result == NULL);
214
fail_if(elements != 3);
215
fail_if(strcmp(result[0], "") != 0);
216
fail_if(strcmp(result[1], "b") != 0);
217
fail_if(strcmp(result[2], "c") != 0);
222
result = eina_str_split_full(":", ":", -1, &elements);
223
fail_if(result == NULL);
224
fail_if(elements != 2);
225
fail_if(strcmp(result[0], "") != 0);
226
fail_if(strcmp(result[1], "") != 0);
231
result = eina_str_split_full("a", "!!!!!!!!!", -1, &elements);
232
fail_if(result == NULL);
233
fail_if(elements != 1);
234
fail_if(strcmp(result[0], "a") != 0);
239
result = eina_str_split_full("aaba", "ab", -1, &elements);
240
fail_if(result == NULL);
241
fail_if(elements != 2);
242
fail_if(strcmp(result[0], "a") != 0);
243
fail_if(strcmp(result[1], "a") != 0);
251
EFL_START_TEST(str_lcat_lcpy)
255
size_t ds = (sizeof(dst) / sizeof(char));
260
ret = eina_strlcat(dst, "cat1", ds);
262
fail_if(strcmp(dst, "cat1") != 0);
264
ret = eina_strlcat(dst, NULL, ds);
266
fail_if(strcmp(dst, "cat1") != 0);
268
ret = eina_strlcat(dst, "cat234", ds);
269
fail_if(ret != (ds - 1 + 2));
270
fail_if(strcmp(dst, "cat1cat2") != 0);
272
ret = eina_strlcat(dst, "cat3", ds);
273
fail_if(ret != (ds - 1 + 4));
274
fail_if(strcmp(dst, "cat1cat2") != 0);
276
ret = eina_strlcat(dst, "cat3", ds - 1);
277
fail_if(ret != (ds - 1 + 4));
278
fail_if(strcmp(dst, "cat1cat2") != 0);
280
ret = eina_strlcpy(dst, "copycopy", ds);
282
fail_if(strcmp(dst, "copycopy") != 0);
284
ret = eina_strlcpy(dst, "copy2copy2", ds);
286
fail_if(strcmp(dst, "copy2cop") != 0);
291
EFL_START_TEST(str_join_len)
295
size_t ds = (sizeof(dst) / sizeof(char));
300
ret = eina_str_join_len(dst, ds, '#', "ab", 2, "cde", 3);
302
fail_if(strcmp(dst, "ab#cde") != 0);
304
ret = eina_str_join_len(dst, ds, '#', "abcdefghi", 9, "cde", 3);
306
fail_if(strcmp(dst, "abcdefgh") != 0);
308
ret = eina_str_join_len(dst, ds, '#', "abcdefgh", 8, "cde", 3);
310
fail_if(strcmp(dst, "abcdefgh") != 0);
312
ret = eina_str_join_len(dst, ds, '#', "abcd", 4, "efgh", 4);
314
fail_if(strcmp(dst, "abcd#efg") != 0);
319
EFL_START_TEST(str_memdup)
326
unsigned char buf[7];
327
unsigned char *temp_buf;
334
t2 = (struct temp *)eina_memdup((unsigned char *)&t1, sizeof(struct temp), EINA_TRUE);
335
fail_if(t2->i != t1.i);
336
fail_if(strcmp(t2->s,t1.s) != 0);
337
fail_if(!EINA_FLT_EQ(t2->d, t1.d));
340
memcpy(buf, "aaabbb", 6);
341
temp_buf = eina_memdup(buf, 6, EINA_TRUE);
342
fail_if(strcmp((char *) temp_buf, "aaabbb") != 0);
348
EFL_START_TEST(str_strftime)
354
curr_time = time(NULL);
355
info = localtime(&curr_time);
357
buf = eina_strftime("%I:%M%p", info);
358
fail_if(buf == NULL);
365
EFL_START_TEST(str_convert)
367
char *utf8 = "\xc3\xa9\xc3\xa1\xc3\xba\xc3\xad\xc3\xa8\xc3\xa0\xc3\xb9\xc3\xac\xc3\xab\xc3\xa4\xc3\xbc\xc3\xaf";
368
char *utf16 = "\xe9\x0\xe1\x0\xfa\x0\xed\x0\xe8\x0\xe0\x0\xf9\x0\xec\x0\xeb\x0\xe4\x0\xfc\x0\xef\x0";
374
ret = eina_str_convert("UTF-8", "UTF-16LE", utf8);
375
fail_if(ret == NULL);
377
fail_if(ret[i] != utf16[i]);
381
ret = eina_str_convert_len("UTF-8", "UTF-16LE", utf8, 24, &ret_sz);
382
fail_if(ret == NULL);
383
fail_if(ret_sz != 24);
385
fail_if(ret[i] != utf16[i]);
393
eina_test_str(TCase *tc)
395
tcase_add_test(tc, str_simple);
396
tcase_add_test(tc, str_split);
397
tcase_add_test(tc, str_lcat_lcpy);
398
tcase_add_test(tc, str_join_len);
399
tcase_add_test(tc, str_memdup);
400
tcase_add_test(tc, str_strftime);
402
tcase_add_test(tc, str_convert);